Re: [netmod] Joint WGLC on "semver" and "module-versioning" drafts

Jürgen Schönwälder <jschoenwaelder@constructor.university> Mon, 12 June 2023 17:46 UTC

Return-Path: <jschoenwae@constructor.university>
X-Original-To: netmod@ietfa.amsl.com
Delivered-To: netmod@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 1E102C151094 for <netmod@ietfa.amsl.com>; Mon, 12 Jun 2023 10:46:32 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -6.898
X-Spam-Level:
X-Spam-Status: No, score=-6.898 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, RCVD_IN_DNSWL_HI=-5, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_PASS=-0.001, URIBL_DBL_BLOCKED_OPENDNS=0.001, URIBL_ZEN_BLOCKED_OPENDNS=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=jacobsuniversity.onmicrosoft.com
Received: from mail.ietf.org ([50.223.129.194]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id QR75UjviTtcE for <netmod@ietfa.amsl.com>; Mon, 12 Jun 2023 10:46:27 -0700 (PDT)
Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-db3eur04on0612.outbound.protection.outlook.com [IPv6:2a01:111:f400:fe0c::612]) (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 9A1F6C15106C for <netmod@ietf.org>; Mon, 12 Jun 2023 10:46:26 -0700 (PDT)
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=GM6NO//kM9Rk5vwNgBN4RtGbs22x2dV/rJVE2+Esf1MsKOVD7ph4eQeAbn7CfcbiYdFAbJkJ53qbmW69ZdFuoX7nPLNg5TuNZ95RSngGFGXOXwfV4y9oWEq7LU44LaaJmtuxWiDPWqnJqVhYA9OgeTet5Im3cPWL0rnPjkG0zAQFmkfKnOR5N+C4kUPzQ+/i8iipb0nMOCgS6F+4TcLMC/vLV7w1KBFpFiClIiTvSfYX+c5eoPU1HxB7udss4NspnR5nfLt0JQBVvmLTAvHS43ZfBRtcT61pdv/zbEERyDul0EzoYUY+JV87csaDa6BhOdLwAcP0buZ/UhmQjTsxSQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=ryCMoW+dvqpoN1/dgDzUuXMtQ4co1/zuXl4WIzIyvn4=; b=bgaXT22RpP/g6XNn5acDufDwmV6NNYJF/QB6B3uFXdWB455TvrIG5DiavFkt23BdzAagQR+Pw/sRU460Jpsaux/lMATaxuWCbnPfnR+p6THPdz7adfPfp8dIoN5hjzlJ9MPF11LaiSSkyn3OpZW0HX3GxLg2UmKWS1k0aqJ04Wfu0XykKB/xxpSTgvm57po3CuCWLj6vfE212nFiYnTVx0F+cAS9p2vnJ8Jx2d23CFvRwQ5q9LjzyvM5FKPqZdWq98ok6RXUF+NxMenFSQQHYfaxhA1zrfvrfYuAJovCgwaMB22jcPDwDPMV97+9JDwpvUTHxqPJS40SWMHXypeIlw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=constructor.university; dmarc=pass action=none header.from=constructor.university; dkim=pass header.d=constructor.university; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jacobsuniversity.onmicrosoft.com; s=selector2-jacobsuniversity-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ryCMoW+dvqpoN1/dgDzUuXMtQ4co1/zuXl4WIzIyvn4=; b=TKiUIQFIJveMo8PhQO0gXqR4SRVAzXXPpMDPX2osFXMn/tCgSri3Yiwb6tz5ZtemuaktfOUxjy0dA3RyB1PXWaQW4VdfklFK7h5op2dsYDFy/y8sA+S6MuoSU0c/OR808+bFI5qrsIKaZlrtf9Lfz4nFtxEkMh1sM/svPk/yY08=
Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=constructor.university;
Received: from GVXP190MB1991.EURP190.PROD.OUTLOOK.COM (2603:10a6:150:3::6) by PA4P190MB1037.EURP190.PROD.OUTLOOK.COM (2603:10a6:102:bd::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6477.29; Mon, 12 Jun 2023 17:46:18 +0000
Received: from GVXP190MB1991.EURP190.PROD.OUTLOOK.COM ([fe80::581b:1ec3:e89b:df50]) by GVXP190MB1991.EURP190.PROD.OUTLOOK.COM ([fe80::581b:1ec3:e89b:df50%6]) with mapi id 15.20.6455.030; Mon, 12 Jun 2023 17:46:18 +0000
Date: Mon, 12 Jun 2023 19:46:15 +0200
From: Jürgen Schönwälder <jschoenwaelder@constructor.university>
To: "Joe Clarke (jclarke)" <jclarke@cisco.com>
Cc: "netmod@ietf.org" <netmod@ietf.org>
Message-ID: <uyzkchhq6kvggoksec3kmdutrkaajlmaibiptl54lhlg6yryay@6iy7r2xt5mvj>
Reply-To: Jürgen Schönwälder <jschoenwaelder@constructor.university>
Mail-Followup-To: "Joe Clarke (jclarke)" <jclarke@cisco.com>, "netmod@ietf.org" <netmod@ietf.org>
References: <01000187fd8e0407-84bd7e7b-ede3-43d8-a9b3-5d4d0a915509-000000@email.amazonses.com> <jr5nepvspm3kpoxbv6dpxwi234ggjuthvckeerj2hb3g3qdc6x@4o42ngfbw72f> <BN9PR11MB5371007BA72D6E2D1D0AD7E9B854A@BN9PR11MB5371.namprd11.prod.outlook.com>
Content-Type: text/plain; charset="utf-8"
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <BN9PR11MB5371007BA72D6E2D1D0AD7E9B854A@BN9PR11MB5371.namprd11.prod.outlook.com>
X-ClientProxiedBy: AS4P191CA0009.EURP191.PROD.OUTLOOK.COM (2603:10a6:20b:5d5::16) To GVXP190MB1991.EURP190.PROD.OUTLOOK.COM (2603:10a6:150:3::6)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: GVXP190MB1991:EE_|PA4P190MB1037:EE_
X-MS-Office365-Filtering-Correlation-Id: 476f6318-f414-4d97-5c27-08db6b6ced0c
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info: T1olmc9ZEFNkJTi4wwurnWs7QQjQaCe3GUyy7giHigzLCA+tZLXM4f/F/+rF1jza5oZBj1XlgO5VkvLQM6+kj5cbed8Otqop0zp6HVnt1eZEi3ZNHb1TqawQf6/6+bccvQLrFcx8kB5boIxXBnrHzNyyf7uTESC0yxu1zfAkQa7o18WoVd7VI876GAIw9tob7wj7oEJWkSJLH01rVda4YKREgFUV+Dkz76kaN6hpUAKfOgckZuBuQ8KBNWja3rIGYz8GaFyw5EWVkTfXj4TZGHXQ8Yvt9pa5+K1stfYZ1DbR3dKhPwvQ+9TehsZKHAMaVWQqUbuSKfcS3DMUgoeV/dUoVb4cNRH0h8RGmzvE483paTG67j6aphDhQWK1aN/Y314GeaUkzNOqlqQuJZSiek4bpgwER1ma+sIhtSKQoRoVic8uIY7nDw28GL9AUJKAkJYRZQ57UFoWYDxbsdm1okH2tpyjKzuMa0zNIBvP/kL/4GkB7hXYLEk03XAF+ywBtz8OmjpzkcMyVk0l+r3+yiSty4Cwuhg4kG0iROytl55BVY0pI1h5Nzm23aZXwX7OiGJ0eDDKmULeMXgr/aINxn4zCh0a+O15e03AZcS2bSl1hKiJGFRPZVjgkDOR3lhj
X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:GVXP190MB1991.EURP190.PROD.OUTLOOK.COM; PTR:; CAT:NONE; SFS:(13230028)(7916004)(396003)(136003)(366004)(376002)(39860400002)(346002)(451199021)(5660300002)(52116002)(3450700001)(8936002)(8676002)(2906002)(66556008)(66946007)(66476007)(6666004)(6486002)(4326008)(9686003)(26005)(6512007)(6506007)(786003)(6916009)(41300700001)(316002)(186003)(66574015)(83380400001)(33716001)(478600001)(40140700001)(85202003)(41320700001)(38100700002)(85182001)(38350700002)(46492015); DIR:OUT; SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0: Li4qoZ5+HaRRcSIkWZmJ8AB1wLiSpkRQpyc4oWSThi3lRYv1/k/t7xLpraiSi/DAoCBw0MsmJh7in5bTjxgDkX82D6KU2MN6usJfBs8G04HwxTDzRtWCh8GQCW09is22sn3y2W3DXEQZKejAdyQ7E34mBBl0srjAITddfZjHcjTeTOUN7dnIMExeRwmujYZrpRiPPVVwrioIby3TLKBxgXt6RUjyb7r09ue+y6ghzuvnOOZw01d6u3XQIlONa7rKgifJerkV//H65iUlI5H9ygxs8u+hMyHAnDswZ/xuaYij+bSGU0KK+t+z+qEcNHFqJKen1gvLbl/HXfv/6e5GOPV2mV4a0JDQ23RboKV0/dV1DO7oZTxZNIHAt0LSly6Uxw4hZDfzZ4iSTI3UoZKWqf+ar0DQuuUJST+2TLjSxqf1lsDNQX6huruwvpFg914ZdlNewPfBJj/VoL29rQOMAi6M7U28Cdyd5ppqB8a2phwTLTRJwOyobsYxz18jk2UOIxpBsERe+pkhvsG9pwno4z19iH/u2UHG0mgL5QDZp4rbM8Devn8fseVpdshZuR2bPrkJRipvAwhSq4NPcCjKwkLat3o43bM5c/hnPlGrxMzzg+5bj6RpH9/OMQW+iRvWdLuhBdxkO/uc7o1OYRwjac5dOYMZ9GUajRrqQ/5HvAmGQRwzPVy3Ei0HouwmszVPuyTQiZnVs/Y8jNMHLy0fFsf9IRK9+q0QYuLSLIe/DTKzHfFb6LketY9x00eSrdJCD143y3xRdE9Ou77uxKJrJ7w2OgEfIfElY/CIjKyRVI2cAkEqfTXku/Z9QQ+DBbYrm1iglQui8EHJmmLInczgcRS+bD9Ir0S3KUvIOkISXBVUOk0S3FwPUcSnls6Ih6y92H98lJYu6989NmRaQo13qg2JNBjPhDdrdZVcrfBausH1flTGUGT8GABde8V0UvvC+0O4FRL7imUouFDkCJPg6hLhOJNwrzqv+k+yJQZaqY9rH0aSVp67kZZSzdiUOqlNg9NSXk8PDElBsI7y40TMIxlH7s3WOAPnRBcQ2ekitNKnc2qg0bIO0X9ey4PCruZej/M7czZdkFVrW/ghcVZrYbFSXZgarJ3pWWXk0w19TK+YYfgkFB6qjdjtYPlPq/So7WfPwv8YBp00hWrMfKru62ZSRQkl6ijeWUda+iUnclJkVnsbW1roZwkL4EGWbW1LFRrngS+pkWL5Bw5viRanKIyzBi6TFRY+8BgsrGah9B9JnKS1Ns8Ao9MqOyhddJFJJZRY749K5yIGPLE+w3TtLxcwPtXy+nrby//iv0gVczQwPdKfmdan0pdxdIXD0t0hC+ICIghX7ZNJWQmowiryftKB+HOC9edPrCCUrgDY7pexfOWhfQgaOSrmn3WkT9W7aLWQ8gUd/q3vbcNzZbPaUlldXTiW8BeBk9TsGX+6/jxPnqAlF84knFaj4QFohWHbtm8xzNqaAEfi1MEsHq44tpMeoI7if25GABVyTYYXYkHPEJZtlZa7f2UIe8aM4dHJ5DFCizElw+UJtcFitOGR1/gEgIUpruZvis5ys/u3qBU1MAk2HdqeDqjjuwXAXT+v/KrRWllsDBQY0w3UxirF9Ds+/D/41sXuD1lrBBYe3So=
X-OriginatorOrg: constructor.university
X-MS-Exchange-CrossTenant-Network-Message-Id: 476f6318-f414-4d97-5c27-08db6b6ced0c
X-MS-Exchange-CrossTenant-AuthSource: GVXP190MB1991.EURP190.PROD.OUTLOOK.COM
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Jun 2023 17:46:18.3607 (UTC)
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
X-MS-Exchange-CrossTenant-Id: f78e973e-5c0b-4ab8-bbd7-9887c95a8ebd
X-MS-Exchange-CrossTenant-MailboxType: HOSTED
X-MS-Exchange-CrossTenant-UserPrincipalName: FxyLiCCroANOijJIWuP5kdZeFjkpS6uQVjgUGAU11PeSqSjvJKUF2cb/IMNcNniYXvpl9f5gjmZGps/+0cOpmUYo7JinuV4qHMEOJLshpNY=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA4P190MB1037
Archived-At: <https://mailarchive.ietf.org/arch/msg/netmod/j0YI72_ciS7ovCVH3RsSA0MyjK4>
Subject: Re: [netmod] Joint WGLC on "semver" and "module-versioning" drafts
X-BeenThere: netmod@ietf.org
X-Mailman-Version: 2.1.39
Precedence: list
List-Id: NETMOD WG list <netmod.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/netmod>, <mailto:netmod-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/netmod/>
List-Post: <mailto:netmod@ietf.org>
List-Help: <mailto:netmod-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/netmod>, <mailto:netmod-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 12 Jun 2023 17:46:32 -0000

On Mon, Jun 12, 2023 at 03:45:41PM +0000, Joe Clarke (jclarke) wrote:
> Thanks for the detailed review, Jürgen.  See below on responses concerning YANG Semver.
> 
> As for the discussion on YANG artifact “equivalence” I recall we discussed this a bit in meetings and amongst the authors.  I don’t remember all the points but it boiled down to when the revision changes, the revision-label changes.  So if, for example, a module is extracted or produced with extra newlines that module is still equivalent to another module with the same revision/revision-label.  Text in Section 1 states that when a new revision of a module… changes; however, the text in Section 3 might be adding ambiguity here, and we could make that clearer with respect to modules.  The same attention can be applied to the versioning draft.
>

You need to settle what you want. The mailing list discussion is not
consistent with what you wrote and what the document says.

> Comments on draft-ietf-netmod-yang-semver-11:
> 
> - Is the end of the introduction telling me that the SemVer 2.0.0
>   rules change in non-backwards compatible ways without the version
>   number changing?
> 
> [JMC] Yes.  We raised this a few meetings back when we learned that the SemVer 2.0.0 spec (using git to look at history) had changed in NBC ways.  We therefore anchored to a revision in time that corresponded to the rules at the time on their web site.
>

What good is SemVer is the SemVer people do not follow it?
 
> - The term 'YANG artifact' is imported from the packages draft, which
>   has expired. I pulled out the expired version 03, I could not find a
>   definition in there either.
> 
> [JMC] YANG artifact is “defined” in the YANG Semver draft, but uses packages as a type of artifact to go along with modules and submodules.  I admit that the definition here is weak (definition by example only), and I can improve that.
>

You need to import it from where it is defined.

> - SemVer and YANG Semver look very similar and perhaps too similar or
>   not similar enough. I do not have a good proposal, just noting a
>   possible writing issue that we will have with Semver and SemVer.
>   Why does 'Semver' and  'YANG SemVer' not do the job?
> 
> [JMC] There are clear differences in YANG Semver when compared to the SemVer 2.0.0 spec that the document references.  The difference in case is because SemVer 2.0.0 refers to itself that way, and using “YANG Semver” (without the camel case) seemed like enough of a textual differentiator when reading the document.

For me, this is too obscure. I fear people will mess this detail up.
 
> - Section 3.1 starts with a statement that SemVer and YANG Semver are
>   'completely compatible'. While I started wondering what the
>   difference between 'compatible' and 'completely compatible' might
>   be, I was more confused to read this statement upfront, i.e., before
>   I even get told what YANG Semver is. Perhaps first define what YANG
>   Semver is and then discuss its relationship to SemVer?
> 
> [JMC] Fair enough.  The adverb there is also unneeded.

But did you not just explain that they are not the same?
 
> - As already mentioned above, my take is that a 'versioning scheme'
>   should use exactly one 'revision label scheme' and it should have
>   specific 'module update rules' supporting the "versioning scheme".
>   This does not seem to be the model that the draft authors use and I
>   am a bit confused what their model is. In other words, I see
> 
>   YANG Semantic Versioning consists of
>        -> YANG Semantic Version Module Update Rules
>        -> YANG Semantic Version Revision Label Scheme
>        -> YANG Semantic Version Import Rules
>        -> NC/RC/... version selection protocol mechanisms needed
> 
>   YANG Traditional Versioning consists of
>        -> YANG's Traditional Module Update Rules
>        -> YANG's Traditional Module Label Scheme (revision dates)
>        -> YANG's Traditional Module Import Rules (lacking import by min revision)
>        -> no specific protocol mechanisms needed to support transitions
> 
>   It seems we have not factored out an interface for plugging
>   additional versioning models into YANG and the protocols providing
>   access to YANG-defined data.
> 
> [JMC] The original intent was that different YANG artifact producers might want different schemes.  Admittedly, examples other than YANG Semver were mainly vendor-centric (e.g., codenames or software revisions).  I think it’s reasonable to have the conversation as to whether or not this flexibility is really needed.
>

Do you want multiple versioning models or multiple writing styles for
labels of the same versioning model? This is a fundamental difference.

> - Why do we need the _COMPATIBLE extension of SemVer? It would be nice
>   to explain this more clearly, the best bit of explanation I found
>   seems to be in situations where the next major version number has
>   already been taken. But then SemVer does not support branching in
>   general, why do we need a bit of this via the _COMPATIBLE extension?
>   Did anyone suggest this addition to the SemVer people and what was
>   their reaction, something they would consider adding to SemVer or
>   more reservation about this being a proper solution?
> 
> [JMC] We need _COMPATIBLE for the reason you point out: e.g., an author has produced a module with 1.0.0 and 2.0.0 revision-labels, and a consumer needs a new feature ported to the 1.X branch.  In this case the author would release 1.0.1_COMPATIBLE.
>
>
> [JMC] To my knowledge we did not raise this to the SemVer people explicitly, though someone from that camp did review this draft.  He admitted to being confused in an earlier version of the text, specifically with _COMPATIBLE.  We added more text to clarify its use, but perhaps it’s not clear enough?
> 

Yes, but that is not what SemVer supports. So its either SemVer or
something else. And you can't support full development on branches
either. It looks like a half baked addon. Those who need to support
branches will likely not be happy with it, the others do not need it.
I like to see a strong reason why departure from SemVer is desirable
and sufficient for the industry needs.


> - I prefer to have non-backwards compatible changes marked and
>   explained in the modules instead of relying on some schema
>   comparison algorithm.
> 
> [JMC] IMHO, the algorithm is useful in addition to any per-module notation as the tooling can provide a clear, consolidated report of the overall compatibility.
>

Sure, years ago I implemented smidiff, but then assuming that every
reader has the proper tools is likely wrong. And while tools can spot
differences, they lack the ability to give explanations or advice how
to adapt to changes. NBC changes deserve to be documented where they
take place. Tooling can spot missing documentation.
 
> - Does it make sense to have an example Package Using YANG Semver in
>   this document given that YANG packages is not moving along with this
>   document? Should the examples move to the appendix to make it
>   clearer that they are just examples and non-normative?
> 
> [JMC] Fair point.  I agree.  I think it makes sense to move this.
> 
> 
> - The import discussion ignores what happens if future versions are
>   not providing the symbols anymore expected by an import. See my
>   previous comment that compatibility may require ranges of version
>   numbers, revision-or-derived is a half-baked solution.
> 
> [JMC] We initially had a very complex set of import rules (inclusive, exclusive, ranges, etc.), and it was deemed overkill.  Based on other comments we received, we softened the import rules to be more advisory.
>

To me, advisory import rules are non-sense. A parser is not evaluating
advise, it needs clear rules and different parsers better behave the
same. Again, since I can remove symbols, there needs to be a way to
express that a certain import only works up to a certain revision.
Ignoring this means the solution is incomplete.

> 
> - If we really want to support multiple revision label schemes, then
>   creating a typedef 'version' which is YANG Semver specific may be a
>   bit to simplistic. We would likely need a type that is extensible
>   and qualified by a yang-semver identity, no? I am not asking for
>   this, I rather question whether we really need to have open ended
>   label schemes.
> 
> [JMC] Worth discussing again.
> 
> 
> - Reference [openconfigsemver] resolves to an empty page (tried two
>   browsers). Do you mean <https://www.openconfig.net/docs/guides/semver/>?
> 
> [JMC]  Thanks.  Will fix.
> 
> Joe

/js

-- 
Jürgen Schönwälder              Constructor University Bremen gGmbH
Phone: +49 421 200 3587         Campus Ring 1 | 28759 Bremen | Germany
Fax:   +49 421 200 3103         <https://constructor.university/>