Subject: Indicating Incompatible Extensions and Processor types

From: "David Orchard" <[email-masked]>
Date: Wed, 22 Sep 2004 15:51:20 -0700

I've heard strong use cases for a 3rd party to want to indicate that
receivers must understand their extensions.  However, my earlier
question about what types of Atom processors exist hasn't been answered.
There seem to be a large variety of scenarios/use cases that I can't
quite get in my head.

The short list of options (assuming a must ignore unknown extensions) is
roughly:

1. Use mustUnderstand flag on extension (tbd scope of various mU wrt
atom elements)

2. List the mandatory extensions somewhere - probably feed element - and
tbd exactly how (namespace name, prefix, qnames...)

3. Use subtyping for entry or feed extensions, no mustUnderstand flag
and write in the spec that any element that is found where an atom entry
or feed element is expected must be understood. This makes all subtypes
a "must understand" model.  

3a. #3 + list the subtypes somewhere (just a perf optimization of #3)

4. Use mustUnderstand element to wrap extensions.  

4a. #4 + list children of mustUnderstand element somewhere

What I'm not quite sure about is what's being optimized for.  I heard
some discussion that the putting mU on the extension wasn't going to
scale properly.  But I wasn't sure if that was scaling because of the
need to parse to the end of the feed (in which case option #3 is still a
problem), or if it was just parsing the entry contents.  

Then I saw that some folks wanted to be able to ignore the mandatory
extensions if they only wanted the title of an entry.  This seems to me
to indicate that there are different classes of processors that are
affected by a mustUnderstand.  In this scenario, a feed lister only
looks at the entry title and not the extension, so it shouldn't be
affected by the mustUnderstand.  This seems related to the feed
aggregator, which doesn't examine the feed.  

The 3 classes of processors that I've seen so far wrt extensibility:

- Understands Feed and existence of entry.  No ability for mU on entry
children to require a break.

- Understands Feed and partial entry ie title.  No ability for mU on
entry children to require a break.

- Understands Feed and full entry.  MustUnderstand on entry children
requires a break.

Any chance of somebody listing the atom scenarios that are affected by
required extensions, and if there are any processor classes that result?
I have a feeling that if we had a classification of processors then it
might be easier to figure out the right solution for indicating
incompatible extensions.

Daves