UserPreferences

PaceNoVersioningPlainExtensibility


Abstract

Versioning of Atom is done with the namespace only; there is no "version" element or attribute.

Extensibility is done using normal XML extensions; there is no mustUnderstand or mustIgnore attribute.

Rationale

The Working Group has had a hard time coming to consensus on versioning, possibly because we know in our hearts that we cannot predict the future about how either will be needed. Some folks want to try to make future changes happen as gracefully as possible, but implementing that today takes the ability to guess what kind of changes that we will want to make. We don't have that ability.

The proposals for extensibility that include mustIgnore and mustUnderstand in essence are telling Atom applications how they should act, even though those actions don't affect technical interoperability. Some folks like that; others (particularly people who have already-deployed RSS readers) don't seem to.

So, instead of trying to predict the future and control future changes, we might just admit that we just have to live with whatever mistakes we make in Atom 1.0. If the mistake is egregious, it can get fixed by Atom 2.0 with a different namespace.

By allowing Atom processors to do whatever they want with extensions they don't recognize, we will probably find that software will quickly figure out what to do without our stern advice.

Proposal

Remove section 4.1 on the "version" attribute. Remove mention of the version attribute from a few places in the rest of the document, including from the example.

Add a section on how to extend Atom. The section should say, basically:

- Extensions to Atom are done using normal XML extension mechanisms.

- An Atom-reading system MUST NOT fail if it sees an extension that it does not recognize.

- An Atom-reading system that sees an extension that it does not understand might ignore it completely, might show an indication that something was seen but not understood, might show the content of the extension, or something else as it pleases.

- An Atom-producing system that includes extensions needs to understand that Atom-reading systems might not understand the extension and might act in ways that the producer could not predict.

Discussion

Author

PaulHoffman

In Favor

TimBray