OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.


Help: OASIS Mailing Lists Help | MarkMail Help

security-services message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]

Subject: RE: [security-services] versioning

> I've gotten confused on versioning.

Unlike me, right. ;-)

> It seems to me that namespaces are schema versioning and the 
> major/minor message versioning is for application versioning, 
> and that one needs both. To date we've 
> often overloaded namespace to also mean semantic versioning.

I'd pretty much agree with that, but I think it's a common convention that schema versioning == namespace, as opposed to a hard and
fast rule. Namespaces predate schemas, remember, and why do they have a schema version attribute in XML Schema? So, muddy at best.

> 1. major and minor version are conveyed in the message

For a specific kind of version, something I call "message version" or perhaps sometimes "protocol version". I think it's useful to
be clear about the different versions we talk about.

> 2. when a major schema change is made the XML namespace is 
> revised as well as the major version, but when the major 
> version changes the namespace need not change if the schema 
> has not had major changes.

That sounds right to me. Technically one could consider every namespace to have its own message versioning sequence (i.e. you could
start over at 1.0 again), not that I think that's a good idea.

> Major schema changes requiring a namespace change:
> - add a required element or attribute to an existing type. 
> (regardless of whether the schema was open with any)
> - Remove an existing element or attribute
> - Redefine a simple type, other than restriction of range

Again, sounds about right.

> Although I understand the goal of minimizing schema changes 
> to support minor versioning, wouldn't a namespace change be 
> required to enable a validating parser to use the correct 
> schema to validate changes such as adding new global elements 
> or adding optional elements/attributes to existing types as well?

Not unless you assume that once you publish a schema, it has to remain frozen for all time. Many people assume that, and it may be
that commercial practices dictate that this be so in the context of something like SAML. I merely contend that's not the obvious
intent of the XML Schema specification, and XML in general. Languages evolve, IMHO, and not just by changing the name from English
to English2.

I can't argue that on behalf of the world, so I'm basically stating my opinion, that I ought to be able to plug the changed schema
into my product with a tiny patch, change no code, and become forward compatible, if I choose to do that. If I can't get away
without changing the code, then either the schema change was not forward compatible, or I have a bug. Again, that's just my opinion.

Also, if you look at the kinds of effects that adding new globals has, you'll see that there's no real difference between adding
them in the same namespace or in a new one. Either way the old code won't validate them. So why change the namespace?

A perfect example is the new SSOQuery I proposed. There's no way any existing SAML product would be expected to process that, and no
sender would expect one to, so why need it be defined in a new namespace? To change the error message?

> If a namespace is needed to validate (not always performed) 
> couldn't a receiver validate against an acceptable schema as 
> stated in a message (different messages could have different 
> namespaces),  while using major/minor message versions for 
> semantic understanding?

Sure, but...

> Thus a receiver would use the namespace to validate the 
> schema, message version (major.minor) to ensure use of the 
> correct namespaces and also to manage correct semantics. In 
> this case a namespace change might not require a major version change.

This is still a major change, as far as my definition goes. I have to change my code (a lot in some cases), there's no way my new
messages will be consumable by older code, etc.

It may not be a hard and fast requirement that minor changes be forward compatible, but I have a really hard time buying a change
that isn't as minor.

> Does it make sense to consider versions as a triple: (major, 
> minor, namespace), where multiple namespaces might be 
> appropriate for major.minor

That's pretty much where I disagree. I would put it this way:

(namespace, major, minor) where one namespace could have multiple message versions associated with it. But a given major.minor for a
particular versioned element like Assertion would have exactly one namespace for that major version.

-- Scott

To subscribe or unsubscribe from this elist use the subscription
manager: <http://lists.oasis-open.org/ob/adm.pl>

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]