Re: [Netmod-ver-dt] YANG Module Semver doc updates

Ebben Aries <exa@juniper.net> Thu, 17 January 2019 06:12 UTC

Return-Path: <exa@juniper.net>
X-Original-To: netmod-ver-dt@ietfa.amsl.com
Delivered-To: netmod-ver-dt@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 92C28126CB6 for <netmod-ver-dt@ietfa.amsl.com>; Wed, 16 Jan 2019 22:12:02 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -5.254
X-Spam-Level:
X-Spam-Status: No, score=-5.254 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_HIGH=-4.553, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, KHOP_DYNAMIC=2, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=juniper.net
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id HsaHFOyX8qk1 for <netmod-ver-dt@ietfa.amsl.com>; Wed, 16 Jan 2019 22:11:55 -0800 (PST)
Received: from mx0b-00273201.pphosted.com (mx0b-00273201.pphosted.com [67.231.152.164]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 77E8E130DBE for <netmod-ver-dt@ietf.org>; Wed, 16 Jan 2019 22:11:55 -0800 (PST)
Received: from pps.filterd (m0108162.ppops.net [127.0.0.1]) by mx0b-00273201.pphosted.com (8.16.0.27/8.16.0.27) with SMTP id x0H61WDK003440; Wed, 16 Jan 2019 22:11:53 -0800
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=juniper.net; h=date : from : to : cc : subject : message-id : references : mime-version : content-type : content-transfer-encoding : in-reply-to; s=PPS1017; bh=2T+uvnIa7BO2cRil63WhhnFxkWuube53+uMfgVs7/qg=; b=Bv1p0xDGL7vdJykFcXWcnnStHeFLBrNJrGALTUOBIbn08LfP/82dYomB/cbA9izyw7GH yu3NdnbAJOdMJAXzzZWREDD814qsn8RinZPDLOSLbpIm12FqK7gLJ/FGx8vCLyZdLVmN i2OaPfnnHApKkKWAqcd4V3B1PWoo8xPig9olFj6kPo2f4yDIAHt+17u7GfK+9yt2kVCD AtFurRxyLbH93MCfNqTxMRBd/y0iyQu9pG1j5YTgnCUbkaSZ7Auo+4k5tlaya54FXhtQ 4g3NnLZBccrnFYQRPWnO9ZLCzwQp7WUPjHHVZIp/3uBoIR1s5sr432ZGsZp/8z/aPJLf pQ==
Received: from nam01-by2-obe.outbound.protection.outlook.com (mail-by2nam01lp2054.outbound.protection.outlook.com [104.47.34.54]) by mx0b-00273201.pphosted.com with ESMTP id 2q2fkp0b8f-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Wed, 16 Jan 2019 22:11:53 -0800
Received: from SN6PR05CA0008.namprd05.prod.outlook.com (2603:10b6:805:de::21) by DM2PR05MB493.namprd05.prod.outlook.com (2a01:111:e400:242e::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.1537.18; Thu, 17 Jan 2019 06:11:49 +0000
Received: from DM3NAM05FT050.eop-nam05.prod.protection.outlook.com (2a01:111:f400:7e51::207) by SN6PR05CA0008.outlook.office365.com (2603:10b6:805:de::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1558.8 via Frontend Transport; Thu, 17 Jan 2019 06:11:48 +0000
Received-SPF: PermError (protection.outlook.com: domain of juniper.net used an invalid SPF mechanism)
Received: from P-EXFEND-EQX-01.jnpr.net (66.129.239.12) by DM3NAM05FT050.mail.protection.outlook.com (10.152.98.164) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.1537.10 via Frontend Transport; Thu, 17 Jan 2019 06:11:48 +0000
Received: from P-EXBEND-EQX-02.jnpr.net (10.104.8.53) by P-EXFEND-EQX-01.jnpr.net (10.104.8.54) with Microsoft SMTP Server (TLS) id 15.0.1367.3; Wed, 16 Jan 2019 22:11:47 -0800
Received: from smtp.juniper.net (10.104.20.6) by P-EXBEND-EQX-02.jnpr.net (10.104.8.53) with Microsoft SMTP Server (TLS) id 15.0.1367.3 via Frontend Transport; Wed, 16 Jan 2019 22:11:47 -0800
Date: Wed, 16 Jan 2019 23:11:46 -0700
From: Ebben Aries <exa@juniper.net>
To: Robert Wilton <rwilton@cisco.com>
CC: "netmod-ver-dt@ietf.org" <netmod-ver-dt@ietf.org>
Message-ID: <20190117061146.5aiwufreaemu5pwz@smtp.juniper.net>
References: <b6d6c60e-4f9f-47f6-69cc-e8961a800227@cisco.com>
MIME-Version: 1.0
Content-Type: text/plain; charset="iso-8859-1"
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <b6d6c60e-4f9f-47f6-69cc-e8961a800227@cisco.com>
X-EXCLAIMER-MD-CONFIG: e3cb0ff2-54e7-4646-8a04-0dae4ac7b136
X-EOPAttributedMessage: 0
X-MS-Office365-Filtering-HT: Tenant
X-Forefront-Antispam-Report: CIP:66.129.239.12; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10019020)(346002)(396003)(376002)(39860400002)(136003)(2980300002)(448002)(51444003)(15374003)(199004)(189003)(478600001)(6916009)(8676002)(325944009)(966005)(6306002)(561944003)(50466002)(69596002)(7696005)(85326001)(53416004)(6346003)(316002)(55016002)(76176011)(47776003)(186003)(53946003)(5660300001)(23756003)(53936002)(4326008)(126002)(6246003)(486006)(86362001)(4001150100001)(106466001)(81166006)(15650500001)(2420400007)(97736004)(2870700001)(1076003)(5024004)(26005)(30864003)(11346002)(14444005)(446003)(68736007)(356004)(7110500001)(336012)(476003)(305945005)(77096007)(66574012)(229853002)(81156014)(8936002)(2906002)(21314003)(579004)(559001); DIR:OUT; SFP:1102; SCL:1; SRVR:DM2PR05MB493; H:P-EXFEND-EQX-01.jnpr.net; FPR:; SPF:PermError; LANG:en; PTR:InfoDomainNonexistent; A:1; MX:1;
X-Microsoft-Exchange-Diagnostics: 1; DM3NAM05FT050; 1:hbPBO2fwoq/9hghC5CYexGXP7ff4asQaBC/6IvDB1/lBJncV6HXYpyaSM+4R9wD6+kBPh2I232TI3cww3Ubq6+k4GG/HmDiMaRowCfKqwz8G7+hKUi0P0iwNsW8I0e3Iwglo2ZOiKLYUSIzAkygFC3A0xjG3AjKeq58hPltI7fk=
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id: 48cac61d-2b81-425e-433a-08d67c42aa4c
X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(5600109)(711020)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(2017052603328)(7153060); SRVR:DM2PR05MB493;
X-Microsoft-Exchange-Diagnostics: 1; DM2PR05MB493; 3:jJXyPIEuaOJLzo5QXhm6VLt9fMdnk04iXHktfWCyUCUPFYQWkaE3vzM+F03tOh1+V6dNS74G5JO10x+vqRgNE7a74jCrQ3TUzykwCkH/NuOqEM6zoT1uUBhehoMg+37EUfWmVZG7+nOe9xyEameRqzmRmJrZyTWyvTPm0kcYy2wt5ujN0v2avQrGh1K/ZZYfH3N561WraYKsjWU0i+tgg0fXpMrk/d/Ri9FTjzFGzVbD+XJ3WNYlZDLg18ii/cj4O8wWYp73yXdFLxdnPPL0vhetALElPKSYL486yo4qA7HqHV0nNQ9eGskTqcH6zBmUTMLMHGv91UWA7U+Kf4qasi82S7CO5ep8qJt6FzbcaV5ZwEStKqh1T42EZd+d8x99; 25:8Oeuo8LNq1JbACMlxD1L1flQO+vyF80plQ1RcfdIhPebcGcTI+BmOaztMEsHFNdKo+g3LEA5tHgEBb0YWRLxceArbOEMF25NG3oJ8qIoZsYyKZRQrphocRa6PjOPM46IQiiviu0d7N73rUB3Yk7MyXlnUk9XFBUo3eiagjf/ks5pQe4cuGwq7Jtdk0tpRtPXcXv5AE2n9kT2Y/X8Md4uv52Vq0Iyli0MkKnDCiZ5jPU9wyzqPURDr+kOpvrHcr+IpTHsIYZXb3qKJIJSNrheU8O6GTZB8r1/wCLkDIQOIVo4/zYSHTLg6NBQ3teVFAPI1PLJvvnjKTv0IIFrspa8Ow==
X-MS-TrafficTypeDiagnostic: DM2PR05MB493:
X-Microsoft-Exchange-Diagnostics: 1; DM2PR05MB493; 31:ez4Fr6Tez5+6KZyB7bUwcDJndsICQZ5q+HTjePY4Rh9MCZbNkLHdTL1E16WJSYwH81lj3i12iiHI1HaXP0VR2NkLBon8BAWmzaX6VCAIzdCGpo5bqMGAZZ37gHhHjb1KlI1yvboX1D0bSJ4364PQK4ci9EncOi7jxqoQpsexkh70yPMSLIsIyiNjvkpzlkrRNky0n+SPr3RRpnrhxbuDs2F3jZqVz5rrhkgAXfS2Nz8=; 20:ZEeI+gYfz8XMC83LR8qCxCymWOVSNfU4vafTV+gIlydjwXnOk8kmiYQBN6QG9cwaeayHaSj1DECkga+Aj7rrwSjvmHOvduqF/6eoRAN33oVoxwnujaOdya4OuAfX2mwp3tl+r8ghXuj5YCUzYildJQI/Jjl53PXrygnblcBG9jIvxFbMQ20gjZyrmx4VXy+ty3BYYYH2YRYyGhRtaB0iKbvNnm6rD/h6uH1zwrERUt8oXfHVGgELCFEC2/zTCUupzLxGv2FLW17nzQC9ycdtvcbSAEASzB2B1MqS5erIRMKx9bDQrdE6LANutzWrQEMrJmvFxzpLtUE7aaDnrV/NKh6HVLalMXmshaP1Lrqd/oHnU5OROgAKnwu8LnX2KyJWURy66gPBZXbf5l9A9/xEDpv5cUDffJv5qGOR5W6fRScJ+GOsb+Hw0UBMin1ZFaJceKexKX0r3XS+H77feuXBhDmaPRUjQtbmMK24+n+Bsl6SDekJxw84l0IjAsXGY+rO
X-Microsoft-Antispam-PRVS: <DM2PR05MB49369A23C2DAE27458CCFD9A8830@DM2PR05MB493.namprd05.prod.outlook.com>
X-Microsoft-Exchange-Diagnostics: 1; DM2PR05MB493; 4:CRK3vDQsUwrE/3ySmNlf0pVXLTpYgfMordsKcFc+nyI9PbG6g+m9TYqO/Ecoj47q9vYcH9j6UdSS77crZBgjUycealaO5T7+E0Rs4okkH8f4pa5bUgv1OkKMXne6lxPPuNOm28/feitaLyYwkSkS0R0+7CP5Q54VRtsJB2ZIxM1dvkC7GcM14h+6Sk6ngg5beI97BPl+jax0B0GcjeDx3lsXE5fH7oXGCMESov0M3P8w5xaj4LIwyaS24Bj0bwQs9UdBlVNhFtZwrqh915WoNNIjIlDoc5o4+ma0f70oGtEWbr7fnKSyiTNE+h3wRg4l
X-Forefront-PRVS: 0920602B08
X-Microsoft-Exchange-Diagnostics: 1; DM2PR05MB493; 23:fYXIE1LbPH6b/XQfzrKpecoGSRNRn68PBCPBvo9dKtVJa5CpO+XdoSpkclOfCRlSCcNXxPVjguBylc1TsZp53WYwT1hW8XBCLNuPW/2U5yWkaxtPH1aK2kfostdipyY7J3DYBgQfWRykXFaXTM/wXPcliptrLN12V3VBPDQjZPdFAe3qImFVn3kxDAleEXoUB7U6nWi7MC9zdlximSwmOLaCX4Ytm3/5ntv/7ApYuKAIrHISOMWu6k0YrIoYZTHExMGAzxiY3wIbwHhH7KLIMh9weVu1QOb8MJfFcdzksh/qYyOxPPmnQj79G1yvpgqyCpFLVwsuWInnoWQ+GJoryPpQBtfVTQ9HSH9ZhN46Fddo6waviqfXbfS/Dcc59KmPslYBMT2IXJj28ETsVHOhcm2mwk1T5bLxs+ewZqVU88d3fvWDTso9kCTSVurbV2g+sttYXAiulr3NOajw3V9vkQo0VJzTQGpIZ3vU7+rmCECe3yV2tO2T7Thdz5+Ot5IFyAyGonwUtMOjhxflFGciqm9TQma7bvxKwh9eLi5O8WtV6IrJ++ugCl4lbEzPXQq0drLQ9kLyx6q5Z4WdFzBlIFXIOTYzU5DfShmupyvjb9l0vgjWLUBM6AMSn+7T21Vl8uVNGsQnT+6Sj80KViHRQMEltqJHTE3GjzDxGG9X7vQD1AtWoPG+SYoYPBrvojyKtiVtmNJYpoPnrQGnFAa9sF1euYgGY5809quUDNsbXraEL7VBfrIYZMsDDpyPXhPCQxhEeLxbQsdhg6y0SA8VsMz8GX+EC3nWxvrToTsLx76Jn2ypTj8vqdpDgpofi+CXF4/E+Q/A3wK63sVG8FYNNluJ0Wok13JBpU3DVgA1/QKsqaVqlepb/ncEgUioVpC3tCAGOyaEsqxeHhEC1yEQX0Xghmkpsn1beJeSqgFLwpBdj0StbjeOhWOlrJKDpcYmtViKHNi4wl0egqo0co9eGU22ZHo88hVLzGEvI1Q424vqfsUSc30+qnjzXNvb0304pK6tVRqW4jMCPL9gx3PGL1KvXKwnlWaBpDIxpMHSOjrnPljMg4+AEGkJyqxFhNO5cL95/KsbDq9BU/OtzZneWaTuvdyzL5pNzNgDxOjto0C6gwqAmOCq2WKenm5NYQBrCpcoML09IT7s3UAnUNkSOvOAhZG4SqM6d5G4SCMWywi/y4Lrig4PdanQodIoCEPMfbPx6BDknnm2yeI1KTjCeU2AZFu+XRP6eXzGpTuiFSWe6B01gLhBp5nWhKME0i2rhoS9/KX2CBzrp7AGexpjSJObWvjMbJt47mtJ4hNTcEot6T5a2cYTLPdRtYYYcszj0qnRyvdkPvQ1yxuZMZ8r9mCAjokCrvMng1xuieEo3nn55zTvoqo5q00977BPKtX+3zSmU/As6eFUHo7k5H3/xCBpuNpuDjfBjZJkno1j65jOHBJz5IPCGjKdcXtSlgQQ4FYFsMYBJb5QOnse51NI8Q==
X-MS-Exchange-SenderADCheck: 1
X-Microsoft-Antispam-Message-Info: Gr7UGKaoOvO2Fd6LVzt/Qyqld6yMgTD7os3oa+TYXmuwx0ndOz1Y3oEJFD4A5n58NeJzPDJAZkd/lYvCT21NLsybb+ih8TxOGSfyhMcm+YGboYd7lXRLu7qIlHvEsDcehJPQMSiWgv/f/wfH+pi++fcqBFCW0LqeOOTdvjhmtIG65mXe+Rky6/VWOVizOOhU5TjaKZN7cGJFcb5LjhAy3WyDZDLHXOSE5dzfkX87PCgbyx0GYVPm1GhRU5o8ldkkV9OJxQl0MC9ckyF/q063gGs761xnSagzjdgf+4z89OBTkPfIA++IZWG/LoCHZ8cjOapTTl65UaCaN/KWP1H2GddOn9UaErEeUAkrYKkRMV11M3Qtoh3FTOm4qRtYJ+9LbWbVKRh1tIAvMTgFv/u1AB60P2A2LTWZGLqXlgJ0G+8=
X-Microsoft-Exchange-Diagnostics: 1; DM2PR05MB493; 6:bxZYgtt/Q7Hd1wXZnsSRDwnAroidD1FPh93Cd28cANkd6/D+DWc9k7s+RnDMm75drh1OiOkyKx2goZNdM2JSm2X8+ciQLYEZe7Q8H7gKw/n93X39vFbOySFfRJe1tufHo8AVYpEZfvrsKtxQywn3/wkj0vd5/3rIP0n3k6MSqdInJUrlaLsFOS9dkd+mpLGr9TS0+KMfgYzWXhbBXvxJZu5J90FKMqBK3x3bpHCwzUj4uBAoQIrMJ3zwcto2cbVd8Tiv6qkkoc4AEL/GrtWyndG1mr9zW8Qq/61rvA2RB/lYB6HswNlN3WNqCSOCcsP2kp789L22537t76+OlxhYchyQsvNyIuIL4vqBkNdwrhBXYYrf/kHzFCBpv0VN1gUZpy68d8PAUbbRmXmxAPD2XicSP5eYVV8dviTWHjhHnsh6yn79YYeNU1aFlOJadaeOQ/mG5vPGLQM61iR0ZexcbQ==; 5:nb11ckFfwMiZ0mmc4pkd1JOnKmjD5YiFMbo5/MBBhTdq/vxvQj779NjSI6SA+lhvLDbrtFYCvA1VjD7kkVPOsOUzFP2/0Pjttk7+cwuK6eybjLnmjPySDSubVLD23O81DM+ZcCBJFlavEaMcu0yGU+RycWKD4g59eSiR0hruYCRMCM7qKgjeTWOU14oZBc4Vq+GQ3DtjSn9mR+BZ/2Hx/g==; 7:fNRj3Fh33//nYgo3Vsz0VjVpSb+AisxmUc8augUjQx7vWaggRytdTXqnA+l2A3/H9icrqMZuuObG8Hhwf9tQDj1aK8ZeVotzCWE9bVEgI5QtfVg9wjy8yBmUic/kDfpfNvtRLmigO4KyWC9zQJtrpg==
SpamDiagnosticOutput: 1:99
SpamDiagnosticMetadata: NSPM
X-OriginatorOrg: juniper.net
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Jan 2019 06:11:48.4595 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 48cac61d-2b81-425e-433a-08d67c42aa4c
X-MS-Exchange-CrossTenant-Id: bea78b3c-4cdb-4130-854a-1d193232e5f4
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=bea78b3c-4cdb-4130-854a-1d193232e5f4; Ip=[66.129.239.12]; Helo=[P-EXFEND-EQX-01.jnpr.net]
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM2PR05MB493
X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:, , definitions=2019-01-17_02:, , signatures=0
X-Proofpoint-Spam-Details: rule=outbound_spam_notspam policy=outbound_spam score=0 priorityscore=1501 malwarescore=0 suspectscore=0 phishscore=0 bulkscore=0 spamscore=0 clxscore=1011 lowpriorityscore=0 mlxscore=0 impostorscore=0 mlxlogscore=999 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1810050000 definitions=main-1901170044
Archived-At: <https://mailarchive.ietf.org/arch/msg/netmod-ver-dt/xFQO6j33ye9EPi9Clteu0oeFt58>
Subject: Re: [Netmod-ver-dt] YANG Module Semver doc updates
X-BeenThere: netmod-ver-dt@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: NetMod WG YANG Model Versioning Design Team <netmod-ver-dt.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/netmod-ver-dt>, <mailto:netmod-ver-dt-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/netmod-ver-dt/>
List-Post: <mailto:netmod-ver-dt@ietf.org>
List-Help: <mailto:netmod-ver-dt-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/netmod-ver-dt>, <mailto:netmod-ver-dt-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 17 Jan 2019 06:12:03 -0000

Turns out I have an overlap during the meeting tomorrow and won't be
able to dial-in.  Will revert back on (d) in the next few days

On Jan 14 15:02 PM, Robert Wilton wrote:
> Hi,
> 
> Heads up that I have pushed an updated version of
> draft-verdt-netmod-yang-semver-00.  Primarily, this contains my initial
> updates to section 3 on YANG semantic versioning.  Adding some
> examples/diagrams may help this section greatly, but otherwise comments are
> welcome.
> 
> From the meeting on Thursday, I think that the following updates were
> agreed:
> 
> a) Restructure the intro sections -  Joe[but I know you have already had a
> first pass at this]
> b) Define YANG semver rules - Rob
> c) Update/simplify "imports by revision" - was this Joe or Balazs?
> d) 5. Updates to YANG 1.1 Module Update Rules, 6. Updates to
> ietf-yang-library, 7. Deprecated and Obsolete Reasons - Ebben was going to
> take a look a these.
> e) Guidelines 8.1. Guidelines to YANG model authors 8.2. Guidelines to YANG
> model clients - Reshad
> 
> Thanks,
> Rob
> 
> [A copy of the doc after my updates is attached]
> 

> 
> 
> 
> 
> Network Working Group                                          B. Claise
> Internet-Draft                                                 J. Clarke
> Updates: 7950 (if approved)                          Cisco Systems, Inc.
> Intended status: Standards Track                              B. Lengyel
> Expires: July 18, 2019                                          Ericsson
>                                                               K. D'Souza
>                                                                     AT&T
>                                                         January 14, 2019
> 
> 
>                     New YANG Module Update Procedure
>                    draft-verdt-netmod-yang-semver-00
> 
> Abstract
> 
>    This document specifies a new YANG module update procedure in case of
>    backward-incompatible changes, as an alternative proposal to the YANG
>    1.1 specifications.  This document updates RFC 7950.
> 
> Status of This Memo
> 
>    This Internet-Draft is submitted in full conformance with the
>    provisions of BCP 78 and BCP 79.
> 
>    Internet-Drafts are working documents of the Internet Engineering
>    Task Force (IETF).  Note that other groups may also distribute
>    working documents as Internet-Drafts.  The list of current Internet-
>    Drafts is at https://datatracker.ietf.org/drafts/current/.
> 
>    Internet-Drafts are draft documents valid for a maximum of six months
>    and may be updated, replaced, or obsoleted by other documents at any
>    time.  It is inappropriate to use Internet-Drafts as reference
>    material or to cite them other than as "work in progress."
> 
>    This Internet-Draft will expire on July 18, 2019.
> 
> Copyright Notice
> 
>    Copyright (c) 2019 IETF Trust and the persons identified as the
>    document authors.  All rights reserved.
> 
>    This document is subject to BCP 78 and the IETF Trust's Legal
>    Provisions Relating to IETF Documents
>    (https://trustee.ietf.org/license-info) in effect on the date of
>    publication of this document.  Please review these documents
>    carefully, as they describe your rights and restrictions with respect
>    to this document.  Code Components extracted from this document must
>    include Simplified BSD License text as described in Section 4.e of
> 
> 
> 
> Claise, et al.            Expires July 18, 2019                 [Page 1]
> 
> Internet-Draft                YANG Catalog                  January 2019
> 
> 
>    the Trust Legal Provisions and are provided without warranty as
>    described in the Simplified BSD License.
> 
> Table of Contents
> 
>    1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   2
>    2.  The Solution  . . . . . . . . . . . . . . . . . . . . . . . .   3
>    3.  YANG Semantic Versioning  . . . . . . . . . . . . . . . . . .   3
>      3.1.  Classification of changes between module revisions  . . .   3
>      3.2.  YANG Semantic Versioning Scheme for Modules . . . . . . .   4
>      3.3.  YANG Semantic Version Update Rules  . . . . . . . . . . .   6
>      3.4.  YANG Module Semver Extension  . . . . . . . . . . . . . .   7
>    4.  Import by Semantic Version  . . . . . . . . . . . . . . . . .   9
>    5.  Updates to YANG 1.1 Module Update Rules . . . . . . . . . . .  12
>    6.  Updates to ietf-yang-library  . . . . . . . . . . . . . . . .  12
>    7.  Deprecated and Obsolete Reasons . . . . . . . . . . . . . . .  13
>    8.  Guidelines  . . . . . . . . . . . . . . . . . . . . . . . . .  14
>      8.1.  Guidelines to YANG model authors  . . . . . . . . . . . .  14
>      8.2.  Guidelines to YANG model clients  . . . . . . . . . . . .  15
>    9.  Semantic Version Extension YANG Module  . . . . . . . . . . .  15
>    10. Contributors  . . . . . . . . . . . . . . . . . . . . . . . .  19
>    11. Security Considerations . . . . . . . . . . . . . . . . . . .  19
>    12. IANA Considerations . . . . . . . . . . . . . . . . . . . . .  19
>      12.1.  YANG Module Registrations  . . . . . . . . . . . . . . .  19
>    13. References  . . . . . . . . . . . . . . . . . . . . . . . . .  20
>      13.1.  Normative References . . . . . . . . . . . . . . . . . .  20
>      13.2.  Informative References . . . . . . . . . . . . . . . . .  20
>    Appendix A.  Appendix . . . . . . . . . . . . . . . . . . . . . .  20
>      A.1.  Open Issues: Requirements to be Addressed . . . . . . . .  21
>      A.2.  Open Issues . . . . . . . . . . . . . . . . . . . . . . .  21
>      A.3.  Derived Semantic Version  . . . . . . . . . . . . . . . .  22
>        A.3.1.  The Derived Semantic Version  . . . . . . . . . . . .  22
>        A.3.2.  Implementation Experience . . . . . . . . . . . . . .  22
>    Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  23
> 
> 1.  Introduction
> 
>    This document puts forth a solution to the problems described in
>    [I-D.verdt-netmod-yang-versioning-reqs] by proposing changes to
>    [RFC7950] to address the various requirements that
>    [I-D.verdt-netmod-yang-versioning-reqs] specifies.  At this time, the
>    solution herein addresses requirements 1.1, 1.2, 1.3, 2.1, 4.1, 4.2,
>    4.3, 5.1, and 5.2.  Current gaps are documented in Appendix A.1
>    below.
> 
> 
> 
> 
> 
> 
> 
> Claise, et al.            Expires July 18, 2019                 [Page 2]
> 
> Internet-Draft                YANG Catalog                  January 2019
> 
> 
> 2.  The Solution
> 
>    The solution is composed of five parts:
> 
>    1.  A semantic versioning YANG extension, along with an optional
>        additional check that validates the semantic versioning from a
>        syntactic point of view, which can either assist in determining
>        the correct semantic versioning value, or which can help in
>        determining the values for YANG modules that do not support this
>        extension.
> 
>    2.  An import by semantic version statement
> 
>    3.  Updates to the YANG 1.1 module update rules
> 
>    4.  Updates to ietf-yang-library
> 
>    5.  An introduction of deprecated and obsolote reason clauses
> 
> 3.  YANG Semantic Versioning
> 
>    The first part of the solution introduces and defines YANG Semantic
>    Versioning, explains how it is used with YANG modules, and the rules
>    associated with changing a module's semantic version number when the
>    module definitions are updated.
> 
>    This part of the solution addresses requirements 1.1, 1.2, and 2.1 of
>    [I-D.verdt-netmod-yang-versioning-reqs].
> 
>    The YANG semantic versioning scheme applies only to YANG modules.
>    YANG submodules are not independently versioned by the YANG semantic
>    versioning scheme.  Instead, if a versioned module includes one or
>    more submodules then those submodules are implicitly versioned as
>    part of the module's 'semver:version' statement, and all 'include'
>    statements MUST specify the revision-date for each of the included
>    submodules.
> 
> 3.1.  Classification of changes between module revisions
> 
>    The principle aim of YANG semantic versioning is to allow a reader of
>    a module to understand the overall significance of any changes
>    between two module revisions solely based on the semantic version
>    number.
> 
>    The semantic version change between any two artibrary revisions of a
>    YANG module can be classified into one of four categories:
>    'unchanged', 'editorial, 'backwards-compatible' or 'non-backwards-
> 
> 
> 
> 
> Claise, et al.            Expires July 18, 2019                 [Page 3]
> 
> Internet-Draft                YANG Catalog                  January 2019
> 
> 
>    compatible'.  The classification is performed by use of the following
>    rules:
> 
>       The semantic version change between two modules revisions is
>       defined as 'unchanged' if, after excluding 'revision' and
>       'semver:version' statements and their substatements, the only
>       remaining changes are insignificant white space changes.
> 
>       An 'editorial' module semantic version change is where there are
>       changes in the module's statements, or statement ordering, between
>       the two module revisions, but thoses changes do not affect the
>       syntax or semantic meaning of the module in any way.  An example
>       of an editorial change would be a fix to a spelling mistake in a
>       description statement.
> 
>       A 'backwards-compatible' module semantic version change is where
>       some syntax or semantic changes exists between the two module
>       revisions, but all changes follow the rules of "Updating a Module"
>       of [RFC7950], except that no elements have been changed to status
>       'obsolete', and re-ordering of statements is allowed.
> 
>       A 'non-backwards-compatible' module semantic version change is
>       where some syntax or semantic changes exists between the two
>       module revisions, and those changes do not follow the rules of
>       "Updating a Module", or one or more schema nodes have been changed
>       to status 'obsolete'.
> 
>    Q: Should revision-date history and semantic version be excluded from
>    the comparision?  RW: I've assumed yes.
> 
>    Q.  Does statement ordering need to be considered as part of the
>    comparision?  RW: I think the answer should be no.
> 
> 3.2.  YANG Semantic Versioning Scheme for Modules
> 
>    This document defines the YANG semantic versioning scheme that is
>    used for YANG modules.  The versioning scheme has the following
>    properties:
> 
>       The YANG semantic versioning scheme is extended from version 2.0.0
>       of the semantic versioning scheme defined at semver.org [semver]
>       to cover the additional requirements for the management of YANG
>       module lifecyles that cannot be addressed using the semver.org
>       2.0.0 versioning scheme alone.
> 
>       Unlike the semver.org 2.0.0 versioning scheme, the YANG semantic
>       versioning scheme supports limited updates to older versions of
> 
> 
> 
> 
> Claise, et al.            Expires July 18, 2019                 [Page 4]
> 
> Internet-Draft                YANG Catalog                  January 2019
> 
> 
>       YANG modules, to allow for bug fixes and enhancements to module
>       versions that are not the latest.
> 
>       Module definitions that follow the semver.org 2.0.0 versioning
>       scheme are fully compatible with implementations that understand
>       the YANG semantic versioning scheme.
> 
>       If module updates are always restricted to the latest version of
>       the module only, then the version numbers used by the YANG
>       semantic versioning scheme are exactly the same as those defined
>       by the semver.org 2.0.0 versioning scheme.
> 
>    Every YANG module SHOULD include a top-level 'semver:version'
>    statement that specifies the YANG semantic version number for each
>    revision of the module.
> 
>    All 'revision' statements in YANG modules SHOULD include a
>    'semver:version' substatement that specifies the YANG semantic
>    version number associated with that particular revision of the
>    module.
> 
>    "The YANG semver version number is expressed as a string of the form:
>    'X.Y.Zv'; where X, Y, and Z each represent non-negative integers
>    smaller than 32768, and v represents an optional single character
>    suffix: 'm' or 'M'.
> 
>    o  'X' is the MAJOR version.  Changes in the major version number
>       indicate changes that are non-backwards-compatible to versions
>       with a lower major version number.
> 
>    o  'Y' is the MINOR version.  Changes in the minor version number
>       indicate changes that are backwards-compatible to versions with
>       the same major version number, but a lower minor version number.
> 
>    o  'Zv' is the PATCH version and modifier.  Changes in the patch
>       version number can indicate editorial, backwards-compatible, or
>       non-backwards-compatible changes relative to versions with the
>       same major and minor version numbers, but lower patch version
>       number, depending on what form modifier 'v' takes:
> 
>       *  'M' - the change represents a non-backwards-compatible change
> 
>       *  'm' - the change represents a backwards-compatible change
> 
>       *  If the modifier letter is absent, the change represents an
>          editorial change
> 
> 
> 
> 
> 
> Claise, et al.            Expires July 18, 2019                 [Page 5]
> 
> Internet-Draft                YANG Catalog                  January 2019
> 
> 
> 3.3.  YANG Semantic Version Update Rules
> 
>    When a new revision of a module is produced, then the following rules
>    define how the YANG semantic version number for the new module
>    revision is calculated, based on the changes between the two module
>    revisions, and the YANG semantic version number of the base module
>    revision that the changes are derived from.  A two step process is
>    used:
> 
>    The first step is to classify the module change as 'editorial',
>    'backwards-compatible', or 'non-backwards-compatible version' using
>    the rules defined in Section 3.1.
> 
>    The second step is to calculate the value of the 'semver:version'
>    field for the new module revision, based on the value of the
>    'semver:version' field in the base module, any how the module changes
>    have been classified.
> 
>    The following rules define how the value for the 'semver:version'
>    argument in the new module revision is calculated:
> 
>       If the module is being updated in a non-backwards-compatible way,
>       then the module version "X.Y.Z[m|M]" SHOULD be updated to
>       "X+1.0.0" unless that module version has already been defined with
>       different content, in which case the module version "X.Y.Z+1M MUST
>       be used instead.
> 
>       If the module is being updated in a backwards-compatible way, then
>       the module version "X.Y.Z[m|M]" SHOULD be updated to "X.Y+1.0"
>       unless that module version has already been defined with different
>       content, in which case if the current module version is "X.Y.ZM"
>       then it MUST be updated to "X.Y.Z+1M", or otherwise "X.Y.Z+1m".
> 
>       If the module is being updated in an editorial way, then the
>       module version "X.Y.Z[m|M]" MUST be updated to "X.Y.Z+1[m|M],
>       retaining the 'm|M' character if it is already present in the
>       previous version.".
> 
>       YANG module semantic version numbers begining with 0, i.e "0.X.Y"
>       are regarded as beta definitions and need not follow the nbc rules
>       above, and the minor version number can be incremented instead.
> 
>       In all cases, the 3 numeric fields that comprise a YANG module
>       semantic version number associated with a YANG module MUST
>       uniquely identify the contents of that YANG module.  E.g., module
>       version "1.2.3M" is not allowed if module version "1.2.3" has
>       already been defined.
> 
> 
> 
> 
> Claise, et al.            Expires July 18, 2019                 [Page 6]
> 
> Internet-Draft                YANG Catalog                  January 2019
> 
> 
> 3.4.  YANG Module Semver Extension
> 
>    This document defines a YANG extension to add the YANG module
>    semantic version to a Module.  The complete definition of this YANG
>    module is in section XXX.
> 
>            extension module-version {
>                argument semver;
>            }
> 
>    The extension would typically be used this way:
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> Claise, et al.            Expires July 18, 2019                 [Page 7]
> 
> Internet-Draft                YANG Catalog                  January 2019
> 
> 
>        module yang-module-name {
> 
>          namespace "name-space";
>          prefix "prefix-name";
> 
>          import ietf-semver { prefix "semver"; }
> 
>          description
>            "to be completed";
> 
>          semver:module-version "2.0.0";
> 
>          revision 2017-10-30 {
>            description
>              "Change the module structure";
>            semver:module-version "2.0.0";
>          }
> 
>          revision 2017-07-30 {
>            description
>              "Added new feature XXX";
>            semver:module-version "1.2.0";
>          }
> 
>          revision 2017-04-03 {
>            description
>              "Update copyright notice.";
>            semver:module-version "1.0.1";
>          }
> 
>          revision 2017-04-03 {
>            description
>              "First release version.";
>            semver:module-version "1.0.0";
>          }
> 
>          revision 2017-01-26 {
>            description
>              "Initial module for inet types";
>            semver:module-version "0.1.0";
>          }
> 
>          //YANG module definition starts here
> 
>    See also "Semantic Versioning and Structure for IETF Specifications"
>    [I-D.claise-semver] for a mechanism to combine the semantic
>    versioning, the GitHub tools, and a potential change to the IETF
>    process.
> 
> 
> 
> Claise, et al.            Expires July 18, 2019                 [Page 8]
> 
> Internet-Draft                YANG Catalog                  January 2019
> 
> 
> 4.  Import by Semantic Version
> 
>    If a module is imported by another one, it is usually not specified
>    which revision of the imported module should be used.  However, not
>    all revisions may be acceptable.  Today YANG 1.1 allows one to
>    specify the revision date of the imported module, but that is too
>    specific, as even a small spelling correction of the imported module
>    results in a change to its revision date, thus making the module
>    revision ineligible for import.
> 
>    Using semantic versioning to indicate the acceptable imported module
>    versions is much more flexible.  For example:
> 
>    o  Only a module of a specific MAJOR version is acceptable.  All
>       MINOR and PATCH versions can also be imported.
> 
>    o  A module at a specific MAJOR version or higher is acceptable.
> 
>    o  A module at a specific MAJOR.MINOR version is acceptable.  All
>       PATCH versions can also be imported.
> 
>    o  A module within a certain range of versions are acceptable.  For
>       example, in this case, a module between version 1.0.0 (inclusive)
>       and 3.0.0 (exclusive) are acceptable.
> 
>    The ietf-semver module provides another extension, import-versions
>    that is a child of import and specifies the rules for an acceptable
>    set of versions of the given module.  This extension addresses
>    requirement 1.3 of [I-D.verdt-netmod-yang-versioning-reqs].  The
>    structure of this extension is specified as follows:
> 
>    TODO: How to specify this?  One thought is below, not fully
>    formalized as this should be discussed further.  Note: while this
>    uses a comma to separate discrete versions, we could instead allow
>    for this to be specified multiple times.
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> Claise, et al.            Expires July 18, 2019                 [Page 9]
> 
> Internet-Draft                YANG Catalog                  January 2019
> 
> 
> [\[(]X[.Y[.Z]][-[X[.Y[.X]]][\])]][,...]
> 
> Where the first character MAY be a '[' or '(' to indicate at least inclusive and at least
>  exclusive (respectively).  If this is omitted, a full semantic version must be specified
>  and the import will only support this one version.
> 
> The following version, if specified with a '[' or '(' indicates the lower bound.  This can
>  be a full semantic version or a MAJOR only or MAJOR.MINOR only.
> 
> The '-', if specified, is a literal hyphen indicating a range will be specified.  If the second portion
>  of the import-versions clause is omitted, then there is no upper bound on what will be considered
>  an acceptable imported version.
> 
> After the '-' the upper bound semantic version (or part thereof) follows.
> 
> After the upper bound version, one of ']' or ')' MUST follow to indicate whether this limit is inclusive
>  or exclusive of the upper bound respectively.
> 
> Finally, a literal comma (',') MAY be specified with additional ranges.  Each range is taken as a logical
>  OR.
> 
> 
>    For example:
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> Claise, et al.            Expires July 18, 2019                [Page 10]
> 
> Internet-Draft                YANG Catalog                  January 2019
> 
> 
> import example-module {
>   semver:import-versions "[1.0.0-3.0.0)";
>   // All versions between 1.0.0 (inclusive) and 3.0.0 (exclusive) are acceptable.
> }
> 
> import example-module {
>   semver:import-versions "[2-5]";
>   // All versions between 2.0.0 (inclusive) and 5.y.z (inclusive) where y and z are
>   // any value for MINOR and PATCH versions.
> }
> 
> import example-module {
>   semver:import-versions "[1.5-2.0.0),[2.5";
>   // All versions between 1.5.0 (inclusive) and 2.0.0 (exclusive) as well as all versions
>   // greater than 2.5 (inclusive).  In this manner, if 2.0 was branched from 1.4, and a
>   // new feature was added into 1.5, all versions of 1.x.x starting at 1.5 are allowed,
>   // but the feature was not merged into 2.y.z until 2.5.0.
> }
> 
> import example-module {
>   semver:import-versions "[1";
>   // All versions greater than MAJOR version 1 are acceptable.  This includes any
>   // MINOR or PATCH versions.
> }
> 
> import example-module {
>   semver:import-versions "1.0.0";
>   // Only version 1.0.0 is acceptable (this mimics what exists with import by revision).
> }
> 
> import example-module {
>   semver:import-versions "[1.1-2)"";
>   // All versions greater than 1.1 (inclusive, and including all PATCH versions off of 1.1)
>   // up to MAJOR version 2 (exclusive) are acceptable.
> }
> 
> import example-module {
>   semver:import-versions "[1.1-2),[3";
>   // All versions greater than 1.1 (inclusive, and including all PATCH versions off of 1.1)
>   // up to MAJOR version 2 (exclusive), as well as all versions greater than MAJOR version 3
>   // (inclusive) are acceptable.
> }
> 
> import example-module {
>   semver:import-versions "[1.1-2),[3.0.0";
>   // This is equivalent to the example above, simply indicating that a partial semantic version
>   // assumes all missing components are 0.
> }
> 
> 
> 
> Claise, et al.            Expires July 18, 2019                [Page 11]
> 
> Internet-Draft                YANG Catalog                  January 2019
> 
> 
>    The import statement SHOULD include a semver:import-versions
>    statement and MUST NOT include a revision statement.  An import
>    statement MUST NOT contain both a semver:import-versions and a
>    revision substatement.  The use of the revision substatement for
>    import should be discouraged.
> 
> 5.  Updates to YANG 1.1 Module Update Rules
> 
>    RFC 7950 section 11, must be updated to allow for non-backward
>    changes provided they follow the semantic versioning guidelines and
>    increase the MAJOR version number when a backward incompatible change
>    is made.  This change is in the spirit of requirement 5.1 from
>    [I-D.verdt-netmod-yang-versioning-reqs].  The following is proposed
>    text for this change.
> 
>    "As experience is gained with a module, it may be desirable to revise
>    that module.  Changes to published modules are allowed, even if they
>    have some potential to cause interoperability problems, if the
>    module-version YANG extension is used in the revision statement to
>    clearly indicate the nature of the change."
> 
> 6.  Updates to ietf-yang-library
> 
>    The ietf-semver YANG module also specifies additional ietf-yang-
>    library [RFC7895] [I-D.ietf-netconf-rfc7895bis] leafs to be added at
>    the module and submodule levels.  The first is module-version, which
>    augments /yanglib:yang-library/yanglib:module-set/yanglib:module.
>    This specifies the current semantic version of the associated module
>    and revision in a given module-set.  The related submodule-version
>    leaf is added at /yanglib:yang-library/yanglib:module-
>    set/yanglib:module/yanglib:submodule to indicate the semantic version
>    of a submodule.
> 
>    In order to satisfy the requirements 4.1 and 4.3 of
>    [I-D.verdt-netmod-yang-versioning-reqs] that deprecated and obsolete
>    node presence and operation are easily and clearly known to clients,
>    ietf-semver also augments the ietf-yang-library with two additional
>    boolean leafs at /yanglib:yang-library/yanglib:module-set/
>    yanglib:module.  A client can make one request of the ietf-yang-
>    library and know whether or a not a module that has deprecated or
>    obsolete has those nodes implemented by the server, as opposed to
>    making multiple requests for each node in question.
> 
>    deprecated-nodes-present :  A boolean that indicates whether or not
>       this server implements deprecated nodes.  The value of this leaf
>       SHOULD be true; and if so, the server MUST implement nodes within
>       this module as they are documented.  If specific deprecated nodes
> 
> 
> 
> 
> Claise, et al.            Expires July 18, 2019                [Page 12]
> 
> Internet-Draft                YANG Catalog                  January 2019
> 
> 
>       are not implemented as documented, then they MUST be listed as
>       deviations.  This leaf defaults to true.
> 
>    obsolete-nodes-present :  A boolean that indicates whether or not
>       this server implements obsolete nodes.  The value of this leaf
>       SHOULD be false; and if so, the server MUST NOT implement nodes
>       within this module.  If this leaf is true, then all nodes in this
>       module MUST be implemented as documented in the module.  Any
>       variation of this MUST be listed as deviations.  This leaf
>       defaults to false.
> 
>    If a module does not have any deprecated or obsolete nodes, the
>    server SHOULD set the corresponding leaf above to true.  This is
>    helpful to clients, such that if the MAJOR version number has not
>    changed, and these booleans are true, then a client does not have to
>    check the status of any node for the module.
> 
>    Module compatibility can be affected if values other than the default
>    are used for the leafs described here.  For example, if a server does
>    not implemennt deprecated nodes, then a given module revision may be
>    incompatible with a previous revision where the nodes were not
>    deprecated.  When calculating backward compatibility, the default
>    values of these leafs MUST be considered.  From a client's point of
>    view, if two module revisions have the same MAJOR version but the
>    run-time value of deprecated-nodes-present (as read from the ietf-
>    yang-library) is false, then compatibility MUST NOT be assumed based
>    on the module-version alone.
> 
> 7.  Deprecated and Obsolete Reasons
> 
>    The ietf-semver module specifies an extension, status-description,
>    that is designed to be used as a substatement of the status statement
>    when the status is deprecated or obsolete.  The argument to this
>    extension is freeform text that explains why the node was deprecated
>    or made obsolete.  It may also point to other schema elements that
>    take the place of the deprecated or obsolete node.  This text is
>    designed for human consumption to aid in the migration away from
>    nodes that will one day no longer work.  These extensions address
>    requirement 4.2 of [I-D.verdt-netmod-yang-versioning-reqs].  An
>    example is shown below.
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> Claise, et al.            Expires July 18, 2019                [Page 13]
> 
> Internet-Draft                YANG Catalog                  January 2019
> 
> 
>    leaf imperial-temperature {
>      type int64;
>      units "degrees Fahrenheit";
>      status deprecated {
>        semver:status-description
>          "Imperial measurements are being phased out in favor
>           of their metric equivalents.  Use metric-temperature
>           instead.";
>      }
>      description
>        "Temperature in degrees Fahrenheit.";
>    }
> 
> 8.  Guidelines
> 
> 8.1.  Guidelines to YANG model authors
> 
>    From a published revision N of a module, the next published revision
>    N+1 of the module SHOULD have one of:
> 
>    1.  MAJOR version incremented by 1, MINOR and PATCH versions set to
>        0.  This indicates that in revision N+1:
> 
>        *  There have been one or more non-backwards-compatible changes
> 
>        *  There may also be new functionality which have been added in a
>           backwards-compatible manner
> 
>        *  There may also be bug fixes which have been made in a
>           backwards-compatible manner
> 
>    2.  MAJOR version unchanged, MINOR version incremented by 1 and PATCH
>        version set to 0.  This indicates that in revision N+1:
> 
>        *  There are no non-backwards-compatible changes
> 
>        *  There have been one or more new functionality which have been
>           added in a backwards compatible-manner
> 
>        *  There may also be bug fixes which have been made in a
>           backwards-compatible manner
> 
>    3.  MAJOR and MINOR versions unchanged, PATCH version incremented by
>        1.  This indicates that in revision N+1:
> 
>        *  There are no non-backwards-compatible changes
> 
> 
> 
> 
> 
> Claise, et al.            Expires July 18, 2019                [Page 14]
> 
> Internet-Draft                YANG Catalog                  January 2019
> 
> 
>        *  There is no new functionality which has been added in a
>           backwards compatible-manner
> 
>        *  Ther are 1 or more bug fixes which have been made in a
>           backwards-compatible manner
> 
>    As explained in Appendix A.3.2, while programatically determining a
>    semantic version is possible using the pyang utility, human overisght
>    is highly recommended because of some special cases which can not be
>    detected by pyang.  Therefore, a model author SHOULD use both means
>    to determine a model's semantic version.
> 
> 8.2.  Guidelines to YANG model clients
> 
> 9.  Semantic Version Extension YANG Module
> 
>    The extension and related ietf-yang-library changes described in this
>    module are defined in the YANG module below.
> 
>    TODO - Define a separate type (in a ietf-semver-types.yang) file for
>    the YANG semver field definition.  It would be useful for the YANG
>    library augmentation, and possibly in the packages definition if that
>    work progresses.
> 
>    TODO - Update the semantic version text to update the main definition
>    in this document
> 
> <CODE BEGINS> file "ietf-semver@2018-04-05.yang"
>   module ietf-semver {
>     yang-version 1.1;
>     namespace "urn:ietf:params:xml:ns:yang:ietf-semver";
>     prefix semver;
> 
>     import ietf-yang-library {
>       prefix yanglib;
>     }
> 
>     organization
>       "IETF NETMOD (Network Modeling) Working Group";
>     contact
>       "WG Web:   <https://datatracker.ietf.org/wg/netmod/>
>        WG List:  <mailto:netmod@ietf.org>
> 
>        Author:   Benoit Claise
>                  <mailto:bclaise@cisco.com>
> 
>        Author:   Joe Clarke
>                  <mailto:jclarke@cisco.com>
> 
> 
> 
> Claise, et al.            Expires July 18, 2019                [Page 15]
> 
> Internet-Draft                YANG Catalog                  January 2019
> 
> 
>        Author:   Kevin D'Souza
>                  <mailto:kd6913@att.com>
> 
>        Author:   Balazs Lengyel
>                  <mailto:balazs.lengyel@ericsson.com>";
>     description
>       "This module contains a definition for a YANG 1.1 extension to
>        express the semantic version of YANG modules.";
> 
>     revision 2018-04-05 {
>       description
>         "* Properly import ietf-yang-library.
>          * Fix the name of module-semver => module-version.
>          * Fix regular expression syntax.
>          * Augment yang-library with booleans as to whether or not
>            deprecated and obsolete nodes are present.
>          * Add an extension to enable import by semantic version.
>          * Add an extension status-description to track deprecated
>            and obsolete reasons.
>          * Fix yang-library augments to use 7895bis.";
>       reference
>         "draft-clacla-netmod-yang-model-update:
>          New YANG Module Update Procedure";
>       semver:module-version "0.2.1";
>     }
>     revision 2017-12-15 {
>       description
>         "Initial revision.";
>       reference
>         "draft-clacla-netmod-yang-model-update:
>          New YANG Module Update Procedure";
>       semver:module-version "0.1.1";
>     }
> 
>     extension module-version {
>       argument semver;
>       description
>         "The version number for the module revision it is used in.
>          This is expressed as a semantic version string in the form:
>           x.y.z
>          where:
>           * x corresponds to the major version,
>           * y corresponds to a minor version,
>           * z corresponds to a patch version.
> 
>          A major version number of 0 indicates that this model is still
>          in development, and is potentially subject to change.
> 
> 
> 
> 
> Claise, et al.            Expires July 18, 2019                [Page 16]
> 
> Internet-Draft                YANG Catalog                  January 2019
> 
> 
>          Following a release of major version 1, all modules will
>          increment major revision number where backward incompatible
>          changes to the model are made.
> 
>          The minor version is changed when features are added to the
>          model that do not impact current clients use of the model.
>          When major version is stepped, the minor version is reset to 0.
> 
>          The patch-level version is incremented when non-feature changes
>          (such as bugfixes or clarifications to human-readable
>          descriptions that do not impact model functionality) are made
>          that maintain backward compatibility.
>          When major or minor version is stepped, the patch-level is
>          reset to 0.
> 
>          By comparing the module-version between two revisions of a
>          given module, one can know if different revisions are backward
>          compatible or not, as well as
>          whether or not new features have been added to a newer revision.
> 
>          If a module contains this extension it indicates that for this
>          module the updated status and update rules as this described in
>          RFC XXXX are used.
> 
>          The statement MUST only be a substatement of the revision statement.
>          Zero or one module-version statement is allowed per parent
>          statement. NO substatements are allowed.
>         ";
>       reference "I-D.clacla-netmod-yang-model-update : YANG Semantic Version";
>     }
> 
>     extension import-versions {
>       argument version-clause;
>       description
>         "This extension specifies an acceptable set of semantic versions of a given module
>          that may be imported.  The version-clause argument is specified in the following
>          format
> 
>          [\\[(]X[.Y[.Z]][-[X[.Y[.X]]][\\])]][,...]
> 
>          Where the first character MAY be a '[' or '(' to indicate at least inclusive and at least
>           exclusive (respectively).  If this is omitted, a full semantic version must be specified
>           and the import will only support this one version.
> 
>          The following version, if specified with a '[' or '(' indicates the lower bound.  This can
>           be a full semantic version or a MAJOR only or MAJOR.MINOR only.
> 
>          The '-', if specified, is a literal hyphen indicating a range will be specified.  If the second portion
> 
> 
> 
> Claise, et al.            Expires July 18, 2019                [Page 17]
> 
> Internet-Draft                YANG Catalog                  January 2019
> 
> 
>           of the import-versions clause is omitted, then there is no upper bound on what will be considered
>           an acceptable imported version.
> 
>          After the '-' the upper bound semantic version (or part thereof) follows.
>          After the upper bound version, one of ']' or ')' MUST follow to indicate whether this limit is inclusive
>           or exclusive of the upper bound respectively.
> 
>          Finally, a literal comma (',') MAY be specified with additional ranges.  Each range is taken as a logical
>           OR.
> 
>          The statement MUST only be a substatement of the import statement.  Zero or one
>          import-versions statement is allowed per import statement.  NO substatements are allowed.";
>       reference "I-D.clacla-netmod-yang-model-update : Import By Semantic Version";
>     }
> 
>     extension status-description {
>       argument description;
>       description
>         "Freeform text that describes why a given node has been deprecated or made obsolete.
>          This may point to other schema elements that can be used in lieu of the given node.
> 
>          This statement MUST only be used as a substatement of the status statement, and MUST
>          only be used when the status is deprecated or obsolete.  Zero or more status-description
>          statements are allowed per parent statement.  NO substatements are allowed.";
>       reference "I-D.clacla-netmod-yang-model-update : Deprecated and Obsolete Reasons";
>     }
> 
>     augment "/yanglib:yang-library/yanglib:module-set/yanglib:module" {
>       description
>         "Augmentations for the ietf-yang-library module to support semantic versioning.";
>       leaf module-version {
>         type string {
>           pattern '[0-9]+\.[0-9]+\.[0-9]+';
>         }
>         description
>           "The semantic version for this module in MAJOR.MINOR.PATCH format.  This version
>            must match the semver:module-version value in specific revision of the module
>            loaded in this module-set.";
>       }
>       leaf deprecated-nodes-present {
>         type boolean;
>         default "true";
>         description
>           "A boolean that indicates whether or not this server implements deprecated nodes.
>            The value of this leaf SHOULD be true; and if so, the server MUST implement nodes
>            within this module as they are documented.  If specific deprecated nodes are not
>            implemented as document, then they MUST be listed as deviations.  If a module does
>            not currently contain any deprecated nodes, then this leaf SHOULD be set to true.";
> 
> 
> 
> Claise, et al.            Expires July 18, 2019                [Page 18]
> 
> Internet-Draft                YANG Catalog                  January 2019
> 
> 
>       }
>       leaf obsolete-nodes-present {
>         type boolean;
>         default "false";
>         description
>           "A boolean that indicates whether or not this server implements obsolete nodes.
>            The value of this leaf SHOULD be false; and if so, the server MUST NOT implement
>            nodes within this module. If this leaf is true, then all nodes in this module MUST
>            be implemented as documented in the module.  Any variation of this MUST be listed as
>            deviations.  If a module does not currently contain any obsolete nodes, then this
>            leaf SHOULD be set to true.";
>       }
>     }
>   }
> <CODE ENDS>
> 
> 10.  Contributors
> 
>    o  Anees Shaikh, Google
> 
>    o  Rob Shakir, Google
> 
> 11.  Security Considerations
> 
>    The document does not define any new protocol or data model.  There
>    are no security impacts.
> 
> 12.  IANA Considerations
> 
> 12.1.  YANG Module Registrations
> 
>    The following YANG module is requested to be registred in the "IANA
>    Module Names" registry:
> 
>    The ietf-semver module:
> 
>    o  Name: ietf-semver
> 
>    o  XML Namespace: urn:ietf:params:xml:ns:yang:ietf-semver
> 
>    o  Prefix: semver
> 
>    o  Reference: [RFCXXXX]
> 
> 
> 
> 
> 
> 
> 
> 
> Claise, et al.            Expires July 18, 2019                [Page 19]
> 
> Internet-Draft                YANG Catalog                  January 2019
> 
> 
> 13.  References
> 
> 13.1.  Normative References
> 
>    [I-D.verdt-netmod-yang-versioning-reqs]
>               Clarke, J., "YANG Module Versioning Requirements", draft-
>               verdt-netmod-yang-versioning-reqs-02 (work in progress),
>               November 2018.
> 
>    [RFC7895]  Bierman, A., Bjorklund, M., and K. Watsen, "YANG Module
>               Library", RFC 7895, DOI 10.17487/RFC7895, June 2016,
>               <https://www.rfc-editor.org/info/rfc7895>.
> 
>    [RFC7950]  Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language",
>               RFC 7950, DOI 10.17487/RFC7950, August 2016,
>               <https://www.rfc-editor.org/info/rfc7950>.
> 
> 13.2.  Informative References
> 
>    [I-D.clacla-netmod-model-catalog]
>               Clarke, J. and B. Claise, "YANG module for
>               yangcatalog.org", draft-clacla-netmod-model-catalog-03
>               (work in progress), April 2018.
> 
>    [I-D.claise-semver]
>               Claise, B., Barnes, R., and J. Clarke, "Semantic
>               Versioning and Structure for IETF Specifications", draft-
>               claise-semver-02 (work in progress), January 2018.
> 
>    [I-D.ietf-netconf-rfc7895bis]
>               Bierman, A., Bjorklund, M., Schoenwaelder, J., Watsen, K.,
>               and R. Wilton, "YANG Library", draft-ietf-netconf-
>               rfc7895bis-07 (work in progress), October 2018.
> 
>    [I-D.openconfig-netmod-model-catalog]
>               Shaikh, A., Shakir, R., and K. D'Souza, "Catalog and
>               registry for YANG models", draft-openconfig-netmod-model-
>               catalog-02 (work in progress), March 2017.
> 
>    [openconfigsemver]
>               "Semantic Versioning for Openconfig Models",
>               <http://www.openconfig.net/docs/semver/>.
> 
>    [semver]   "Semantic Versioning 2.0.0", <https://www.semver.org>.
> 
>    [yangcatalog]
>               "YANG Catalog", <https://yangcatalog.org>.
> 
> 
> 
> 
> Claise, et al.            Expires July 18, 2019                [Page 20]
> 
> Internet-Draft                YANG Catalog                  January 2019
> 
> 
> Appendix A.  Appendix
> 
> A.1.  Open Issues: Requirements to be Addressed
> 
>    There are a few requirements of
>    [I-D.verdt-netmod-yang-versioning-reqs] still to be addressed.  These
>    include the following:
> 
>    o  A solution is required for client compatibility to address
>       requirements 3.1 and 3.2 from
>       [I-D.verdt-netmod-yang-versioning-reqs].  This could include
>       adding "module sets" support to ietf-yang-library where the client
>       can choose one set with which to use.
> 
>    o  A solution for instance data to satisfy requirement 5.3 of
>       [I-D.verdt-netmod-yang-versioning-reqs] is also required.
> 
>    o  While not mandatory, requirement 2.2 of
>       [I-D.verdt-netmod-yang-versioning-reqs] looks to provide a way to
>       determine, at the node level, whether or not changes have occurred
>       between revisions of a given YANG module.  This may require
>       application of semver at the node level.
> 
> A.2.  Open Issues
> 
>    Additionally, there are a few open issues to be discussed and
>    settled.  These include the following:
> 
>    o  Do we need a new version of YANG?
>       While eventually this will fold into a new version, the belief is
>       this solution can work with extensions alone with an update to the
>       [RFC7950] text concerning module updates.
> 
>    o  Should IETF/IANA officially generate derived semantic versions for
>       their own modules?  As they are the owner of the modules it should
>       be their responsibility, but how to document it?  Note that next
>       round of funding for the yangcatalog.org could help develop the
>       perfect derived-semantic-version toolset
> 
>    o  We could consider a new naming convention for module files.
>       Today, module files are named using a module@revision.yang
>       notation.  We could consider module%semver.yang or
>       module#version.yang variants.  Re-using the '@' for version is not
>       ideal, so another separator character should be used.  In this
>       manner, both version and revision could be used.
> 
> 
> 
> 
> 
> 
> Claise, et al.            Expires July 18, 2019                [Page 21]
> 
> Internet-Draft                YANG Catalog                  January 2019
> 
> 
> A.3.  Derived Semantic Version
> 
>    TODO - Ideally this text would move to a separate schema comparison
>    tool draft, but keep the text here until that draft has been started.
> 
> A.3.1.  The Derived Semantic Version
> 
>    If an explicitly defined semantic version is not available in the
>    YANG module, it is possible to algoritmically calculate a derived
>    semantic version.  This can be used for modules not containing a
>    definitive semantic-version as defined in this document or as a
>    starting value when specifying the definitive semantic-version.  Be
>    aware that this algorithm may sometimes incorrectly classify changes
>    between the categories non-compatible, compatible or error-
>    correction.
> 
> A.3.2.  Implementation Experience
> 
>    [yangcatalog] uses the pyang utility to calculate the derived-
>    semantic-version for all of the modules contained within the catalog.
>    [yangcatalog] contains many revisions of the same module in order to
>    provide its derived-semantic-version for module consumers to know
>    what has changed between revisions of the same module.
> 
>    Two distinct leafs in the YANG module
>    [I-D.clacla-netmod-model-catalog] contain this semver notation:
> 
>    o  the semantic-version leaf contains the value embedded within a
>       YANG module (if it is available).
> 
>    o  the derived-semantic-version leaf is established by examining the
>       the YANG module themselves.  As such derived-semantic-version only
>       takes syntax into account as opposed to the meaning of various
>       elements when it computes the semantic version.
> 
>    o  The algorithm used to produce the derived-semantic-version is as
>       follows:
> 
>       1.  Order all modules of the same name by revision from oldest to
>           newest.  Include module revisions that are not available, but
>           which are defined in the revision statements in one of the
>           available module versions.
> 
>       2.  If module A, revision N+1 has failed compilation, bump its
>           derived semantic MAJOR version.  For unavailable module
>           versions assume non-backward compatible changes were done.,
>           thus bump its derived semantic MAJOR version.
> 
> 
> 
> 
> Claise, et al.            Expires July 18, 2019                [Page 22]
> 
> Internet-Draft                YANG Catalog                  January 2019
> 
> 
>       3.  Else, run "pyang --check-update-from" on module A, revision N
>           and revision N+1 to see if backward-incompatible changes
>           exist.
> 
>       4.  If backward-incompatible changes exist, bump module A,
>           revision N+1's derived MAJOR semantic version.
> 
>       5.  If no backward-incompatible changes exist, compare the pyang
>           trees of module A, revision N and revision N+1.
> 
>       6.  If there are structural differences (e.g., new nodes), bump
>           module A, revision N+1's derived MINOR semantic version.
> 
>       7.  If no structural differences exist, bump module A, revision
>           N+1's derived PATCH semantic version.
> 
>    The pyang utility checks many of the points listed in section 11 of
>    [RFC7950] for known module incompatibilities.  While this approach is
>    a good way to programmatically obtain a semantic version number, it
>    does not address all cases whereby a major version number might need
>    to be increased.  For example, a node may have the same name and same
>    type, but its meaning may change from one revision of a module to
>    another.  This represents a semantic change that breaks backward
>    compatibility, but the above algorithm would not find it.  Therefore,
>    additional, sometimes manual, rigor must be done to ensure a proper
>    version is chosen for a given module revision.
> 
> Authors' Addresses
> 
>    Benoit Claise
>    Cisco Systems, Inc.
>    De Kleetlaan 6a b1
>    1831 Diegem
>    Belgium
> 
>    Phone: +32 2 704 5622
>    Email: bclaise@cisco.com
> 
> 
>    Joe Clarke
>    Cisco Systems, Inc.
>    7200-12 Kit Creek Rd
>    Research Triangle Park, North Carolina
>    United States of America
> 
>    Phone: +1-919-392-2867
>    Email: jclarke@cisco.com
> 
> 
> 
> 
> Claise, et al.            Expires July 18, 2019                [Page 23]
> 
> Internet-Draft                YANG Catalog                  January 2019
> 
> 
>    Balazs Lengyel
>    Ericsson
>    Magyar Tudosok Korutja
>    1117 Budapest
>    Hungary
> 
>    Phone: +36-70-330-7909
>    Email: balazs.lengyel@ericsson.com
> 
> 
>    Kevin D'Souza
>    AT&T
>    200 S. Laurel Ave
>    Middletown, NJ
>    United States of America
> 
>    Email: kd6913@att.com
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> Claise, et al.            Expires July 18, 2019                [Page 24]

> _______________________________________________
> Netmod-ver-dt mailing list
> Netmod-ver-dt@ietf.org
> https://urldefense.proofpoint.com/v2/url?u=https-3A__www.ietf.org_mailman_listinfo_netmod-2Dver-2Ddt&d=DwICAg&c=HAkYuh63rsuhr6Scbfh0UjBXeMK-ndb3voDTXcWzoCI&r=GIehbDpQlo31lSi6WbnEkA&m=U0k8OMx4cXKyTrHyJJJV5RxgE_semcHYBiYiszhHIbc&s=vO22FMOeYoRUoWlFFD3kFz8T9RGeR9n20Vo3_pr5GbQ&e=