This mail has been around in my drafts folder for about 10 days, but
here it is...
I'm not sure what my position is wrt what I wrote below...
Mark Nottingham wrote:
On 04/07/2005, at 6:18 PM, Thomas Broyer wrote:
With the -01 draft (it might have been the same within the -00 one
too), one can't reuse the process to link to archives of "Top
Twenty Records" or "Most Popular Items" (e.g. a monthly "Top Twenty
Records" linking to the previous-month "Top"), because of the "a
subscription document whose fh:stateful element contains "false"
MUST NOT contain a fh:prev element".
Why not just stating that if fh:stateful is false then the "prev"-
linked archive feed doesn't not contain a subset of the previous
entries but rather does contain the previous state of the
subscription feed. I.e. the meaning of the fh:prev "link" depends on
the value of fh:stateful.
That's interesting, but it somewhat changes the semantics of "prev";
it goes from "where you can find previous entries in a logical feed"
to "where you can find an older archive of entries." While these are
often the same thing, it might not always be the case; i.e., someone
might want to publish a non-time-based feed.
So, I'm nervous about having two different semantics for one element,
depending upon its context of use.
I fully understand (that's actually also somehow bothering me).
I was actually wondering why non-stateful feeds couldn't have archives:
in the "This month's Top 10 records" feed, why couldn't I link to "Last
month's Top 10 records"?
If this kind of links are not dealt within feed-history, then I suggest
splitting the draft into two (three) parts:
1. fh:stateful: whether a feed is stateful or not
2. fh:prev: state reconstruction of a stateful feed
3. (published later) fh:????: link to archives of a non-stateful feed
(no, I actually don't want such a split, I'd rather deal with the "3."
in feed-history, no matter how)
If we want to solve this "issue" using a distinct element (fh:prev if
fh:stateful=true, fh:???? if fh:stateful=false), is fh:stateful still
needed? The presence of fh:prev would be equivalent to fh:stateful=true,
the presence of fh:???? would be equivalent to fh:stateful=false, the
absence of both fh:prev and fh:???? would be equivalent to the absence
of fh:stateful, and the presence of both fh:prev and fh:???? would be an
error.
This is off course true only if fh:prev must be accompanied by
fh:stateful=true. The question is: is it useful to have fh:stateful if
you have no link to any kind of archive?
I also repeat my proposal for an identifier different from an URI
for a reader/aggregator to know whether it has already retrieved an
archive document, e.g. using the "updated" date-time of the
"fh:prev"-linked archive feed.
Example:
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://purl.org/atom/ns#draft-ietf-atompub-format-09"
xmlns:history="[TBD]">
<title>Example Feed</title>
<link href="http://example.org/"/>
<updated>2003-12-13T18:30:02Z</updated>
<author>
<name>John Doe</name>
</author>
<id>urn:uuid:60a76c80-d399-11d9-b93C-0003939e0af6</id>
<history:stateful>true</history:stateful>
<!--
added an "updated" attribute with tha atom:updated value
of the http://example.org/2003/11/index.atom document.
-->
<history:prev updated="2003-11-24T12:00:00Z">
http://example.org/2003/11/index.atom</history:prev>
<entry>
<title>Atom-Powered Robots Run Amok</title>
<link href="http://example.org/2003/12/13/robots_here"/>
<id>urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a</id>
<updated>2003-12-13T18:30:02Z</updated>
<summary>Some text in a new, fresh entry.</summary>
</entry>
</feed>
If I retrieved the feed between 2003-11-24T12:00:00Z and
2003-12-13T18:30:02Z, the fh:prev URI were probably equal to http://
example.org/2003/10/index.atom (october, not november). However, I
didn't miss any entry.
Using the fh:[EMAIL PROTECTED] value, I can know that I didn't miss any
entry and that I then don't need to dereference http://example.org/
2003/11/index.atom (november, the "new" fh:prev URI)
Hmm, that seems awfully complex (and hard to grasp -- but maybe it's
just me :) just to avoid a round trip.
One, or a few more... depending on how you archive your entries (daily
archive document, weekly archive document, N entries per archive
document, etc.), how you publish your entries in the subscription feed
(N entries in the feed, or only those entries published during the N
last days), and who frequently you post.
Your subscription feed entries can overlap several archive feeds and the
fh:prev jump from "archive2.atom" to "archive5.atom". Using "updated",
you can avoid 3 round trips in that case.
...or too many: what if I switch URL addressing scheme (e.g. from
"archive1.atom"..."archiveN.atom" to
"2005/January.atom"..."2005/June.atom")?
A "dumb" reader will retrieve back every archive feed, as it has never
ever dereferenced the URIs.
That 'probably' is also worrying me.
I used probably because you didn't provide the example ;o)
Assuming that I retrieved the feed, I know the value fh:prev had at that
time.
How would you express this in the 'reconstructing state' section?
[[
An implementation MAY store the "atom:updated" value of retrieved
archive feeds, and it MAY then stop when it encounters an fh:prev
"updated" value earlier than the latest "atom:updated" that has been
stored beforehand when following this process.
]]
--
Thomas Broyer