Sorry for the delay in responding. I disagree that feed elements apply
to the feed document and not the feed itself. I believe that both the
spirit and letter of the specification make it clear that feed
elements are metadata about the feed not the document, and the typical
behaviour of implementations seems to agree.

I agree that it is important to distinguish between feeds and feed
documents, and this is why I think that feed level inheritance of
licenses should be dropped as it is incompatible with Atom.


Monday, December 18, 2006, 10:22:17 PM, Bob Wyman wrote:

> On 12/17/06, David Powell <[EMAIL PROTECTED]> wrote:
>>  What you can do however, is to specify that feed licenses apply to the
>> "feed", and inherit to the entries in the feed. ... It
>> means that the license applies to all entries in that feed,  not just
>> ones in that specific feed document. This is probably reasonable
>> behaviour for licenses anyway.

> Particularly in the case of licenses, it is very important to
> distinguish between the "feed" or stream of all entries (past,
> present and future) associated with a feed id and the actual feed
> documents that encapsulate subsets of that stream.

> Atom provides no mechanism for associating meta-data with "feeds."

The text of RFC4287 seems to contradict this:

  The "atom:feed" element is the document (i.e., top-level) element of
  an Atom Feed Document, acting as a container for metadata and data
  associated with the feed.


Atom does support inheritance of <author> and <rights> elements, but
only because this is behaviour is clearly documented in the core
specification, so there can be no doubt of how implementations should
process these elements:

  If an atom:entry element does not contain atom:author elements, then
  the atom:author elements of the contained atom:source element are
  considered to apply. In an Atom Feed Document, the atom:author
  elements of the containing atom:feed element are considered to apply
  to the entry if there are no atom:author elements in the locations
  described above.

Effectively, this inheritance can be implemented by copying the
elements at the feed document parsing stage.


You can't just say that the license extension inherits and expect
every implementation out there to implement that.  You'd need an Atom
2.0 to do that: either support for must-understand (which was rejected
from Atom 1.0), or a special feed document extension container.  I
agree that feed document inheritance would be a useful feature, but as
we don't have it we'll have to write out these duplicate elements
longhand.  It isn't such a big deal though.


It also seems obvious to me that feed elements are metadata applied
to the feed based on the expected behaviour of implementations.  As an
example:

I observed a feed that I am subscribed to in Bloglines change its feed
title in the feed list pane. The feed did this by changing the value
of the <title> element for the feed. Surely you wouldn't say that no
conclusion can be drawn from this change in feed document as to the
intended change in state of the feed?

The whole feed model is based around changing feed documents
communicating the latest state of the feed; for both the entries in
the feed and the feed itself.

In fact the whole web is based around the fact that representations of
resources can vary over time, and that the latest representation is,
the latest.


> Data in one feed document does not apply to entries found in another
> feed document -- or to entries that stand-alone. Feed meta-data
> found in one feed document does not override, compliment or
> invalidate feed meta-data found in other feed documents.

If you poll a feed twice you have two feed documents.  These are
obviously related.  If I update an entry element, then the latter
version is understood to be a replacement.  You can correlate them by
the entry ids and updated.  If I update a feed element, then the
latter version is understood to be the replacement.  What's the
problem?  I don't see how it could work any other way.

> This is one of the many reasons we have atom:source -- so that we
> can bind specific feed meta-data to an entry no matter what context
> in which that entry might appear or when it might be read.

Atom doesn't describe the processing model of Atom documents
explicitly enough for me to infer much about the semantics of
atom:source.  If you want each entry (or a group of entries within a
document) to have its own private feed state, then atom:source is one
way to implement that.  Needing to do that is a good sign that you are
abusing feed elements to carry entry metadata though.

> If we had a case where data in one feed document overrides data in
> other feed documents, we'd have a mess. Some of the questions that
> we'd have to answer are:

> + Elements like atom:author, atom:contributor and atom:rights can
> and do change over time -- sometimes frequently. If such a change
> occurs, does it mean that we've implied a change to all previous
> entries published in all previously published feed documents? 

RFC4287 is clear about the semantics of these elements. They apply to
the feed, and are also inherited to the entries. They can do that
because that behaviour is prescribed in the RFC; we can't do that for
license extensions because it is not.

The authorship of the feed applies to the feed in general.  The
authors of boingboing might be Mark, Cory, David, Xeni, and John.
That doesn't mean that these have to be updated dynamically depending
on who the actual authors of each of the 10 entries in the feed are at
that instant.  Admittedly the behaviour of these "inheriting"
elements, and the interactions between their applicability to the feed
and to the entries is a bit odd.  I don't like it much.

> (i.e. if the earlier Feed document had an atom:contributor field but
> a later Feed Document does not, does this mean that we wipe out
> knowledge of the contributor who might have been essential to
> creating some of the earlier entries? (That's kind of heartless --
> it would be a high tech version of "What have you done for me
> lately?...") Or, do we improperly maintain the old contributor as a
> contributor of new entries --potentially long after the contributor
> has died?)

If you want the contributor to apply specifically to entries that the
contributor wrote, then put it on the entry.  If you just want to
describe general current contributor-ship then put it on the feed.

> + If data is present in one feed doc but not another later document,
> does the absence of the data in the later document override the
> previous document or do we combine what we know from both documents?

The former.  Its the same with feeds as it is with entries.

> + How do we handle mistakes? For instance, if after
> publishing several thousand feed documents in sequence, I might
> publish one that accidentally grants "all rights to everyone" when I
> really meant to grant only "non-commercial" rights. Does the new
> badly coded feed document force all of the thousands of entries I've
> been working on over time into the public domain even if that wasn't
> what I intended?

If you post a message on your website that says that all of your
website is in the public domain, by mistake, does that force all of
your website into the public domain.  I don't know, I'm not lawyer.

> + How do I "repair" the mistake discussed immediately
> above? If I publish a new feed document with a license grant for
> "non-commercial use," does that then apply to all previously
> published entries -- including those that were accidentally
> published with over-generous rights?

Yes.

> Does this mean that I can use a license in one feed document to
> *restrict* or rescind rights granted by another feed document? (This
> would be a very bad thing...)

Yes, documents on the Internet aren't immutable. I don't see how this
is surprising.

> + If I have an aggregator that picks up some content which is
> licensed for general use today, how can I be sure that I can still
> use the content tomorrow? If the content of a Feed Document applies
> retroactively, it would seem that I have to re-fetch the feed every
> time I use content from the feed so that I can check the metadata.
> This doesn't seem to make sense. If I were sued by someone, could I
> use the argument: "But, I didn't read the new, more restrictive Feed
> Documents!" Is ignorance an excuse?

The whole web works this way.  Here is a link:

http://www.apple.com/legal/terms/site.html  

How can you know that these terms and conditions haven't changed once
you've read them?  You can't.


>> if you store a feed in an implementation such as 
>> Microsoft's Feed Engine, only a single set of feed
>> extensions will be associated with the feed.

> While it is important to be aware of the inadequacies (as well as
> the strengths) of implementations by companies with significant
> market power, I don't think that we can simply delegate the
> standards writing process to such companies or modify standards to
> cover up their bugs. The fact that Microsoft or any other company
> has done the wrong thing should not, in itself, be sufficient to
> dictate the development of standards. Hopefully, they will
> eventually see the error in their ways and correct them. 

I believe that that implementation is behaving correctly. It follows
the RFC and it is no different that other feed readers I've seen.

-- 
Dave


Reply via email to