Hi Tom, > -----Original Message----- > From: tom petch <[email protected]> > Sent: 26 June 2023 12:57 > To: Rob Wilton (rwilton) <[email protected]>; Martin Björklund > <[email protected]> > Cc: [email protected] > Subject: Re: [netmod] Joint WGLC on "semver" and "module-versioning" drafts > > From: netmod <[email protected]> on behalf of Rob Wilton (rwilton) > <[email protected]> > Sent: 13 June 2023 17:25 > > Hi Martin, > > > -----Original Message----- > > From: netmod <[email protected]> On Behalf Of Martin Björklund > > Sent: 07 June 2023 08:22 > > > > But the two drafts go way beyond fixing the problem your three > > examples illustrate. > [Rob Wilton (rwilton)] > > The actual goals of this work (i.e., the set of drafts) is aiming to address > the > requirements stated here: https://datatracker.ietf.org/doc/html/draft-ietf- > netmod-yang-versioning-reqs-07. Although never taken to RFC, I believe was > effectively last called and achieved WG consensus for the NETMOD WG. > Hopefully the chairs can chime in and keep me honest if I'm wrong on this > point. > > <tp> > May be or may be not but there is no such I-D in the datatracker for NETMOD > nor can it be downloaded from the FTP site so effectively there are no > requirements to justify this substantial change. Based on what I can access, > the > module versioning I-D does not look like a good idea. [Rob Wilton (rwilton)]
Are you saying that you are unable to access the link above, i.e., https://datatracker.ietf.org/doc/html/draft-ietf-netmod-yang-versioning-reqs-07 Or are you saying that because this is currently an expired draft it isn't valid, in which case, that would seem to be trivial to fix? Regards, Rob > > Tom Petch > > The shape/structure/content of the drafts is very similar to when these > documents were adopted in March 2020: > > Your comments on these document at adoption time are here > (https://mailarchive.ietf.org/arch/msg/netmod/r5TD0NDNgUbtX9EHZfB5hJJctN > 8/). From that email, it is clear that you didn't support the YANG Semver > scheme, but my reading is that you were broadly supportive of the YANG > module versioning draft. > > Here are your review comments of the YANG module versioning draft at > adoption time: > https://mailarchive.ietf.org/arch/msg/netmod/MTGomxcdyNOmB7mgsFhItLKN > Jgk/ > > Here is a thread where you are discussing supporting different revision label > schemes: > https://mailarchive.ietf.org/arch/msg/netmod/cEBiZKUSk0n7BeFwdiyaejc_Tsg/ > > I appreciate that everyone has the right to change their mind at any point, > but > as stated previously, I don't think that the shape of the solution has really > changed substantially since they were adopted. > > > If the goal is to indicate that non-backwards > > compatible changes have occured, a single new extension statement > > could solve that. (As I probably have stated before, personally I > > don't think this is necessary). > > That is one goal. Another is to acknowledge that non-backwards-compatible > changes will occur, potentially even on branches. Another is to align with > the > versioning scheme that is being broadly used by the industry (but with > extensions to support a branched history). > > > > > > Apart from the updates to RFC 7950 section 11, I am mostly concerned > > about the additional complexity the "pluggable" revision-label scheme > > brings. > [Rob Wilton (rwilton)] > > It feels like we are somewhat going in circles: > > 1.The original proposal was to embed regular Semver 2.0.0 for the version > numbers. > > 2. That scheme was extended to what is being labelled as "Yang Semver" > because regular Semver didn't support some level of branching that the > vendors require to support customers on older releases over a much longer > time period. Semver 2.0.0 works best when the updates are always committed > to the head of a linear sequence of versions, and if a bug needs to be fixed > in > an older version then the user is forced to migrate to the latest version. > > 3. If I recall correctly, you didn't like YANG Semver (and possibly not even > Semver), and if I also recall correctly from a conversation then I think that > it is > because you envisaged more advanced branching schemes and perhaps a > version number scheme that follows branch history (and hence cannot also > contain semantic meaning). Based on that feedback, and an in-person side > meeting, we moved to a revision label scheme, an nbc-marker, and > standardizing a versioning scheme to fit into the revision-label scheme > separately. This was all in place when these documents were adopted. > > Based on those who are or have participated in the weekly calls, I also > believe > that the solution has reasonable industry support: > - Representatives from Cisco, Ericsson, Huawei, Juniper, Nokia have all > participated in the calls at various stages. > - Other SDOs (3GPP at least, and ITU?) are waiting for this work. > - OpenConfig is using Semver and has been for years. I don't know if they > will > adopt IETF's particular solution, but I do think that we would at least be > fairly > aligned. > > I want to find a way that we can just get this work finished and published so > that the authors and WG can move on to other, hopefully more interesting, > stuff. > > Is the solution perfect? No, but engineering solutions never are. > > Is the solution good enough? I believe so, yes. > > Regards, > Rob > > // As an author and participant in this work for 5+ years. > > > > > > > > > > > > /martin > > > > > > > > > > "Rob Wilton \(rwilton\)" <[email protected]> wrote: > > > I'm wondering whether we are in the realm of missing the bigger > > > picture here, or perfection being the enemy of good enough. > > > > > > My first example: > > > > > > The sedate WG (https://datatracker.ietf.org/wg/sedate/about/) has > > > recently been rechartered to respecify the meaning of the date string > > > in a non-backwards compatible way. Yes, this same date string format > > > that is very widely implemented and deployed. I originally had a > > > block on the new charter until it was pointed out that the IETF > > > specification was being updated because it was inconsistent with the > > > ISO time specification and inconsistent with how the date string was > > > actually being used by implementations. I.e., the specification is > > > being updated to reflect reality. I.e., fixing the specification in a > > > non-backwards compatible way ends up being pragmatically the right > > > thing to do (and this is entirely allowed by the IETF process). > > > > > > Ideally, the date-and-time typedef in YANG would also be updated to > > > match the update to the definition in RFC 3339 by SEDATE. But this is > > > clearly not compliant with section 11 of RFC 7950 (because the value > > > space of allowed values is being narrowed). The only available choice > > > would be to define a new date-and-time-2 typedef which modules could > > > then update to. Of course, you cannot update the existing leaves to > > > use the new date-and-time-2 typedef because that also violates section > > > 11. So, you end up with two datetime leaves everywhere the > > > date-and-time typedef is used, hopefully with one deprecated (and at > > > some point, obsoleted). Of course, defining the new datetime version > > > leaves could also break any loosely related modules that may have > > > xpath expressions dependent on that date-time leaf (that the updating > > > module author may not even know about) which would need to be updated > > > to depend on either of the leaves. I also don't think that RFC 7950 > > > is clear about whether deprecated leaves must be implemented by all > > > implementations or not, so realistically clients will need to handle > > > setting either (or perhaps in some cases, both) of the datetime > > > leaves, depending on implementation, probably with a different mix > > > across modules (in vast stages of being updated). What happens if > > > some instances of those datetime leaves are mandatory configuration > > > and become obsolete? Is a client required to set it or not, the > > > pragmatic answer being that again RFC 7950 is unclear and again this > > > will likely be implementation dependent. What about if some of those > > > datetime leaves are list keys? I believe that the only solution that > > > RFC 7950 allows for would be to duplicate the list, deprecating the > > > old one, again requiring updates to all augmenting modules, and > > > corresponding impact and churn on clients and servers. > > > > > > I suspect that OpenConfig may also have a date-and-time typedef. I > > > can be certain about how they would handle this same issue - they will > > > just update the definition. Some clients/servers may have minor > > > impacts when they update to a new version of the model, but the impact > > > and effort required is minimal, and I think several orders of > > > magnitude less then the potential resultant churn than would happen by > > > strictly following the RFC 7950 section 11 rules. > > > > > > Some may argue that I'm not being pragmatic, and that this could just > > > be handled as a bugfix, changing the existing type. This is one of > > > the key things that the YANG versioning is trying to accomplish and > > > allow. It isn't aiming to say that module designers have carte blanch > > > to change modules in non-backwards compatible ways. Instead, it is > > > saying that in some cases, the pragmatic solution is to knowingly > > > break the RFC 7950 rules and make a breaking change because that > > > causes less impact. Further, a key aim of the versioning work is that > > > it is much better to be explicit that a breaking change has occurred > > > such that a client can easily be warned of that change and take any > > > mitigation necessary - which in the datetime instance above, is quite > > > possibly that no mitigation is required at all. > > > > > > Finally, I will note that rfc-6691-bis contains a change to the > > > datetime definition that is not backwards compatible with the existing > > > definition because the semantics of the leaf are being redefined. > > > > > > > > > A somewhat similar second example: > > > > > > The YANGs IP address type handling of zone information is very similar > > > to my first issue, where OpenConfig came to the pragmatic conclusion > > > that (in their models) 100% of the use cases of IP addresses only use > > > the numeric form without zone identifiers, and hence when someone sees > > > the typedef ip_address, this is what they are thinking of, so they > > > just pragmatically updated their definition of ip_address type. > > > > > > Somewhat related to this, I will note that rfc-6691-bis contains a > > > change to the ipv4-address and ipv6-address regex definition that is > > > not backwards compatible with the existing definition (it narrows the > > > valuespace for zone-ids restricting it to ASCII letters and digits > > > whereas previously it allowed for any language letters or digit > > > characters). I believe that this change is not strictly compatible > > > with RFC 7950 section 11, but I still think that this is the > > > pragmatically right change to make without introducing a new set of IP > > > address types, despite the fact that it could hypothetically break > > > some clients/servers, and we have no way of knowing in advance if that > > > will happen. > > > > > > > > > A third consideration: > > > > > > Yesterday, Jeff and Mahesh presented in a NETMOD interim on their > > > learnings from trying to write the IETF BGP model. One of their > > > outcomes is that they think that some of the other models recently > > > standardized by the IETF don't interoperate well with the BGP model > > > and will need to be revised. I've no idea whether those changes can > > > all be made cleanly in a backwards compatible way, but I suspect not. > > > Hence, my concern here is that the IETF doesn't really have a great > > > path to getting a viable set of YANG models that work together, > > > because just publishing modules working in isolation doesn't solve the > > > industry problems. > > > > > > Because lots of the IETF YANG models have been written without a lot > > > of implementation experience (chicken and egg problem), often my > > > people who know the protocols but are not experts on YANG, means that > > > we can be sure that there are likely to be many bugs and flaws in the > > > YANG module RFCs that will need to be fixed or improved. I would > > > expect that some of these cannot be pragmatically fixed in a backwards > > > compatible way. > > > > > > --- > > > > > > My interpretation of the recent last call review comments is the > > > suggestion that we pivot to find a fundamentally different solution or > > > approach to solving this problem as an RFC7950bis. I believe that > > > would be a mistake. > > > > > > In summary, a group of participants have been diligently working on > > > this problem space for 5+ years. > > > > > > We have had a design team working on this area, and that solution was > > > then adopted by the WG. The authors and interested individuals > > > working on this area has presented updated drafts and updates to the > > > work at every IETF meeting for the last, 4+ years. Feedback at the > > > various stages/reviews/etc has always been considered, the authors > > > meetings have always been open, and I don't believe that the solution > > > drafts being taken to WG LC are architecturally significantly > > > different from the direction agreed during WG adoption of the > > > documents, although I do think that the documents are much improved > > > based on the feedback received. > > > > > > I also appreciate that Juergen has always publicly stated that this > > > work should be done as an update to the YANG language, but my > > > recollection was that he was in the rough on this issue, i.e., during > > > WG adoption, and since, at least until this IETF WG LC review. > > > > > > Hence, my concern, as an AD, is that if, after 5 years, the WG now > > > wants to take a fundamentally different path to standardizing this > > > work then I have concerns that the NETMOD WG isn't really functioning > > > properly and cohesively as a WG, and I'm very concerned that we won't > > > find any viable way forward for this work. I doubt that it will be > > > possible to get any quick consensus by opening up RFC 7950. We may > > > also find that the individuals who have invested a significant amount > > > of time and effort on this work don't have the desire or energy to > > > start from scratch again, when they have a solution that is good > > > enough for their needs. > > > > > > If I understand correctly, the fundamental objection to the module > > > versioning draft is around the updates to section 11 of RFC 7950, > > > which effectively state that changes MUST be backwards compatible, > > > whereas this draft states SHOULD be backwards compatible, without a > > > change to the YANG version number. Is that correct? > > > > > > If the existing deployment and evolution of YANG modules among > > > vendors, OpenConfig, IETF, and other SDOs strictly followed the rules > > > in RFC 7950 then I would probably agree that an update from YANG 1.1 > > > to YANG 1.2 is needed. But I think that the reality is that tools > > > must handle non-backwards compatible changes frequently happening in > > > YANG 1.0 (OpenConfig) and YANG 1.1 YANG modules anyway. I.e., I don't > > > believe that the "YANG 1.1 no breaking change contract" is being > > > widely honoured anyway, and instead is being treated as a goal or > > > aspiration. What these documents attempt to do is to move YANG module > > > evolution from what we currently have now where clients don't have any > > > way of really knowing how a module has evolved and whether they are > > > impacted to one that they do, and as part of that process they are > > > aiming to update the YANG versioning rules to better reflect how is it > > > being deployed and used. > > > > > > Hence, as am author, I still of the opinion that the best pragmatic > > > path forward is to try and get these documents to a shape where they > > > achieve rough consensus and are acceptable to the WG to be published > > > now, in the short term, as a good enough solution. After that point, > > > then I think that it would be great for some folks to form an idea on > > > a what YANG 1.2/2.0 could look like, but I think that coupling these > > > goals together would be a mistake. > > > > > > Regards, > > > Rob > > > > > > // Who doesn't really know which hat he is wearing for this comment, > > > but is only trying to do the right thing for the wider industry ... > > > > > > > > > > -----Original Message----- > > > > From: netmod <[email protected]> On Behalf Of Jürgen > > Schönwälder > > > > Sent: 06 June 2023 06:07 > > > > To: Martin Björklund <[email protected]> > > > > Cc: [email protected] > > > > Subject: Re: [netmod] Joint WGLC on "semver" and "module-versioning" > > > > drafts > > > > > > > > On Mon, Jun 05, 2023 at 10:32:51PM +0200, Martin Björklund wrote: > > > > > > > > > > > > If the goal is to produce YANG 1.2 which (i) integrates semantic > > > > > > versioning into YANG and (ii) fixes known bugs in YANG 1.1 and (iii) > > > > > > does not add any other new features, then having agreement on such > a > > > > > > statement will help to steer the process. > > > > > > > > > > I hope that (i) doesn't happen. I think it is the proposed changes in > > > > > draft-ietf-netmod-yang-module-versioning that require a new YANG > > > > > version. If this new YANG version allows for other versioning schemes > > > > > than revision-date, then we can keep the modified semver scheme > > > > > outside the core document. > > > > > > > > > > > > > I consider the module update rules a part of a versioning model. The > > > > current update rules were written to support the current versioning > > > > model. If we want to support multiple versioning models, then we have > > > > to refactor the update rules out of the YANG language specification > > > > into separate versioning specifications, i.e., traditional YANG > > > > versioning and the new semver versioning. There are some language > > > > mechanisms (like the import statement), that have to be flexible > > > > enough to support multiple versioning schemes. > > > > > > > > Is it worth factoring the versioning model out of the language? I > > > > guess the opinions vary widely on this, depending on the dynamics of > > > > the software environment people are working in. > > > > > > > > /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/> > > > > > > > > _______________________________________________ > > > > netmod mailing list > > > > [email protected] > > > > https://www.ietf.org/mailman/listinfo/netmod > > > _______________________________________________ > > > netmod mailing list > > > [email protected] > > > https://www.ietf.org/mailman/listinfo/netmod > > _______________________________________________ > > netmod mailing list > > [email protected] > > https://www.ietf.org/mailman/listinfo/netmod > _______________________________________________ > netmod mailing list > [email protected] > https://www.ietf.org/mailman/listinfo/netmod _______________________________________________ netmod mailing list [email protected] https://www.ietf.org/mailman/listinfo/netmod
