On Wed Oct  8 05:24:51 2008, Jack Moffitt wrote:
I'd like to see a clearer statement of the problem to solve rather
than so much debate over nuances of a proposed solution.  It seems
there is some hesitancy over implementing a protocol containing :tmp:
in the name.  There is also of course the problem if distinguishing
between versions of a particular protocol when it has gone through
some major revisions.


That's essentially the statement you're looking for.

Some protocols look fine for deployment when they're still in this :tmp: namespace. Others, we find in rare cases, need radical, non-interoperable change between revisions - it turns out, basically, that we broke something. Hopefully, this is rare, and hopefully there's another solution to, in effect, throwing away the protocol and replacing it with something else.

There is another solution to the reluctance to implement which also
takes some of the ambiguity out of the time line here.  That is to
issue the canonical urn as soon as a XEP draft is accepted by the
council. Why wait until it has reached some nebulous maturity level? If we accept a XEP, immediately issue it a urn. This is early enough in the life cycle that it should not affect implementers, and urns are
infinite in number.  We need not worry about wasting them

First off, I took it that the community felt there was value in having some form of signal that "This protocol is still under radical discussion and has not stabilized sufficient to bother coding." This is a useful signal for people not following every message in the process. It's just unfortunate that we signal this to people implementing experimental state protocols, because this can be a very good time to, well, experiment. And if the experiment works, these bleeding edge people should be benefiting by being ahead of the game, not stuck with a non-interoperable protocol that's only non-interoperable by a side-effect of a bureaucratic housekeeping process performed by fiat.

Secondly, I'm not worried about "wasting urns" either. My proposal of using a version number wasn't based on the notion of namespace collisions or exhaustion, but on the exhaustion of Good Names. I've seen protocols start off with fine, reasonably catchy names, and then go through radical refactoring, forcing a name change, and end up with awkward names.

This last might sound like frivolity, but names are important. We humans like to name things, and the names mean more than just a string of letters, irregardless of what any specification tells us they should mean. Hence the enormous thread on resource naming - and hence my actually quite serious post comparing resource naming with usernames, which, from a technical standpoint, would be fine, and has privacy improvements too. But names have an impact far beyond the technical. A rose by any other name might well smell as sweet, but would people still bother smelling it?

So in order to conserve not namespaces, but creativity, I suggested keeping the name, and attaching something else to it in order to distinguish the rare, and unfortunate, but sometimes required, protocol refactorings. I'm not wed to version numbering for this, but they have advantages in as much as I don't think that people are likely to consider urn:xmpp:foo:4 as being better or worse than urn:xmpp:bar:2 - or at least, not in quite the same way as they might consider urn:xmpp:foo:2008 vs urn:xmpp:bar:2010. But I'm not sure there is a terribly good solution here.

Technical argument stops here after my first paragraph, incidentally. The remainder is soft-science, not hard, there are no proofs that version numbering is better than years, or vice-versa. Technically, we could assign random names to each protocol (considering each time a protocol is revised so heavily that it ceases to interoperate as replacement with a new protocol), but that's not going to sit well with developers either.

Now, I happen not to be a big fan of years-as-versions. To us - I hope - an old protocol is a good one, assuming it's seen deployment. It's a success. But to the market, it's old technology, and the cutting edge is where it's at. It's why people get excited over Blackberries - "Latest technology mobile email! Optimized for low bandwidth!" instead of IMAP "Two decades of deployment! Designed over 2400 baud!".

So, if you don't like version numbers - and I'll admit I just grabbed at the first thing I could think of:

1) Protocols start off as :tmp:, and in this state, standards developers can feel free to make incompatible changes.

2) If someone wants to implement them to the point they need a stable namespace, they can simply ask, and the :tmp: shall be removed. In other words, only one implementor need do so. Should we last-call this? Give a week's warning? I don't know, but I suspect that someone saying "Hey, I'm doing this one, I want to deploy it in the field, let's drop the :tmp:" would be real encouragement for other folk to take a serious look at the protocol, so I'm thinking some kind of Last Call.

3) If - and bear in mind this is unlikely - the protocol is found to be so broken that it is the only solution, then either a new namespace is forged - urn:xmpp:foo is the new urn:xmpp:bar - or else we append good old Latin musical suffixes - "bis", "ter". If things are so broken we run out of those, we're forced into devising a new name.

Latin musical suffixes are a bit obscure, of course. The IETF use them for indicating major revisions to specifications. The advantage is they have little baggage; "bis" to a musician merely means "Twice", or "Again", and doesn't mean "Screwed up the first one, probably screwed up this one too", or "Shiny and new".

Finally, I would remind people that merely having the facility to devise multiple incompatible protocols with the same name does not, as Jack hints, imply that this is a good thing to be using. We did well with XEP-0115 to maintain interoperability with older versions, and that's the kind of pattern we need to be following here, not to discard and replace. I hope that's stating the obvious. :-)

Dave.
--
Dave Cridland - mailto:[EMAIL PROTECTED] - xmpp:[EMAIL PROTECTED]
 - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/
 - http://dave.cridland.net/
Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade

Reply via email to