Re: Feed Thread in Last Call

2006-05-30 Thread Lisa Dusseault



On May 23, 2006, at 12:16 PM, Tim Bray wrote:


On May 18, 2006, at 6:15 AM, David Powell wrote:


What I see as a problem is that reasonable implementations will not
preserve Atom documents bit-for-bit, so they will need to explicitly
support this draft if they don't want to corrupt data by dropping the
thr:count attributes. By the letter of RFC4287 there is no problem
with the draft, but practically there is something like a layering
concern if an extension requires existing conformant implementations
to be changed.


At the end of the day, the marketplace will work within the  
constraints of what 4287 allows; my feeling is that there are going  
to be a ton of extensions that will attach unforeseen metadata at  
arbitrary points with Atom documents, and implementations that fail  
to store these and make them retrievable will quickly be seen as  
broken.  -Tim


I find this to be a pretty compelling argument.  Unless RFC4287 were  
rewritten (with a time machine, perhaps) to forbid extensions in  
attributes, extension writers will occasionally put data in  
attributes, and the libraries will have to deal with this, regardless  
of how the Thread proposal works.


Lisa



Re: Feed Thread in Last Call

2006-05-30 Thread Robert Sayre


On 5/30/06, Lisa Dusseault [EMAIL PROTECTED] wrote:


 At the end of the day, the marketplace will work within the
 constraints of what 4287 allows; my feeling is that there are going
 to be a ton of extensions that will attach unforeseen metadata at
 arbitrary points with Atom documents, and implementations that fail
 to store these and make them retrievable will quickly be seen as
 broken.  -Tim

I find this to be a pretty compelling argument.


I don't find Tim's argument particularly compelling. It's crystal ball
stuff, and implementations are free to ignore *any* part of an Atom
document. In this case, it's another case of a WG member claiming
something is broken without a shred of spec text to back it up. If Tim
and others want that to be true, they have an RFC to revise.

--

Robert Sayre

I would have written a shorter letter, but I did not have the time.



Re: Feed Thread in Last Call

2006-05-30 Thread James M Snell



Robert Sayre wrote:
[snip]
 document. In this case, it's another case of a WG member claiming
 something is broken without a shred of spec text to back it up. If Tim

The exact same can be said of the argument that the use of extension
attributes is broken.  There's not a shred of spec text to back it up.

 and others want that to be true, they have an RFC to revise.
 

The spec is clear.  Extension attributes are allowed by the spec.
Implementations that do not support extension attributes are choosing
not to support a feature allowed by the spec.  Whether that makes those
implementations broken or not is debatable.  Personally, I don't see
them as broken, I just see them as extremely short-sighted.

- James



Re: Feed Thread in Last Call

2006-05-30 Thread Robert Sayre


On 5/30/06, James M Snell [EMAIL PROTECTED] wrote:


Robert Sayre wrote:
[snip]
 document. In this case, it's another case of a WG member claiming
 something is broken without a shred of spec text to back it up. If Tim

The exact same can be said of the argument that the use of extension
attributes is broken.  There's not a shred of spec text to back it up.



I didn't say the use of extension attributes is broken. I said your
extension has no reason to use them, remember? You never gave a
technical reason for the change between last call and the previous
version.


Personally, I don't see them as broken, I just see them as extremely 
short-sighted.


That's how I see your extension.

Hey, maybe you could do RFC4287bis as an individual submission!

--

Robert Sayre



Re: Feed Thread in Last Call

2006-05-25 Thread David Powell


Tuesday, May 23, 2006, 10:31:37 PM, Tim Bray wrote:

 I would say that furious debates about elements-vs-attributes have
 been going on since the dawn of XML in 1998, but that would be
 untrue; they've been going on since the dawn of XML's precursor SGML
 in 1986. They have never led anywhere. After you've noticed that if
 you need nested element structure you're stuck with elements, and if
 you don't want to have two things with the same names attributes can
 help, there really aren't any deterministic decision procedures.

 I note with pleasure that *all* known XML APIs allow you to retrieve  
 elements and attributes with about the same degree of difficulty.

What Aristotle said.  Yes, I agree, but debate over elements vs
attributes in generic XML isn't relevant.

 So, my conclusion: I disagree with Powell.  Let people put extensions
 wherever they feel like putting them (they will anyhow), remembering  
 that human-readability is a virtue.  If models try to micro-manage  
 the element/attribute thing, those models are broken, don't use  
 them.

 If software arbitrarily discards markup because the markup
 doesn't match its idiosyncratic ideas about elements and attributes,  
 that software is non-comformant and non-interoperable.

I'm a bit surprised that you're saying this. I'm not sure why you
think it is non-conformant to discard extensions. RFC4287 doesn't
describe any conformance criteria for Atom intermediaries.

Over on atom-protocol, there were a number of implementors who are
ignoring/rewriting client-supplied atom:ids - about the most
fundamental way that you could possibly change an atom document - and
you didn't seem to disapprove of this?

People have also said in the past that they planned not to preserve
extensions, and I don't remember there being many objections. If it is
non-conformant and non-interoperable to discard extensions, then why
doesn't APP prohibit it?

 Extension elements are defined to have both a model and a syntax, but
 Atom's allowance for foreign attributes to appear anywhere is a case
 of syntax that has no corresponding model. Atom doesn't really explain
 what foreign attributes are intended for.

 Extension elements also, as noted above, have *no normative effect*.

I don't know what no normative effect means.

 This is only true for software which ignores the fact that RFC4287 is
 specified only in terms of the XML Infoset.  If you lose information  
 because it doesn't match up with some ex post facto model you've  
 dreamed up, you cannot expect to achieve interoperability.

But every implementor is dreaming up ex post facto models.

 Obviously, but the notion that this depends on whether you use an  
 attribute or an element seems really, really bizarre to me.  An  
 intermediary that drops markup it doesn't recognize won't last long  
 in the marketplace, whether those are elements or attributes.

It is easier to support extensibility in 3 places, than on every
possible element in the document. Storing entry extensions in a
database table is possible, storing atom:updated attributes, is
getting silly.

 Interoperability should take priority of concerns that 'approach X  
 looks
 better than Y', and other unjustifiable minor concerns.

 Yes, and interoperability is based on the normative rules in RFC4287,
 right?

Wrong (in my opinion).

There are no normative rules for the behaviour of Atom intermediaries.

Given the absence of such rules, the next best way to ensure
interoperability to understand the typical behaviour of Atom
implementations: the fact that it is easier for some implementations
to support Extension Elements in the 3 defined extension points than
foreign attributes on every element in an Atom document; that this
translates to more implementations supporting extension elements than
attributes; and that this implies that an extension would be more
interoperable if it chooses Section 6.4 markup over undefined foreign
markup.

-- 
Dave



Re: Feed Thread in Last Call

2006-05-23 Thread Tim Bray


On May 17, 2006, at 12:46 PM, Byrne Reese wrote:


Speaking up:

http://www.majordojo.com/atom/ 
standardizing_the_atom_thread_extension.ph

p

No surprise I guess, but I am a huge +1. Lock this spec down and ship
it.


Me too.  Does something useful, does no harm, if it's broken in some  
way it'll be harmlessly routed around.  I suspect that  
implementations that are stupid about the contents of atom:link  
will be fixed pretty soon. -Tim




Re: Feed Thread in Last Call

2006-05-23 Thread Tim Bray


On May 18, 2006, at 6:15 AM, David Powell wrote:


What I see as a problem is that reasonable implementations will not
preserve Atom documents bit-for-bit, so they will need to explicitly
support this draft if they don't want to corrupt data by dropping the
thr:count attributes. By the letter of RFC4287 there is no problem
with the draft, but practically there is something like a layering
concern if an extension requires existing conformant implementations
to be changed.


At the end of the day, the marketplace will work within the  
constraints of what 4287 allows; my feeling is that there are going  
to be a ton of extensions that will attach unforeseen metadata at  
arbitrary points with Atom documents, and implementations that fail  
to store these and make them retrievable will quickly be seen as  
broken.  -Tim



I notice that you said implemented support - that is fine for
user-agents etc, but I don't believe that Atom infrastructure should
be required to implement support for each new bit of content that
publishers put into their feeds.


On the contrary; I think that implementors who fail to deal with the  
fact that people will be adding their own non-Atom stuff at every  
conceivable place in an Atom feed are being very stupid, because this  
will happen whatever we say. -Tim




Re: Feed Thread in Last Call

2006-05-23 Thread James M Snell

+1. What Tim said.

- James

Tim Bray wrote:
 On May 18, 2006, at 6:15 AM, David Powell wrote:
 
 What I see as a problem is that reasonable implementations will not
 preserve Atom documents bit-for-bit, so they will need to explicitly
 support this draft if they don't want to corrupt data by dropping the
 thr:count attributes. By the letter of RFC4287 there is no problem
 with the draft, but practically there is something like a layering
 concern if an extension requires existing conformant implementations
 to be changed.
 
 At the end of the day, the marketplace will work within the constraints
 of what 4287 allows; my feeling is that there are going to be a ton of
 extensions that will attach unforeseen metadata at arbitrary points with
 Atom documents, and implementations that fail to store these and make
 them retrievable will quickly be seen as broken.  -Tim
 
 I notice that you said implemented support - that is fine for
 user-agents etc, but I don't believe that Atom infrastructure should
 be required to implement support for each new bit of content that
 publishers put into their feeds.
 
 On the contrary; I think that implementors who fail to deal with the
 fact that people will be adding their own non-Atom stuff at every
 conceivable place in an Atom feed are being very stupid, because this
 will happen whatever we say. -Tim
 



Re: Feed Thread in Last Call

2006-05-23 Thread Ernest Prabhakar


I've had a hard time following this thread, but for what its worth I  
buy Tim's reasoning.


+1

On May 23, 2006, at 12:26 PM, James M Snell wrote:



+1. What Tim said.

- James

Tim Bray wrote:

On May 18, 2006, at 6:15 AM, David Powell wrote:


What I see as a problem is that reasonable implementations will not
preserve Atom documents bit-for-bit, so they will need to explicitly
support this draft if they don't want to corrupt data by dropping  
the

thr:count attributes. By the letter of RFC4287 there is no problem
with the draft, but practically there is something like a layering
concern if an extension requires existing conformant implementations
to be changed.


At the end of the day, the marketplace will work within the  
constraints
of what 4287 allows; my feeling is that there are going to be a  
ton of
extensions that will attach unforeseen metadata at arbitrary  
points with

Atom documents, and implementations that fail to store these and make
them retrievable will quickly be seen as broken.  -Tim


I notice that you said implemented support - that is fine for
user-agents etc, but I don't believe that Atom infrastructure should
be required to implement support for each new bit of content that
publishers put into their feeds.


On the contrary; I think that implementors who fail to deal with the
fact that people will be adding their own non-Atom stuff at every
conceivable place in an Atom feed are being very stupid, because this
will happen whatever we say. -Tim







Re: Feed Thread in Last Call

2006-05-23 Thread Sylvain Hellegouarch





At the end of the day, the marketplace will work within the 
constraints of what 4287 allows; my feeling is that there are going to 
be a ton of extensions that will attach unforeseen metadata at 
arbitrary points with Atom documents, and implementations that fail to 
store these and make them retrievable will quickly be seen as broken.  
-Tim



Sounds about right. Where do we stop then? If the marketplace decides, 
is there a need to submit the FTE to the IETF? Will any extensions need 
to be submitted? Only Atom per see needed to be standardised in such a case.


- Sylvain



Re: Feed Thread in Last Call

2006-05-23 Thread Paul Hoffman


At 8:39 PM +0100 5/23/06, Sylvain Hellegouarch wrote:
At the end of the day, the marketplace will work within the 
constraints of what 4287 allows; my feeling is that there are going 
to be a ton of extensions that will attach unforeseen metadata at 
arbitrary points with Atom documents, and implementations that fail 
to store these and make them retrievable will quickly be seen as 
broken.  -Tim


Sounds about right. Where do we stop then? If the marketplace 
decides, is there a need to submit the FTE to the IETF? Will any 
extensions need to be submitted? Only Atom per see needed to be 
standardised in such a case.


Welcome to the messy world of standards. There might be a need for an 
updated FTE RFC. On the other hand, if the market gives a big yawn, 
there is probably no need to update the RFC if no one is using it. On 
the third hand, it doesn't hurt to have it updated anyway; there are 
lots of RFCs that have barely any implementations. There is probably 
a fourth hand consideration as well.


There is no clear delineation point for when an extension should 
become an RFC. The IETF plays it by ear. For some protocols, lots of 
extensions as RFCs has been a boon; for others, just a bother. We 
won't know where the Atom format fits in that range for a few years.


--Paul Hoffman, Director
--Internet Mail Consortium



Re: Feed Thread in Last Call

2006-05-23 Thread Sylvain Hellegouarch





Welcome to the messy world of standards. There might be a need for an 
updated FTE RFC. On the other hand, if the market gives a big yawn, 
there is probably no need to update the RFC if no one is using it. On 
the third hand, it doesn't hurt to have it updated anyway; there are 
lots of RFCs that have barely any implementations. There is probably a 
fourth hand consideration as well.


There is no clear delineation point for when an extension should 
become an RFC. The IETF plays it by ear. For some protocols, lots of 
extensions as RFCs has been a boon; for others, just a bother. We 
won't know where the Atom format fits in that range for a few years.



Thanks a lot for that honest answer Paul. Appreciated :)

- Sylvain



Re: Feed Thread in Last Call

2006-05-23 Thread Tim Bray


On May 20, 2006, at 8:49 AM, David Powell wrote: (at great length)

I'm going to re-organize David's argument a little and deal with one  
of his last points first.



Foreign attributes are bad, and are inherently less interoperable
than Extension Elements.


I would say that furious debates about elements-vs-attributes have  
been going on since the dawn of XML in 1998, but that would be  
untrue; they've been going on since the dawn of XML's precursor SGML  
in 1986.  They have never led anywhere.  After you've noticed that if  
you need nested element structure you're stuck with elements, and if  
you don't want to have two things with the same names attributes can  
help, there really aren't any deterministic decision procedures.


I note with pleasure that *all* known XML APIs allow you to retrieve  
elements and attributes with about the same degree of difficulty.


So, my conclusion: I disagree with Powell.  Let people put extensions  
wherever they feel like putting them (they will anyhow), remembering  
that human-readability is a virtue.  If models try to micro-manage  
the element/attribute thing, those models are broken, don't use  
them.  If software arbitrarily discards markup because the markup  
doesn't match its idiosyncratic ideas about elements and attributes,  
that software is non-comformant and non-interoperable.



Software that deals with XML such as an XHTML document, doesn't have
much choice but to model the document using generic XML concepts and
tools - Infosets, DOM, SAX, strings containing XML tags, etc.

For Atom though, it is useful to model feeds and entries in terms of
some other data model: OO, RDBMS, WebDAV (I've been doing it as RDF,
but that is a dirty word around these parts).


Well yes, but each and every one of those non-XML models fails to  
capture the information content of perfectly-legal XML in one way or  
another.  The Atom data format *could* have been designed in such a  
way as to be conformant with one or more of those models, but it  
wasn't.  Extensions to Atom can be designed in such a way as to fit  
into some particular data model, or not.


So I think it's really questionable to try to normatively reverse  
engineer the WG consensus to try to pretend that Atom documents can  
usefully be processed as anything but XML.



Section 6 of RFC4287 is flawed. It is an ugly mix


I agree.  In fact, what Simple Extension *really* says is this  
property can trivially be modeled in RDF and Structured Extension  
really says is doesn't directly map to RDF, but I failed to  
convince the WG either to remove this hand-waving or to be clear  
about what we really meant.  Having said that, these notions  
fortunately have exactly zero normative effect on implementors.



of my (overly)
strict PaceExtensionConstruct proposal[1], and an (overly) liberal
philosophy that the existence of foreign markup anywhere won't break
implementations, so shouldn't be disallowed.


I have no comment on your proposal, but the philosophy you describe  
does in fact represent the consensus of the WG and the IETF  
community; your opinion that it is overly liberal is interesting but  
not particularly relevant to implementors.



atompub's charter states:


Atom consists of:
* A conceptual model of a resource
* A concrete syntax for this model


Extension elements are defined to have both a model and a syntax, but
Atom's allowance for foreign attributes to appear anywhere is a case
of syntax that has no corresponding model. Atom doesn't really explain
what foreign attributes are intended for.


Extension elements also, as noted above, have *no normative effect*.   
It is arguable that the design of Atom departed from the charter in  
that the model was never explicitly specified.  To me, this seems  
like sound design; the success of the Web has been based on careful  
specification of the content and sequence of the interchanged  
messages without any attempt to standardize on a model.  This is A  
Good Thing, and demonstrably works.


And Atom also doesn't really explain what foreign elements are  
intended for either.



It seems like they could be
an extension point, but given that many implementations will have an
application model that isn't based on the XML Infoset (as described
above),


There's a word for implementations (especially intermediaries, as you  
notice) that aren't based on the Infoset: broken.  Because RFC4287 is  
explicitly defined only in terms of the infoset.  Go ahead and try to  
impose any models that are appropriate for your application needs; I  
do this all the time.  But don't change the Infoset.



it seems very unwise to create an extension proposal which
depends on the precise syntax of an element being preserved.


The precise syntax claim is utterly bogus.  RFC4287 properly  
standardizes at the Infoset level, thus it makes zero difference  
whether I say titleCafé/title or titleCaf#xe9;/title.  I  
personally think that an extension 

Re: Feed Thread in Last Call

2006-05-23 Thread Robert Sayre


On 5/23/06, Tim Bray [EMAIL PROTECTED] wrote:


I would vociferously resist any such claim.


OTOH, there are more than a few products on the market right now that
back up just such a claim. So there's an existence proof, and most of
the APIs I've seen *do* make use simple vs. structured, but you may be
right that the market will change that. In otherwords, there is little
point in continuing this discussion... just like you and I agreed 150+
messages ago...

--

Robert Sayre

I would have written a shorter letter, but I did not have the time.



Re: Feed Thread in Last Call

2006-05-20 Thread David Powell


Friday, May 19, 2006, 1:40:43 AM, Lisa Dusseault wrote:

 I've been trying to understand if there's a technical problem with
 the draft's chosen placement of the attributes and the best case
 I've seen is that that location is technically disallowed by
 RFC4287 , an assertion which is disputed (alas, natural language
 meanings are often disputed).

Hmm, that wasn't my argument either... I fully agree that the
attributes are technically allowed by both the text and RelaxNG of
RFC4287. I don't think anyone is disputing that.

Sorry for repeating myself again, but I'll recap my argument in full
because it seems like it hasn't been understood.  A bit of background:


Modelling
=

Software that deals with XML such as an XHTML document, doesn't have
much choice but to model the document using generic XML concepts and
tools - Infosets, DOM, SAX, strings containing XML tags, etc.

For Atom though, it is useful to model feeds and entries in terms of
some other data model: OO, RDBMS, WebDAV (I've been doing it as RDF,
but that is a dirty word around these parts). Some of the reasons for
this are:

  Most Atom implementations are concerned with the combined state of a
  feed over time, not the state of an individual feed document, so
  pure XML access is inadequate.

  More robust, and efficient implementations, particularly in the case
  of RDBMS.

  Implementations may be built upon existing systems, such as existing
  content management systems, where a mapping between Atom the XML
  syntax, and the entities in an existing system would need to be
  established.

  Even the best XML APIs are horrible to use when compared to domain
  specific APIs.


Extensions
==

Atom standardised a minimal set of elements, with the expectation that
any other elements would be created as extensions. It is therefore
important that Atom infrastructure shouldn't get in the way of the
deployment of extensions. Atom uses mustIgnore semantics for
extensions, which allows implementations to copy-through extensions
even if they don't understand their purpose.

Section 6 of RFC4287 is flawed. It is an ugly mix of my (overly)
strict PaceExtensionConstruct proposal[1], and an (overly) liberal
philosophy that the existence of foreign markup anywhere won't break
implementations, so shouldn't be disallowed.

[1] 
http://www.intertwingly.net/wiki/pie/PaceExtensionConstruct?action=recalldate=1105566248

I complained about it here[2], admittedly a long time after IETF last
call, but as we were still making Atom 101 changes about then (eg:
let's allow multiple authors), maybe that wasn't so unreasonable. It
doesn't make any sense to define two very precise classes of extension
element, and then say that any extra markup can go anywhere, without
giving any justification or explanation to why we did this, or any
guidelines to why extension authors should pick each of these options.

[2] http://www.imc.org/atom-syntax/mail-archive/msg15915.html

Unfortunately Simple Extension elements are too unconstrained to fulfil
their original objective, so the difference between them and
Structured Extensions is academic. The intent was that Simple
Extensions were a class of extension whose values were context-free
strings that would be easy to implement, and easy to provide UIs for,
and extension proposers might be encouraged to choose this class of
extension where it was appropriate for improved interoperability. I
don't think that this worked out.

The difference between extension elements, and foreign attributes is
significant however.

atompub's charter states:

 Atom consists of:
 * A conceptual model of a resource
 * A concrete syntax for this model

Extension elements are defined to have both a model and a syntax, but
Atom's allowance for foreign attributes to appear anywhere is a case
of syntax that has no corresponding model. Atom doesn't really explain
what foreign attributes are intended for. It seems like they could be
an extension point, but given that many implementations will have an
application model that isn't based on the XML Infoset (as described
above), it seems very unwise to create an extension proposal which
depends on the precise syntax of an element being preserved.

The intent of Simple Extensions was to provide a class of extension
that was more interoperable; foreign attributes appear to provide a
class of extension (if that is what it is) that will be much less
interoperable.

Some guidance in how to design extensions is definitely missing from
the RFC, perhaps an Informational RFC explaining the issues would be
appropriate.


Relevance of intermediaries
===

Most of these issues only apply to Atom intermediaries: agents which
much accept Atom documents, and represent the documents internally
without losing information.  It doesn't matter if a desktop aggregator
drops extensions if it has no UI for displaying them anyway.  But I
think that the class of Atom intermediaries will become 

Re: Feed Thread in Last Call

2006-05-19 Thread Robert Sayre


On 5/19/06, Lisa Dusseault [EMAIL PROTECTED] wrote:


Am I missing something in the case against the choice of location for
the metadata?


Yes. That location is going to cause interoperability problems in my
implementation, because the draft leaves too much undefined, and in
implementations who won't parse them. I think I've made that extremely
clear. The previous draft addressed my concerns. My current plan is to
implement the threading element, but I'll recommend against accepting
bug reports on the other aspects of the document, since I think it's
an underspecified mess. Kind of silly considering the clear lessons
from earlier efforts, but the threading element is good enough.

--

Robert Sayre

I would have written a shorter letter, but I did not have the time.



Re: Feed Thread in Last Call

2006-05-19 Thread James M Snell


Robert Sayre wrote:
 On 5/19/06, Lisa Dusseault [EMAIL PROTECTED] wrote:

 Am I missing something in the case against the choice of location for
 the metadata?
 
 Yes. That location is going to cause interoperability problems in my
 implementation, because the draft leaves too much undefined, and in

Other than the issue with the Microsoft implementation, which has
already been thoroughly discussed, what other interop problems are you
anticipating?  A clear, non-editorialized, listing of the potential
issues and the rationale for each would be most helpful.

- James



Re: Feed Thread in Last Call

2006-05-19 Thread Robert Sayre


On 5/19/06, James M Snell [EMAIL PROTECTED] wrote:


Other than the issue with the Microsoft implementation, which has
already been thoroughly discussed, what other interop problems are you
anticipating?  A clear, non-editorialized, listing of the potential
issues and the rationale for each would be most helpful.


You've received several of those from me. I suggest you read your old
mail, paying close attention to messages that you replied to in under
15 minutes.

I have zero confidence that any technical change or compromise is
possible from you, and I find interacting with you to be a giant time
sink. My new policy will be to explain my problem *once*, and then I
will verify that my concerns (if any) have been addressed at some
later date when there is a revised document available. If my concerns
aren't addressed, I will make a concerted effort to avoid writing or
being responsible for maintaining any relevant functionality.

--

Robert Sayre



Re: Feed Thread in Last Call

2006-05-18 Thread Sylvain Hellegouarch


 The latter is, of course, not specific to FTE, but apparently is enough
 of a problem to at least warrant a mention.


Thank you. This is fully appreciated.

- Sylvain



RE: Feed Thread in Last Call

2006-05-18 Thread Sylvain Hellegouarch



 When Friendster approached Six Apart and asked for a way to keep abreast
 as to the comment activity within the Friendster Blogging network
 (powered by TypePad), I turned immediately to FTE.

 In this implementation, there was actually no desire for Friendster to
 gain access to the comments themselves - all they wanted was to know:
 has there been a new comment posted to any of this users blog entries?

 And in actually, TypePad didn't want to add another page to be rebuilt.
 We wanted to keep things as simple as possible, in order to satisfy the
 customer's requirements within incurring any more development overhead
 than absolutely necessary.

 FTE was a perfect fit because it allowed Friendster to monitor comment
 activity quite reliably. The count attribute wasn't enough for them
 because the count attribute by itself doesn't reflect accurately if a
 new comment was posted (e.g. comment count is 0, new comment received,
 comment count is 1, comment deleted, comment count is 0, comment
 received, etc). Depending upon the poll interval of the client, it may
 miss the fact that a comment was posted.

 However, the count attribute and then when attribute gave Friendster
 just what they needed: enough information to know that a) a new comment
 was received, and b) sufficiently (not necessary 100% accurate, but they
 didn't care) accurate comment count. They used this information to send
 emails to the blog owner saying, since we last emailed you, there has
 been this activity on your blog.

 The Friendster link relation looks like this:

 link rel=replies type=text/html
 href=http:///foo.html#comments;
   thr:when=date thr:count=int /

 Notice, in this case we are pointing to the HTML page where comments can
 be found - and not to another Atom feed because we don't produce a
 comments feed. We simply produce some meta data about comment activity.

 Furthermore, Six Apart likes this spec as-is because it helps to reduce
 the number of documents that need to be parsed in order to determine
 simple details about an entry. The burden of having to fetch an Atom
 document for each entry and then counting the number of entries within
 that feed to derive a count, is totally absurd. If you CAN make it
 easier for a developer, why won't you?

Well you simply move the burden to a different level where it is not your
problem anymore, ie on the HTTP level and far from the application level.
It is fine but the load will be paid by someone at any given time.


 Not to mention that in Friendster's case, this process would not have
 worked for them because we didn't produce a feed for them to extract
 this information from, because their requirements forbade it.

 I have gone on long enough. I am hoping this gave some good background
 around a real implementation and use case currently in use today.

You did and I thank you for sharing this information.

That being said, I raised two points in me original mail:

1. The fact I thought the thr attributes were useless. You made a good
case and I will not fight against their use on the application level
anymore. We are therefore fine on *that* level.

2. The burden added to the HTTP layer. I'll try to make myself clear.

In your implementation above you have to update the Atom feed to modify
the thr attributes. The problem is that you have then to update the last
modified date of the resource (as in the REST definition of resource)
itself (whether you generate ir on the fly or save it on disk).

For aggregators which are aware of the FTE, it won't be so much of a
problem as you showed me because they will know how to deal with that on
the application level and make the best of it.

However, there will be clients which won't care about the semantic of the
resource, their point is simply to fetch a resource and cache it as long
as it is not modified.

By acting as you do, we may end up in a huge amount of feeds being sent on
the wire to clients which believe the feed has actually changed in its
content when it has changed only in one meta-data value (that they will
not handle anyway).

This is my grief. Your use case is great at the application level but
could really mess bandwith usage as well.

That's why I also say you have moved the burden down to one level so that
it doesn't make your life more complicated and so that others pay the
price of it.

I'd be interested to hearing from Friendster about their feed bandwith
usage since you have setup the FTE.

However I'm not blind enough either to realise my algorithm would not be
much better in some circumstances.

I guess my problem is that the semantic conveyed by those attributes
should belong to a push protocol and not to a pulled one like HTTP.

I aslo understand that Atom and its extensions are not protocol aware.
They should not have to care about HTTP. It does not mean though that we
cannot think about their implications in those areas.


Thanks for your feedback.
- Sylvain



Re: Feed Thread in Last Call

2006-05-18 Thread David Powell


Tuesday, May 16, 2006, 4:50:03 AM, James M Snell wrote:

 A few of the individuals on the WG had a problem with the placement of
 the attributes due to various limitations of a few existing Atom 1.0
 implementations.

That doesn't accurately state my problem with FTE. My concern is more
general than the compatibility with a specific Atom implementations.
The fact that the MS feed platform exhibits the issue is just a
confirmation that the issue is more than a theoretical concern.

An implementor that wants to /consume/ Atom (such as a feed API, or
store), ought to be able to create an accurate implementation just by
reading RFC4287. That document describes what properties entries,
feeds, links, and extension elements have, and how they are
represented in an Atom document. Using this it is possible to create a
database schema or OO API that can represent feed data.

My problem with FTE is that rather than using Atom's extension-point:
the Extension Element (which an implementor of RFC4287 is likely to
be capable of preserving), it uses the fact that Atom doesn't prohibit
extra attributes to be included anywhere in the document. Is an API,
feed store, or Atom Protocol implementation expected to preserve every
attribute on every element, in addition to the core elements, and
extension points? This might be practical on a few green-field Atom
implementations, but it wouldn't be practical on systems than need to
be retrofitted to support Atom.

What I see as a problem is that reasonable implementations will not
preserve Atom documents bit-for-bit, so they will need to explicitly
support this draft if they don't want to corrupt data by dropping the
thr:count attributes. By the letter of RFC4287 there is no problem
with the draft, but practically there is something like a layering
concern if an extension requires existing conformant implementations
to be changed.

Atom implementations with generic support for links and extensions,
will find that this draft moves the goalposts of what a reasonable
implementation is expected to handle, and I firmly believe that it
should be possible for implementations to provide generic support for
extensions in order to assist their adoption.

Part of the problem might be caused by flaws in Atom's extensibility
model, but that is all the more reason for extensions to be
conservative in its use.

 None of the folks I know of that have actually
 implemented support for the extension has had any problems with them.

Does that include any stateful feed APIs, or APP servers that aren't
based on native XML back-ends?

I notice that you said implemented support - that is fine for
user-agents etc, but I don't believe that Atom infrastructure should
be required to implement support for each new bit of content that
publishers put into their feeds.

-- 
Dave



Re: Feed Thread in Last Call

2006-05-18 Thread Hugh Winkler
By acting as you do, we may end up in a huge amount of feeds being sent onthe wire to clients which believe the feed has actually changed in its
content when it has changed only in one meta-data value (that they willnot handle anyway).
Servers don't *have* to change the feed's Last-Modified and ETag values
when a comment count changes. They are free to respond 304 to a
conditional GET, even if the count has changed.
Hugh 


Re: Feed Thread in Last Call

2006-05-18 Thread Sylvain Hellegouarch


 By acting as you do, we may end up in a huge amount of feeds being sent
 on
 the wire to clients which believe the feed has actually changed in its
 content when it has changed only in one meta-data value (that they will
 not handle anyway).



 Servers don't *have* to change the feed's Last-Modified and ETag values
 when
 a comment count changes. They are free to respond 304 to a conditional
 GET,
 even if the count has changed.


Well this is debatable because you effectively change the resource itself
and ought to update its meta-data as well (ie Last-Modified and Etag
values).

Besides, by not doing so can be even worse because an aggregator would
requests the feed, the server would respond with a 304 and the aggregator
would not even know the count ahs changed in the end. It feels even worse.

- Sylvain



Re: Feed Thread in Last Call

2006-05-18 Thread Sylvain Hellegouarch


 Well this is debatable because you effectively change the resource itself
 and ought to update its meta-data as well (ie Last-Modified and Etag
 values).

 Besides, by not doing so can be even worse because an aggregator would
 requests the feed, the server would respond with a 304 and the aggregator
 would not even know the count ahs changed in the end. It feels even worse.


Actually the aggregator could NOT send the If-Modified-Since header of
course in that specific case and be safe. But this seems like a bit of an
abuse of HTTP to me.

- Sylvain



Re: Feed Thread in Last Call

2006-05-18 Thread Brendan Taylor
On Thu, May 18, 2006 at 09:26:18AM +0100, Sylvain Hellegouarch wrote:
 By acting as you do, we may end up in a huge amount of feeds being sent on
 the wire to clients which believe the feed has actually changed in its
 content when it has changed only in one meta-data value (that they will
 not handle anyway).

It's a valid concern, but as James has been saying the problem is with
the syndication model. This isn't something that Atom (or any extension) 
can solve.

Do you have any suggestions about how this metadata could be included
without changing the content of the feed? AFAICT the only solution is to
not use the attributes (which aren't required, of course).


pgpu55TsuM4hr.pgp
Description: PGP signature


Re: Feed Thread in Last Call

2006-05-18 Thread Sylvain Hellegouarch



 It's a valid concern, but as James has been saying the problem is with
 the syndication model. This isn't something that Atom (or any extension)
 can solve.

I agree with you and James. This is much larger issue and this spec is not
the right place to try solving it.

 Do you have any suggestions about how this metadata could be included
 without changing the content of the feed? AFAICT the only solution is to
 not use the attributes (which aren't required, of course).

I'll make a fool of myself after being so virulent but apart from a fairly
big change in the Internet architecture. There is little that could be
done to solve the problem of polling Vs pushing.

That being said, I would not be surprised that ISPs push really hard for
such a discussion to happen as they will soon be overloaded by the huge
amount of data passing on the wires they pay for (thinks much larger than
just feeds like HDTV ;).

Anyway, no I don't have a better solution. I am nevertheless happy that
the point will be notified by James in its draft.

- Sylvain



Re: Feed Thread in Last Call

2006-05-18 Thread Sylvain Hellegouarch

And I am sorry for the numerous mistakes I make in my written English. *sigh*



Re: Feed Thread in Last Call

2006-05-18 Thread James M Snell

David,

David Powell wrote:
 Tuesday, May 16, 2006, 4:50:03 AM, James M Snell wrote:
 
 A few of the individuals on the WG had a problem with the placement of
 the attributes due to various limitations of a few existing Atom 1.0
 implementations.
 
 That doesn't accurately state my problem with FTE. My concern is more
 general than the compatibility with a specific Atom implementations.
 The fact that the MS feed platform exhibits the issue is just a
 confirmation that the issue is more than a theoretical concern.
 

My apologies for the misrepresentation. It was unintentional.

 An implementor that wants to /consume/ Atom (such as a feed API, or
 store), ought to be able to create an accurate implementation just by
 reading RFC4287. That document describes what properties entries,
 feeds, links, and extension elements have, and how they are
 represented in an Atom document. Using this it is possible to create a
 database schema or OO API that can represent feed data.
 

When I look at RFC4287 I see the following statements:

  1.3 : Some sections of this specification are illustrated with
 fragments of a non-normative RELAX NG Compact schema
 [RELAX-NG].  However, the text of this specification provides
 the definition of conformance.
4.2.7 : The atom:link element defines a reference from an entry or
 feed to a Web resource.  This specification assigns no meaning
 to the content (if any) of this element.
  6.1 : Markup from other vocabularies (foreign markup) can be used
 in an Atom Document.
  6.3:  Atom Processors that encounter foreign markup in a location
 that is legal according to this specification MUST NOT stop
 processing or signal an error.
  6.4:  Atom allows foreign markup anywhere in an Atom document, except

 where it is explicitly forbidden.

Further, the RELAX NG definition for atom:link is,

   atomLink =
  element atom:link {
 atomCommonAttributes,
 attribute href { atomUri },
 attribute rel { atomNCName | atomUri }?,
 attribute type { atomMediaType }?,
 attribute hreflang { atomLanguageTag }?,
 attribute title { text }?,
 attribute length { text }?,
 undefinedContent
  }


   atomCommonAttributes =
  attribute xml:base { atomUri }?,
  attribute xml:lang { atomLanguageTag }?,
  undefinedAttribute*

   undefinedAttribute =
 attribute * - (xml:base | xml:lang | local:*) { text }

   undefinedContent = (text|anyForeignElement)*

My interpretation of the text and the RELAX NG definition is that while
the specification does not assign any meaning to extensions of the link
element, it is nonetheless explicitly allowed.

It may have been a mistake, but the discussion of section 6.4 is
explicitly scoped *only* to child elements of atom:entry, atom:feed,
atom:source and Person constructs. Note that this section does NOT state
that ONLY those elements may be extended; rather, the section defines
the characteristics of two types of extensions that could occur on those
subsets of elements.  The characteristics of extensions on other
elements in the Atom vocabulary are left undefined.

The definitions of the atomCommonAttributes (which allows any number of
undefinedAttributes and the definition of undefinedContent is very
clear on the point that extensions ARE allowed on Link.  Such extensions
may not be semantically meaningful to RFC4287, but they are nonetheless
legal and a valid component of the Atom data model.

[snip]
 What I see as a problem is that reasonable implementations will not
 preserve Atom documents bit-for-bit, so they will need to explicitly
 support this draft if they don't want to corrupt data by dropping the
 thr:count attributes. By the letter of RFC4287 there is no problem
 with the draft, but practically there is something like a layering
 concern if an extension requires existing conformant implementations
 to be changed.
 

Atom does not define any notion of conformance.  That is, there are no
requirements anywhere that define what aspects of the Atom data model an
implementation MUST/SHOULD/MAY support. It is, therefore, reasonable to
expect that different implementations will offer varying levels of
support for a variety of the core features offered by the protocol.  For
instance, Atom's data model allows for multiple enclosure links.  In my
Atom implementation, this is easily handled and exposed by the API; in
Microsoft's implementation, however, only a single enclosure is exposed.
 Some implementations do not expose any link other than the first
alternate link that they happen to find in the entry.

I'm sure there are countless such examples.  Some implementations don't
use/preserve the scheme attribute on the category element; some
implementations don't fully support the atom content model (e.g. base64
encoded content); some implementations don't support XML digital
signatures; etc.

Because there is no 

Re: Feed Thread in Last Call

2006-05-18 Thread A. Pagaltzis

* James M Snell [EMAIL PROTECTED] [2006-05-18 17:40]:
 My interpretation of the text and the RELAX NG definition is
 that while the specification does not assign any meaning to
 extensions of the link element, it is nonetheless explicitly
 allowed.

Noone ever debated that.

 It may have been a mistake, but the discussion of section 6.4
 is explicitly scoped *only* to child elements of atom:entry,
 atom:feed, atom:source and Person constructs.

That was a mistake, yes. Unfortunately, hindsight is 20/20.

 Note that this section does NOT state that ONLY those elements
 may be extended; rather, the section defines the
 characteristics of two types of extensions that could occur on
 those subsets of elements. The characteristics of extensions on
 other elements in the Atom vocabulary are left undefined.

Yes. That means extending other elements is a free-for-all just
as it is in RSS 2.0, and we know the problems that this poses in
practice. Extending Atom in ways other than those defined in Sec
6.4. has the same problems as extending RSS 2.0 with namespaced
elements.

Regards,
-- 
Aristotle Pagaltzis // http://plasmasturm.org/



Re: Feed Thread in Last Call

2006-05-18 Thread Robert Sayre


Look at that giant email. Seems to me that it's a debate taking place
for no discernable reason. There's no technical reason for the
placement of the attributes, and management has made it clear that any
objections are irrelevant.

Hope that helps!

On 5/18/06, James M Snell [EMAIL PROTECTED] wrote:


David,

David Powell wrote:
 Tuesday, May 16, 2006, 4:50:03 AM, James M Snell wrote:

 A few of the individuals on the WG had a problem with the placement of
 the attributes due to various limitations of a few existing Atom 1.0
 implementations.

 That doesn't accurately state my problem with FTE. My concern is more
 general than the compatibility with a specific Atom implementations.
 The fact that the MS feed platform exhibits the issue is just a
 confirmation that the issue is more than a theoretical concern.


My apologies for the misrepresentation. It was unintentional.

 An implementor that wants to /consume/ Atom (such as a feed API, or
 store), ought to be able to create an accurate implementation just by
 reading RFC4287. That document describes what properties entries,
 feeds, links, and extension elements have, and how they are
 represented in an Atom document. Using this it is possible to create a
 database schema or OO API that can represent feed data.


When I look at RFC4287 I see the following statements:

  1.3 : Some sections of this specification are illustrated with
 fragments of a non-normative RELAX NG Compact schema
 [RELAX-NG].  However, the text of this specification provides
 the definition of conformance.
4.2.7 : The atom:link element defines a reference from an entry or
 feed to a Web resource.  This specification assigns no meaning
 to the content (if any) of this element.
  6.1 : Markup from other vocabularies (foreign markup) can be used
 in an Atom Document.
  6.3:  Atom Processors that encounter foreign markup in a location
 that is legal according to this specification MUST NOT stop
 processing or signal an error.
  6.4:  Atom allows foreign markup anywhere in an Atom document, except

 where it is explicitly forbidden.

Further, the RELAX NG definition for atom:link is,

   atomLink =
  element atom:link {
 atomCommonAttributes,
 attribute href { atomUri },
 attribute rel { atomNCName | atomUri }?,
 attribute type { atomMediaType }?,
 attribute hreflang { atomLanguageTag }?,
 attribute title { text }?,
 attribute length { text }?,
 undefinedContent
  }


   atomCommonAttributes =
  attribute xml:base { atomUri }?,
  attribute xml:lang { atomLanguageTag }?,
  undefinedAttribute*

   undefinedAttribute =
 attribute * - (xml:base | xml:lang | local:*) { text }

   undefinedContent = (text|anyForeignElement)*

My interpretation of the text and the RELAX NG definition is that while
the specification does not assign any meaning to extensions of the link
element, it is nonetheless explicitly allowed.

It may have been a mistake, but the discussion of section 6.4 is
explicitly scoped *only* to child elements of atom:entry, atom:feed,
atom:source and Person constructs. Note that this section does NOT state
that ONLY those elements may be extended; rather, the section defines
the characteristics of two types of extensions that could occur on those
subsets of elements.  The characteristics of extensions on other
elements in the Atom vocabulary are left undefined.

The definitions of the atomCommonAttributes (which allows any number of
undefinedAttributes and the definition of undefinedContent is very
clear on the point that extensions ARE allowed on Link.  Such extensions
may not be semantically meaningful to RFC4287, but they are nonetheless
legal and a valid component of the Atom data model.

[snip]
 What I see as a problem is that reasonable implementations will not
 preserve Atom documents bit-for-bit, so they will need to explicitly
 support this draft if they don't want to corrupt data by dropping the
 thr:count attributes. By the letter of RFC4287 there is no problem
 with the draft, but practically there is something like a layering
 concern if an extension requires existing conformant implementations
 to be changed.


Atom does not define any notion of conformance.  That is, there are no
requirements anywhere that define what aspects of the Atom data model an
implementation MUST/SHOULD/MAY support. It is, therefore, reasonable to
expect that different implementations will offer varying levels of
support for a variety of the core features offered by the protocol.  For
instance, Atom's data model allows for multiple enclosure links.  In my
Atom implementation, this is easily handled and exposed by the API; in
Microsoft's implementation, however, only a single enclosure is exposed.
 Some implementations do not expose any link other than the first
alternate link that they happen to find in the entry.

I'm sure there are 

Re: Feed Thread in Last Call

2006-05-18 Thread A. Pagaltzis

* Robert Sayre [EMAIL PROTECTED] [2006-05-18 18:05]:
 There's no technical reason for the placement of the
 attributes,

Do you have better ideas on how to provide this information on a
per-link basis? It would help if you actually tried to suggest an
approach instead of bashing what’s there.

Regards,
-- 
Aristotle Pagaltzis // http://plasmasturm.org/



Re: Feed Thread in Last Call

2006-05-18 Thread Antone Roundy


On May 18, 2006, at 8:10 AM, Brendan Taylor wrote:

Do you have any suggestions about how this metadata could be included
without changing the content of the feed? AFAICT the only solution  
is to

not use the attributes (which aren't required, of course).


If it's in the feed document and it gets updated other than when the  
entry itself is updated (...and it wouldn't be of much use if it were  
only updated when the entry was updated), it's going to result in  
data getting re-fetched when nothing but the comment count and  
timestamp change.  I don't see any way around that.  So if you really  
want a way to publish comment counts and timestamps without causing  
lots of unchanged data from getting refetched, you're going to have  
to separate that data out of the feed. Here's pseudo-XML for a  
possible approach:


feed ...
...
link rel=comment-tracking href=... /
...
entry
idfoo/id
...
/entry
entry
idbar/td
...
/entry
...
/feed

and in another document:

ct:comment-tracking xmlns:ct=... xmlns:atom=... ...
atom:link rel=related href=URL of the feed ... /
ct:entry ref=foo
		atom:link rel=comments href=... type=... hreflang=...  
ct:count=5 ct:when=... /
		atom:link rel=comments href=... type=... hreflang=...  
ct:count=3 ct:when=... /

/ct:entry
ct:entry ref=bar
		atom:link rel=comments href=... type=... hreflang=...  
ct:count=0 ct:when=... /
		atom:link rel=comments href=... type=... hreflang=...  
ct:count=1 ct:when=... /

/ct:entry
...
/ct:comment-tracking

Of course the comment tracking document wouldn't only be  
authoritative for feeds that pointed to it with a comment-tracking link.


This would require an extra subscription to track the comments, as  
well as understanding an additional format (as opposed to just an  
additional extension--either approach requires SOME additional work),  
but it would prevent unnecessary downloads by clients that aren't  
aware of it, and would reduce the bandwidth used by those that are.


This approach could be generalized to enable offloading of other  
metadata that's more volatile than the entries themselves.


Antone



Re: Feed Thread in Last Call

2006-05-18 Thread A. Pagaltzis

* Antone Roundy [EMAIL PROTECTED] [2006-05-18 20:05]:
 and in another document:
 
 ct:comment-tracking xmlns:ct=... xmlns:atom=... ...
   atom:link rel=related href=URL of the feed ... /
   ct:entry ref=foo
   atom:link rel=comments href=... type=... 
   hreflang=...  ct:count=5 ct:when=... /
   atom:link rel=comments href=... type=... 
   hreflang=...  ct:count=3 ct:when=... /
   /ct:entry
   ct:entry ref=bar
   atom:link rel=comments href=... type=... 
   hreflang=...  ct:count=0 ct:when=... /
   atom:link rel=comments href=... type=... 
   hreflang=...  ct:count=1 ct:when=... /
   /ct:entry
   ...
 /ct:comment-tracking
 
 Of course the comment tracking document wouldn't only be
 authoritative for feeds that pointed to it with a
 comment-tracking link.
 
 This would require an extra subscription to track the comments,
 as well as understanding an additional format (as opposed to
 just an additional extension--either approach requires SOME
 additional work), but it would prevent unnecessary downloads by
 clients that aren't aware of it, and would reduce the bandwidth
 used by those that are.
 
 This approach could be generalized to enable offloading of
 other metadata that's more volatile than the entries
 themselves.

Actually, you don’t really need another format. There’s no reason
why you couldn’t use atom:feed in place of your hypothetical
ct:comment-tracking. :-) Your ct:entry elements could almost be
atom:entry ones instead, too, except that assigning them titles
and IDs feels like overkill.

The real cost is not the cost of an extra format, but that
implementations then need to understand the FTE in order to know
to poll an extra document to retrieve the out-of-band metadata.

Regards,
-- 
Aristotle Pagaltzis // http://plasmasturm.org/



Re: Feed Thread in Last Call

2006-05-18 Thread Antone Roundy


On May 18, 2006, at 12:31 PM, A. Pagaltzis wrote:

Actually, you don’t really need another format. There’s no reason
why you couldn’t use atom:feed in place of your hypothetical
ct:comment-tracking. :-) Your ct:entry elements could almost be
atom:entry ones instead, too, except that assigning them titles
and IDs feels like overkill.
The point of the whole exercise is to create a lightweight document  
for volatile metadata. If it's an atom:feed, you have to include a  
lot of stuff that's not needed here--atom:title, atom:updated,  
atom:author, and atom:summary or atom:content.  Also, you'd need to  
have an atom:id for each entry in addition to the @ref pointing to  
the entry that it talks about.



The real cost is not the cost of an extra format, but that
implementations then need to understand the FTE in order to know
to poll an extra document to retrieve the out-of-band metadata.
Sure, but if they don't understand FTE, they wouldn't know what to do  
with the extra metadata anyway even if it were in the main feed.   
They MIGHT be able to do some generic processing of the comments  
link, but the reliability of any generic processing algorithm for  
unknown link types is questionable since we left atom:link open to  
all sorts of uses.  And you COULD keep the comments links in the main  
feed but just leave off @count and @when for the benefit of apps that  
don't process the sibling document.


On May 18, 2006, at 11:48 AM, Antone Roundy wrote:
This approach could be generalized to enable offloading of other  
metadata that's more volatile than the entries themselves.
I don't know yet what other metadata might be handled this way, but  
here's slightly revised pseudo-XML that makes it more general and  
adds a few useful things:


feed ...
idfoobar/id
...
link rel=volatile href=... /
...
entry
idfoo/id
...
/entry
entry
idbar/td
...
/entry
...
/feed

v:volatile ref=foobar xmlns:v=... xmlns=http://www.w3.org/2005/ 
Atom xmlns:thr=...!-- @ref could be omitted if using with RSS --
	link rel=related href=URL of the feed ... /!-- don't really  
need something different from related, right? --

updated.../updated
	v:entry ref=foo!-- @ref could be a guid if using with an RSS  
2.0 feed, though we all know that RSS 2.0 guids are misused in ways  
that might make the connection unreliable --

updated.../updated
		link rel=comments href=... type=... hreflang=...  
thr:count=5 thr:when=... /
		link rel=comments href=... type=... hreflang=...  
thr:count=3 thr:when=... /

/v:entry
v:entry ref=bar
updated.../updated
		link rel=comments href=... type=... hreflang=...  
thr:count=0 thr:when=... /
		link rel=comments href=... type=... hreflang=...  
thr:count=1 thr:when=... /

/v:entry
...
/v:volatile




Re: Feed Thread in Last Call

2006-05-18 Thread A. Pagaltzis

* Antone Roundy [EMAIL PROTECTED] [2006-05-18 21:40]:
 The point of the whole exercise is to create a lightweight
 document for volatile metadata. If it's an atom:feed, you have
 to include a lot of stuff that's not needed here--atom:title,
 atom:updated, atom:author, and atom:summary or atom:content.
 Also, you'd need to have an atom:id for each entry in addition
 to the @ref pointing to the entry that it talks about.

I did say that atom:entry is overkill. You could still use a feed
document, though. If you have no atom:entry in it you can elide
the feed-level atom:author, and the other required elements for a
feed (atom:id and atom:updated) seem like a good idea to have in
this sort of document. Only atom:title is unnecessary, but that
does not feel like a big burden.

 Sure, but if they don't understand FTE, they wouldn't know what
 to do with the extra metadata anyway even if it were in the
 main feed.

That is only half correct. The point of Sec 6.4 is to allow
intermediaries at the infrastructure level (which includes things
like the RSS Platform) to store and pass on extension metadata
generically, without having to understand what a particular
extension means. If you put this metadata out of band, then the
application layer has to take on infrastructure layer
responsibilities.

Note that I’m not arguing against the approach. It seems like an
interesting idea. I’m just pointing out that it does have costs.

Regards,
-- 
Aristotle Pagaltzis // http://plasmasturm.org/



Re: Feed Thread in Last Call

2006-05-18 Thread M. David Peterson
a:f id=idoffeed a:ds=1a:e id=idofentry a:r=2a:c id=idofcomment a:r=1a:c id=idofcomment a:r=2/
/a:c/a:ea:e id=idofentry: a:r=3//a:fThe requestor sends a request for all entries and comments on those entiries since a certain date. If the date request is considered reasonable, a compact atom syntax that contains,
a) a determination as to whether they support providing diffs a:ds=0 false, a:ds=1, trueb) the relavent pieces necessary to determine if,b:1) you have a local instance of that id. 
b:1:1) If yes, compare the revision (a:r) value. b:1:1:1) If the same, ignore, b:1:1:2) if
different, the difference is determined, and stored until the compact
syntax above has finished being processed.b:1:2) If there is no local instance of that id, store the this until the process has finished.recurse until complete.recurse the result:a: If you can process the diff, and they support returning just the diff, set a request header determined to specify this to the server.
b: set a header to specify to the server if you want the exact specified revision, or additional revisions if they have changed since the original query.c: return a request for each updated or new resource, with the difference between the local revision number and the revision number on the server if appropriate.
each request is initially atomic, with the ability to be grouped if the server determines that it would be more efficient at present time to handle one request at a time, or grouped together using a conanical compression of the requested items. This would be returned in the response header such as to maintain a consistent ability to adapt at any moment to current oad on the server.
nothing is approximate, each side of the transaction has the ability to adapt to change, and to decide if it wants to handle potential differences that take place during the span between requests now, or at a later date. With each transaction, enough information is provided to quickly calculate and determine, or specify a default if the current load is past a certain threshold, while still maintaining the knowledge that updates exists, and when the load allows, make a new request based on the difference in stored values that pertain to each id it has knowledge to have differences.
If during this span, the server in which receives the request realizes that since the last request, a resource has been removed/deleted, a header can be set to specify that future calculations should be based on the new difference instead of the old.
In the above scenario the amount of data exchange is at a bare minimum, the processing required to calculate the differences is at a bare mininum, it maintains a level of data integrity that is granular enough to adapt to each change in the system, without requirement of extensive processing to determine this difference, while maintaining an agile/adaptible foundation that can adjust as needed without loss of data integrity on either side of the transaction.
Given the amount of data sent with initial request is at a bare minimum, this can be set in memory as the default response based on the time difference to determine the address of where to begin streaming the request, using the default a:f id=feedid to open/close the response stream at the appropriate start and stop point of the returned stream.
Please disregard the above if I have left out obvious areas in which makes this irrelevant. Not trying to take a this is the absolute right way to do this and instead inject the smallest, simplest path that seems to logically provide the necessary pieces to make the transaction processing of differences as simple and efficient as possible, while doing so in a way thats just outside the box, but close enough as to not require any changes to any actual draft specifications, and instead a way to illiminate some of the concerns presented that suggested potentials areas of inefficient or innacurate behaviors that hold potential for problems down the road.
Peace :)On 5/18/06, A. Pagaltzis [EMAIL PROTECTED] wrote:
* Antone Roundy [EMAIL PROTECTED] [2006-05-18 20:05]: and in another document: ct:comment-tracking xmlns:ct=... xmlns:atom=... ...
 atom:link rel=related href="" of the feed ... / ct:entry ref=foo atom:link rel=comments href="" type=...
 hreflang=...ct:count=5 ct:when=... / atom:link rel=comments href="" type=... hreflang=...ct:count=3 ct:when=... /
 /ct:entry ct:entry ref=bar atom:link rel=comments href="" type=... hreflang=...ct:count=0 ct:when=... /
 atom:link rel=comments href="" type=... hreflang=...ct:count=1 ct:when=... / /ct:entry
 ... /ct:comment-tracking Of course the comment tracking document wouldn't only be authoritative for feeds that pointed to it with a comment-tracking link.
 This would require an extra subscription to track the comments, as well as understanding an additional format (as opposed to just an additional extension--either approach requires SOME additional work), but it would prevent unnecessary downloads by
 

Re: Feed Thread in Last Call

2006-05-18 Thread Lisa Dusseault



On May 18, 2006, at 8:56 AM, Robert Sayre wrote:


Look at that giant email. Seems to me that it's a debate taking place
for no discernable reason. There's no technical reason for the
placement of the attributes, and management has made it clear that any
objections are irrelevant.


I realize that the placement of the attributes is one choice among  
many.  Sometimes you just have to make a choice and there's no reason  
beyond it needs to go somewhere.  I've been trying to understand if  
there's a technical problem with the draft's chosen placement of the  
attributes and the best case I've seen is that that location is  
technically disallowed by RFC4287, an assertion which is disputed  
(alas, natural language meanings are often disputed).


Am I missing something in the case against the choice of location for  
the metadata?


Thanks,
Lisa



Re: Feed Thread in Last Call

2006-05-17 Thread Martin Duerst


Hello Robert,

It's not the IETF which wants to move this on on Standards Track,
it's (currently) James as an individual submitter. The IESG just
did what it does for all such requests from individuals: Put the
document out for IETF Last Call and tell the relevant mailing lists
about it.

Now it's your (and everybody else's) turn to tell the IESG what
you think about this draft. A short, but clearly argued and nicely
worded mail, with some easy-to-follow pointers to further material,
is all that is needed. This may say okay with Standards Track iff
these things get fixed or should be experimental because ... or
even too controversial for an individual submission, needs a WG.

The time you invest in this email will be a lot better spent than
writing yet another mail to James and this list.

Lisa (the sponsoring AD) and the rest of the IESG will then look
at all the input they get, and will make a decision.

Regards,Martin.

At 07:03 06/05/17, Robert Sayre wrote:

On 5/16/06, Paul Hoffman [EMAIL PROTECTED] wrote:
 At 4:33 AM +0200 5/16/06, Robert Sayre wrote:
 I thought the working group was fairly clear about the dubious value
 and placement of these attributes,

 For the benefit of Lisa, who is the sponsoring AD for this document,
 please list links to those messages.

James changed the document in response to those messages. That should
be enough. Maybe she could ask James about them. It's not my
obligation to spelunk for them, and it's certainly not your place to
start making demands like that.

 So you don't think they're important or needed, and then
 WG doesn't have consensus on them.

 Quite true, but it is true because there has never been a call for
 consensus on the document, and there won't be in the future.

Well, I'm not going to quibble with you about procedural details. But
I have to wonder why they're in the document at all.

Looks like the IETF wants to publish a proposed standard explicitly
designed to break a very popular implementation, with no technical
reason. I think that speaks volumes about the IETF, its management,
and the quality of its individual contributors.

You don't have to listen to the WG, but if one or two WG members are
going to deploy and then standardize whatever they've done, that's an
informational document.

 That is not true. If it is a protocol or a format, standards track is
 also appropriate.

Well, I don't want to standardize some of what James has deployed. It
won't work in Sean's implementation. I'm not sure I can interoperably
implement the parts in question. Your two biggest client implementers
aren't real happy about this. It might be appropriate if you really
stretch, but it's sure not smart.

--

Robert Sayre
 



Re: Feed Thread in Last Call

2006-05-17 Thread Sylvain Hellegouarch


[snip]
   - We're talking about adding machine-parsable data that would be
 invisible to readers of the post content

 I don't know. The specification says nothing about that. Presumably,
 the implementers that have already deployed know what they are for.


 Machine-parseable data that may or may not be presented to users. The
 spec is silent on how the metadata should be used because there is no
 reason to dictate how it should be used.  Implementations should use it
 in whatever way they feel is most appropriate.


I'm sorry to stir this up again but I've read once more the last FT draft
and I still cannot understand the use of the thr:count and thr:when
attributes. Well in regards to the context they sit I see their meaning
but I cannot see their value.

If a feed containg FTE information is meant to be handled by machines
only, then those values are not precise enough to be use (but I'd be happy
to gearing about them though). If those values are to be presented to
users, they are also not precise to have any interest.

Besides, say a comment is added to the comments feed. I, as an application
developer, will want to update thr:count and thr:when of the entry itself.
Meaning that I will have to disregard any If-Modified-Since header sent by
an aggregator to check out if my entry has changed when it has actually
not changed per se.

Anyway, I do not see the value brought by thr:count and thr:when
alltogether. Since it is a MAY as well, I hardly see the point of keeping
them.

Another point is that neither your draft nor RFC 4287 seem to say what a
processor, which cannot process a value of the rel attribute, should do.
Should the link be ignored? Should an error be raised? I assume the former
but sadly the spec is not helping in this case.

Finally, if I set a link rel=replies ... / into a feed element, should
the ref attribute of the in-reply-to should use the id of the feed or the
entry it concerns? If it is the former, aggregators won't be able to
correlate threads and entries.

- Sylvain



Re: Feed Thread in Last Call

2006-05-17 Thread A. Pagaltzis

* Eric Scheid [EMAIL PROTECTED] [2006-05-17 14:25]:
 would this mean this is possible:
 
 entry
 link rel=replies thr:count=5 xml:lang=en href=1 /
 link rel=replies thr:count=1 xml:lang=fr href=1 /
 ...
 /entry

You mean `hreflang`, not `xml:lang`, right?

I have to say at first blush I don’t see why it should not work,
so I find your thought experiment quite amusing.

Regards,
-- 
Aristotle Pagaltzis // http://plasmasturm.org/



Re: Feed Thread in Last Call

2006-05-17 Thread Eric Scheid

On 17/5/06 10:47 PM, A. Pagaltzis [EMAIL PROTECTED] wrote:

 You mean `hreflang`, not `xml:lang`, right?

oops, yes.

 I have to say at first blush I don¹t see why it should not work,
 so I find your thought experiment quite amusing.

:-)




Re: Feed Thread in Last Call

2006-05-17 Thread James M Snell



Sylvain Hellegouarch wrote:
[snip]
 If a feed containg FTE information is meant to be handled by machines
 only, then those values are not precise enough to be use (but I'd be happy
 to gearing about them though). If those values are to be presented to
 users, they are also not precise to have any interest.
 

I have no idea what you mean by not precise enough to be used. What
makes them imprecise?

Look at just about piece of blogging software that accepts comments and
on the front page you'll typically see a link that specifies the number
of comment received for that entry.  It may, or may not be an accurate
count, but it serves a useful purpose. Why is the same metadata not
useful in an entry/feed?

[snip]
 Another point is that neither your draft nor RFC 4287 seem to say what a
 processor, which cannot process a value of the rel attribute, should do.
 Should the link be ignored? Should an error be raised? I assume the former
 but sadly the spec is not helping in this case.
 

The spec is silent on this, handle it however you want to handle it in
your implementation.  IMHO, Good implementations will silently ignore
links they don't understand.

 Finally, if I set a link rel=replies ... / into a feed element, should
 the ref attribute of the in-reply-to should use the id of the feed or the
 entry it concerns? If it is the former, aggregators won't be able to
 correlate threads and entries.
 

The ref attribute is the unique identifier of the resource being
responded to.  It doesn't make make sense to respond to a Feed.

- James



Re: Feed Thread in Last Call

2006-05-17 Thread Sylvain Hellegouarch


 I have no idea what you mean by not precise enough to be used. What
 makes them imprecise?

The very fact they don't represent a state that can be trusted. As the
spec says they are not the true value but the true value at one given
time.

 Look at just about piece of blogging software that accepts comments and
 on the front page you'll typically see a link that specifies the number
 of comment received for that entry.  It may, or may not be an accurate
 count, but it serves a useful purpose. Why is the same metadata not
 useful in an entry/feed?

Well to take your example a bit further. Say I'm following comments posted
to an entry, since there is no way for me to decide if the number provided
by the extension is the most up-to-date, I will have to manually go to the
source itself and check if someone replied since my last visit. How is
that useful to me as an user?

Besides you do not answer the question of HTTP caching I mentionned.
Basically it would break most planets out there which rely heavily on the
'304 Not Modified' status code to check if a feed has been modified. In
this case a server such as Apache would respond: well yes the file has
changed on the disk so here it is when in fact the content of the feed
has only changed for the number of comments of an entry.

Clients could of course work around such issue but this is a rather big
problem to me.

 The ref attribute is the unique identifier of the resource being
 responded to.  It doesn't make make sense to respond to a Feed.

Common sense is one thing, being clearly specified is another one.

- Sylvain



Re: Feed Thread in Last Call

2006-05-17 Thread Sylvain Hellegouarch


 The ref attribute is the unique identifier of the resource being
 responded to.  It doesn't make make sense to respond to a Feed.

By the way, don't get me wrong. I am really looking forward to the FTE
replies element but not its attributes which are just useless and counter
productive to my liking.

- Sylvain



Re: Feed Thread in Last Call

2006-05-17 Thread James M Snell


Sylvain Hellegouarch wrote:
 
 I have no idea what you mean by not precise enough to be used. What
 makes them imprecise?
 
 The very fact they don't represent a state that can be trusted. As the
 spec says they are not the true value but the true value at one given
 time.
 

The values are no more or less trustworthy than the link's own type,
length, and hreflang attributes.  I refer you to
http://www.w3.org/2001/tag/doc/mime-respect-20060412

 Look at just about piece of blogging software that accepts comments and
 on the front page you'll typically see a link that specifies the number
 of comment received for that entry.  It may, or may not be an accurate
 count, but it serves a useful purpose. Why is the same metadata not
 useful in an entry/feed?
 
 Well to take your example a bit further. Say I'm following comments posted
 to an entry, since there is no way for me to decide if the number provided
 by the extension is the most up-to-date, I will have to manually go to the
 source itself and check if someone replied since my last visit. How is
 that useful to me as an user?
 

If you need an exact count, go to the linked resource. Feed publishers
should take steps to ensure that the count is accurate. Again, read the
W3C Tag finding referenced above.

 Besides you do not answer the question of HTTP caching I mentionned.
 Basically it would break most planets out there which rely heavily on the
 '304 Not Modified' status code to check if a feed has been modified. In
 this case a server such as Apache would respond: well yes the file has
 changed on the disk so here it is when in fact the content of the feed
 has only changed for the number of comments of an entry.
 

HTTP provides a possible solution to this in the form of a weak entity
tag.  Also, Feed delta encoding could be leveraged to further mitigate
the potential issues.

 Clients could of course work around such issue but this is a rather big
 problem to me.
 

I would suspect that you currently have the same problems with folks
that use the highly popular slash:comments RSS extension. FTE is not
introducing any new problems, nor is it seeking to fix existing problems
in the feed syndication model.

- James



Re: Feed Thread in Last Call

2006-05-17 Thread Eric Scheid

On 17/5/06 10:47 PM, A. Pagaltzis [EMAIL PROTECTED] wrote:

 entry
 link rel=replies thr:count=5 xml:lang=en href=1 /
 link rel=replies thr:count=1 xml:lang=fr href=1 /
 ...
 /entry
 
 You mean `hreflang`, not `xml:lang`, right?

I also meant there to be different hrefs too :-(

entry
link rel=replies thr:count=5 hreflang=en href=1 /
link rel=replies thr:count=1 hreflang=fr href=2 /
...
/entry


e.



Re: Feed Thread in Last Call

2006-05-17 Thread Eric Scheid

On 18/5/06 1:36 AM, Sylvain Hellegouarch [EMAIL PROTECTED] wrote:

 Apache would respond: well yes the file has
 changed on the disk so here it is when in fact the content of the feed
 has only changed for the number of comments of an entry.

so? 

we have atom:updated to help aggregators detect if there has been a
significant change ... everything else is just meta data.

e.



Re: Feed Thread in Last Call

2006-05-17 Thread Eric Scheid

On 17/5/06 10:47 PM, A. Pagaltzis [EMAIL PROTECTED] wrote:

 I have to say at first blush I don¹t see why it should not work,
 so I find your thought experiment quite amusing.

this should be amusing too:

entry
link rel=replies thr:count=5 href=1 title=trackbacks! /
link rel=replies thr:count=1 href=2 title=comments! /
...
/entry

e.




Re: Feed Thread in Last Call

2006-05-17 Thread James M Snell

Yes. This is possible. What I'm not sure about is whether amusing is
good or bad. What point are you trying to make exactly?

- James

Eric Scheid wrote:
 On 17/5/06 10:47 PM, A. Pagaltzis [EMAIL PROTECTED] wrote:
 
 I have to say at first blush I don¹t see why it should not work,
 so I find your thought experiment quite amusing.
 
 this should be amusing too:
 
 entry
 link rel=replies thr:count=5 href=1 title=trackbacks! /
 link rel=replies thr:count=1 href=2 title=comments! /
 ...
 /entry
 
 e.
 
 
 



Re: Feed Thread in Last Call

2006-05-17 Thread Sylvain Hellegouarch


 Can't you just ignore them then?  The feed update / last-modified issue
 is not isolated to the use of thr:when and thr:count.  As I mentioned in
 another note, you end up with the exact same problem when folks use the
 slash:comments element but no one seems to mind that.  This problem is
 not unique to FTE, nor does FTE make the problem any worse.

 What else, in your opinion makes them useless and counter productive?
 I'm seriously asking because I really don't see it.


Well to me there is no need to include, or specify, information that
cannot be found otherwise already.

Specifying the way to find how to retrieve the replies resource is a great
idea and I'm looking forward to it.

However, if I'm an aggregator I don't need the thr:count and thr:when
because I will find those information anyway with the following process:

1. I fetch the comment feed and put it my cache
2. I want to know if a new comment has been posted, I won't fetch the feed
containing the entry but the feed containing the comment
   a. No comment added = 304 Not Modified
   B. A comment added = I fetch the feed again and know both the number
of comments and the date of the latest one

This process will happen anyway from the aggregator point of view so I see
little value in the 'thr' attributes overall.

- Sylvain



Re: Feed Thread in Last Call

2006-05-17 Thread Sylvain Hellegouarch


 On 18/5/06 1:36 AM, Sylvain Hellegouarch [EMAIL PROTECTED] wrote:

 Apache would respond: well yes the file has
 changed on the disk so here it is when in fact the content of the feed
 has only changed for the number of comments of an entry.

 so?

 we have atom:updated to help aggregators detect if there has been a
 significant change ... everything else is just meta data.

 e.


I'm not sure you have understood me. I'm not talking about the application
level but from the HTTP level. If we update the feed each time we update
the thr attributes then we screw the HTTP cache big time and waste
bandwith. If we don't update them to avoid that issue then those
attributes are just useless.

Personally I have no interest in doing either way.

- Sylvain



Re: Feed Thread in Last Call

2006-05-17 Thread Sylvain Hellegouarch



 HTTP provides a possible solution to this in the form of a weak entity
 tag.  Also, Feed delta encoding could be leveraged to further mitigate
 the potential issues.

ETag are not reliable without If-Modified-Since header and they are not as
wide spreaded.



 I would suspect that you currently have the same problems with folks
 that use the highly popular slash:comments RSS extension. FTE is not
 introducing any new problems, nor is it seeking to fix existing problems
 in the feed syndication model.

This is rather sad. So because others are broken we should not do better.

- Sylvain



Re: Feed Thread in Last Call

2006-05-17 Thread James M Snell


Sylvain Hellegouarch wrote:
[snip]
 I would suspect that you currently have the same problems with folks
 that use the highly popular slash:comments RSS extension. FTE is not
 introducing any new problems, nor is it seeking to fix existing problems
 in the feed syndication model.
 
 This is rather sad. So because others are broken we should not do better.
 

No. I'm only just trying to solve one problem at a time.

- James



Re: Feed Thread in Last Call

2006-05-17 Thread A. Pagaltzis

* Sylvain Hellegouarch [EMAIL PROTECTED] [2006-05-17 20:10]:
 However, if I'm an aggregator I don't need the thr:count and
 thr:when because I will find those information anyway with the
 following process:

Consider the situation where a weblog only has a single global
comments feed – which I strongly favour because having one of
them for each entry just does not scale. Then it’s easily
possible for some comments to have fallen of the bottom of the
comments feed by the time you fetch it to check. In that case,
the information in the attributes will be more accurate than the
process you describe.

Regards,
-- 
Aristotle Pagaltzis // http://plasmasturm.org/



Re: Feed Thread in Last Call

2006-05-17 Thread James M Snell


Sylvain Hellegouarch wrote:
[snip]
 What else, in your opinion makes them useless and counter productive?
 I'm seriously asking because I really don't see it.

 
 Well to me there is no need to include, or specify, information that
 cannot be found otherwise already.
 

Do you feel the same way about the link element's existing type, title,
hreflang, and length attributes?

 Specifying the way to find how to retrieve the replies resource is a great
 idea and I'm looking forward to it.
 
 However, if I'm an aggregator I don't need the thr:count and thr:when
 because I will find those information anyway with the following process:
 
 1. I fetch the comment feed and put it my cache
 2. I want to know if a new comment has been posted, I won't fetch the feed
 containing the entry but the feed containing the comment
a. No comment added = 304 Not Modified
B. A comment added = I fetch the feed again and know both the number
 of comments and the date of the latest one
 
 This process will happen anyway from the aggregator point of view so I see
 little value in the 'thr' attributes overall.
 

This boils down to an implementation choice.  The thr attributes provide
a way for UI's to display something before fetching the feed, which is
often useful for an individual to decide whether or not it is even
worthwhile to fetch to the comments feed in the first place.

Also, consider that comment feeds may span multiple pages (using the
paging link rels).  With your algorithm (which, yes, is the only
authoritative way of determining *exactly* how many comments have been
received), you would have to retrieve every page and count up the
comments.  Considering also that feeds do not necessarily have to be
ordered chronologically (tho most are) and that the feed may contain
comments to multiple entries, getting a precise count of the total
number of comments can be a time and resource consuming process that
involves examining every individual entry in the feed for the presence
of a matching in-reply-to link. Alternatively, you could decide to trust
that the feed publisher may have already done all this work and has
provided a reasonably accurate count in the form of the thr:count
attribute.  It's your choice.

- James



RE: Feed Thread in Last Call

2006-05-17 Thread Byrne Reese

Speaking up:

http://www.majordojo.com/atom/standardizing_the_atom_thread_extension.ph
p

No surprise I guess, but I am a huge +1. Lock this spec down and ship
it.

-Original Message-
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of James M Snell
Sent: Monday, May 15, 2006 3:15 PM
To: atom-syntax
Subject: Feed Thread in Last Call


Hey all,

I'm happy to announce that the Feed Thread extension (draft -10) [1] has
entered Last Call. [2]

The thr:count and thr:when extension attributes are back in Draft -10
following the recent on-list discussion and post by Tim Bray affirming
that the atom:link element is indeed extensible.  I fully recognize that
not everyone on list agrees with this approach, but after trying to
propertly implement alternatives, re-reading RFC4287 and surveying folks
who I know have already done the work necessary to implement Feed
Thread, I believe the decision to keep thr:when and thr:count as
attributes is the right decision.

At this point, Feed Thread support has been deployed in Friendster,
Typepad, and MovableType.  I have also added Feed Thread support to my
Wordpress and Roller blog templates.  IBM has plans to ship at least one
product with Feed Thread support in the not too distant future (our Atom
Publishing Protocol interop/test endpoint currently contains support for
Feed Thread).

If you do or do not want to see Feed Thread move forward as a Proposed
Standard, now is the time to step up and make your case. :-)

- James

[1]http://www.ietf.org/internet-drafts/draft-snell-atompub-feed-thread-1
0.txt
[2]https://datatracker.ietf.org/public/pidtracker.cgi?command=view_iddT
ag=13577rfc_flag=0




Re: Feed Thread in Last Call

2006-05-17 Thread James Holderness


Sylvain Hellegouarch wrote:

However, if I'm an aggregator I don't need the thr:count and thr:when
because I will find those information anyway with the following process:


That's certainly one way of doing things, but not the only way. I'm fairly 
sure there are existing clients that rely on the thread count (using 
slash:comments) to determine whether a replies feed has changed. This makes 
sense when there is a separate feed for each reply - instead of connecting 
to dozens of feeds looking for updates (and hoping they support 304), you 
just download the main feed looking for a change in the thread count.


If you don't like these attributes, that's fine - nobody is forcing you to 
use them. But don't assume that everyone wants to do things the same way as 
you. Don't try and prevent people from doing something different to you just 
because you personally don't like their choice.


Regards
James



Re: Feed Thread in Last Call

2006-05-17 Thread John Panzer




Sylvain Hellegouarch wrote:

  
  
  
Can't you just ignore them then?  The feed update / last-modified issue
is not isolated to the use of thr:when and thr:count.  As I mentioned in
another note, you end up with the exact same problem when folks use the
slash:comments element but no one seems to mind that.  This problem is
not unique to FTE, nor does FTE make the problem any worse.

What else, in your opinion makes them useless and counter productive?
I'm seriously asking because I really don't see it.


  
  
Well to me there is no need to include, or specify, information that
cannot be found otherwise already.
  

The use case we've identified here is to be able to quickly display the
comment count attribute on a web page where you have 10 entries. We
really don't want to have to make 10 extra remote calls to retrieve 10
integers when they are so easily included in the top level entry feed;
in fact, should a standard require this, we'd have to shrug and embed
the data inside proprietary extensions for performance reasons.


  
Specifying the way to find how to retrieve the replies resource is a great
idea and I'm looking forward to it.

However, if I'm an aggregator I don't need the thr:count and thr:when
because I will find those information anyway with the following process:

1. I fetch the comment feed and put it my cache
2. I want to know if a new comment has been posted, I won't fetch the feed
containing the entry but the feed containing the comment
   a. No comment added = 304 Not Modified
   B. A comment added = I fetch the feed again and know both the number
of comments and the date of the latest one

This process will happen anyway from the aggregator point of view so I see
little value in the 'thr' attributes overall.

- Sylvain

  



-- 
John Panzer
System Architect, AOL
http://abstractioneer.org





Re: Feed Thread in Last Call

2006-05-17 Thread Sylvain Hellegouarch

 If you don't like these attributes, that's fine - nobody is forcing you to
 use them. But don't assume that everyone wants to do things the same way
 as
 you. Don't try and prevent people from doing something different to you
 just
 because you personally don't like their choice.

The problem I've raised is not about my taste in the end but about making
sure we have taken every aspects into consideration. As you said, maybe
there are other ways of doing than the basic algorithm I suggested but
they do not play on the same level. Anyway, sorry if I came harsh on this
question. I didn't mean it but saying that I don't have to use it if I
don't like it is not really relevant. We re not discussing what each of us
would do but what we want the community to be able to do.

James  Would you consider adding informative documentation on this matter
in the spec or is that out of its boundaries?

- Sylvain



Re: Feed Thread in Last Call

2006-05-17 Thread Sylvain Hellegouarch


 This boils down to an implementation choice.  The thr attributes provide
 a way for UI's to display something before fetching the feed, which is
 often useful for an individual to decide whether or not it is even
 worthwhile to fetch to the comments feed in the first place.

 Also, consider that comment feeds may span multiple pages (using the
 paging link rels).  With your algorithm (which, yes, is the only
 authoritative way of determining *exactly* how many comments have been
 received), you would have to retrieve every page and count up the
 comments.  Considering also that feeds do not necessarily have to be
 ordered chronologically (tho most are) and that the feed may contain
 comments to multiple entries, getting a precise count of the total
 number of comments can be a time and resource consuming process that
 involves examining every individual entry in the feed for the presence
 of a matching in-reply-to link. Alternatively, you could decide to trust
 that the feed publisher may have already done all this work and has
 provided a reasonably accurate count in the form of the thr:count
 attribute.  It's your choice.

Fair enough. It sounds reasonable but I'm still not fully convinced. I'm
happy we discussed it anyway.

Thanks,
- Sylvain



RE: Feed Thread in Last Call

2006-05-17 Thread Byrne Reese

 Alternatively, you could decide to
 trust that the feed publisher may have already done all this work and
 has provided a reasonably accurate count in the form of the thr:count
 attribute.  It's your choice.

This to me is what its all about. I hear a lot of people saying that you
can't be sure that the comment count is accurate. That the ONLY way to
be sure is to get the whole feed with all the comments.

To those people I would say you have trust issues.

I am being snide, I admit, but truthfully, why would Six Apart (or any
other implementer) not want to keep the two values in sync when it is so
clear that we SHOULD.

Certainly my implementations do. And if they were ever out of sync (i.e.
the count attribute saying 5, and the feed containing 6) then that is a
bug and I frick'n need to fix that.

Byrne




Re: Feed Thread in Last Call

2006-05-16 Thread A. Pagaltzis

* James M Snell [EMAIL PROTECTED] [2006-05-16 06:00]:
 The slash:comments extension element can be used to provide a
 global comment count that operates independently of the replies
 link.

Supply per-link information as namespaced attributes on link
elements, if you must. I don’t like the idea, but it seems there
is unfortunately no way to associate link-specific RFC 4287
Simple or Structured Extension Elements with a link. (But why
`thr:when` rather than `thr:updated`?)

However, don’t neglect to provide a way to supply a global reply
count. That would break the argument that the FTE covers nearly
every threading use cases without having to resort to a gaggle of
other extensions and hence weaken FTE’s position, IMO.

Regards,
-- 
Aristotle Pagaltzis // http://plasmasturm.org/



Re: Feed Thread in Last Call

2006-05-16 Thread Robert Sayre


On 5/16/06, James M Snell [EMAIL PROTECTED] wrote:


Very simple reasons: the attributes are easier to implement,


Speaking as an actual, rather than alleged, client implementer, I find
this assertion ridiculous and dishonest.


are allowed by RFC4287 and are being used in real deployments.


So, the argument is that it's already deployed, then? It looks like
you agree with me.

--

Robert Sayre



Re: Feed Thread in Last Call

2006-05-16 Thread James M Snell



A. Pagaltzis wrote:
 * James M Snell [EMAIL PROTECTED] [2006-05-16 06:00]:
 The slash:comments extension element can be used to provide a
 global comment count that operates independently of the replies
 link.
 
 Supply per-link information as namespaced attributes on link
 elements, if you must. I don’t like the idea, but it seems there
 is unfortunately no way to associate link-specific RFC 4287
 Simple or Structured Extension Elements with a link. (But why
 `thr:when` rather than `thr:updated`?)
 

RFC4287 does not forbid simple or structured extension elements on link.

 However, don’t neglect to provide a way to supply a global reply
 count. That would break the argument that the FTE covers nearly
 every threading use cases without having to resort to a gaggle of
 other extensions and hence weaken FTE’s position, IMO.

I will consider adding a thr:count element to the spec to cover the
global count case.

- James



Re: Feed Thread in Last Call

2006-05-16 Thread Paul Hoffman


At 4:33 AM +0200 5/16/06, Robert Sayre wrote:

I thought the working group was fairly clear about the dubious value
and placement of these attributes,


For the benefit of Lisa, who is the sponsoring AD for this document, 
please list links to those messages.



So you don't think they're important or needed, and then
WG doesn't have consensus on them.


Quite true, but it is true because there has never been a call for 
consensus on the document, and there won't be in the future.


In the IETF, individuals can submit documents to become RFCs without 
those documents being Working Group items. This document (and all of 
the other format extension documents out there) fall into that 
category. If the author asks an Area Director to have the document 
published as a standards-track RFC, the AD will most likely ask for 
input on any relevant mailing list, including any existing WG mailing 
lists.



You don't have to listen to the WG, but if one or two WG members are
going to deploy and then standardize whatever they've done, that's an
informational document.


That is not true. If it is a protocol or a format, standards track is 
also appropriate.


--Paul Hoffman, Director
--Internet Mail Consortium



Re: Feed Thread in Last Call

2006-05-16 Thread Robert Sayre


On 5/16/06, Paul Hoffman [EMAIL PROTECTED] wrote:

At 4:33 AM +0200 5/16/06, Robert Sayre wrote:
I thought the working group was fairly clear about the dubious value
and placement of these attributes,

For the benefit of Lisa, who is the sponsoring AD for this document,
please list links to those messages.


James changed the document in response to those messages. That should
be enough. Maybe she could ask James about them. It's not my
obligation to spelunk for them, and it's certainly not your place to
start making demands like that.


So you don't think they're important or needed, and then
WG doesn't have consensus on them.

Quite true, but it is true because there has never been a call for
consensus on the document, and there won't be in the future.


Well, I'm not going to quibble with you about procedural details. But
I have to wonder why they're in the document at all.

Looks like the IETF wants to publish a proposed standard explicitly
designed to break a very popular implementation, with no technical
reason. I think that speaks volumes about the IETF, its management,
and the quality of its individual contributors.


You don't have to listen to the WG, but if one or two WG members are
going to deploy and then standardize whatever they've done, that's an
informational document.


That is not true. If it is a protocol or a format, standards track is
also appropriate.


Well, I don't want to standardize some of what James has deployed. It
won't work in Sean's implementation. I'm not sure I can interoperably
implement the parts in question. Your two biggest client implementers
aren't real happy about this. It might be appropriate if you really
stretch, but it's sure not smart.

--

Robert Sayre



Re: Feed Thread in Last Call

2006-05-16 Thread James M Snell



Robert Sayre wrote:
[snip]
 Looks like the IETF wants to publish a proposed standard explicitly
 designed to break a very popular implementation, with no technical
 reason. I think that speaks volumes about the IETF, its management,
 and the quality of its individual contributors.
 

...explicitly designed to break a very popular implementation!?  Give
me a break.  I've been purposefully judicious lately not to respond to
crap like this but given the Last Call status on the spec, I think
several very clear points need to be made:

1. My decision to use the attributes has absolutely nothing to do with
Microsoft's implementation.  In fact, the attributes were introduced to
the spec *before* I knew any details about the Microsoft implementation.
Any claims to the contrary are false.  Any claims that I *explicitly
designed* the extension to break a particular vendor implementation
borders on the downright absurd.

2. Microsoft's implementation is no more broken by the use of the
attributes than any other feed reader implementation that has not been
specifically modified to support the extensions.  I use Liferea, it
can't do anything with the thr:count or thr:when attributes either.  I
guess that means I exlicitly designed the spec to break Liferea as
well?  Microsoft's implementation doesn't support multiple enclosures,
so I guess RFC4287 was explicitly designed to break their
implementation? Please, enough.

I asked Byrne Reese if he could load up Sam Ruby's personal blog feed in
IE7 and capture a screenshot.  Sam's feed uses the thr:count and
thr:when attributes.  IE7 worked as expected, properly ignoring the
extensions it does not understand.

  http://www.snellspace.com/public/ie7screen.png

What's broken?

- James



Re: Feed Thread in Last Call

2006-05-16 Thread Robert Sayre


On 5/17/06, James M Snell [EMAIL PROTECTED] wrote:


What's broken?


Do you think the AD and this WG are dumb? Why are you setting up such
an obvious strawman?

Congratulations, your extension didn't break Atom. The point is that
your extension is broken. You're including attributes in that document
that you know won't be visible to a large number of implementations.
You have no technical reason that makes that location compelling, and
several WG members have questioned whether this document adequately
covers the area in question. In fact, you appear unable to explain the
rationale behind any technical decision without resorting to circular
reasoning, logical fallacies, and claims that are outright false.

--

Robert Sayre



Re: Feed Thread in Last Call

2006-05-16 Thread A. Pagaltzis

* Robert Sayre [EMAIL PROTECTED] [2006-05-17 01:50]:
 You have no technical reason that makes that location
 compelling, and several WG members have questioned whether this
 document adequately covers the area in question.

I have to disagree that there is no technical reason.

There is no way to sanely associate additional information with a
link element. I suggested an approach based on cross-referencing
with the `href` value, but interactions with xml:base invalidate
that approach. Other than `href`, there is no other hook on
`atom:link` which could be used for cross-referencing without
resorting to microparsing hacks.

The root of the problem is a miniscule omission in RFC 4287: Sec
6.4. does not list `atom:link` as a location for Metadata
elements. It should have. The effect is that links in Atom can
only be extended at the XML level, not at the model level.

There is no other reasonable choice for the FTE than to supply
this information as namespaced attributes on the link element.
This is now clear.

I hate the idea as much as you do, but RFC 4287 is what it is.

 In fact, you appear unable to explain the rationale behind any
 technical decision without resorting to circular reasoning,
 logical fallacies, and claims that are outright false.

That doesn’t mean there is *no* reason for any of these technical
decisions.

But I agree that James has advocated the position he chose on
this particular issue extremely poorly, just as you’d have done
your own argument a favour by omitting your interpretation of the
matter as vendor politics.

Regards,
-- 
Aristotle Pagaltzis // http://plasmasturm.org/



Re: Feed Thread in Last Call

2006-05-16 Thread Robert Sayre


On 5/17/06, A. Pagaltzis [EMAIL PROTECTED] wrote:



I have to disagree that there is no technical reason.

There is no way to sanely associate additional information with a
link element.


Sure there is, and it's the way James did it. Is the information
valuable? Does the spec cover cardinality issues? Is the link element
useful here? Was the spec less effective in its previous incarnation?
The answer to all of these questions is no.

--

Robert Sayre

I would have written a shorter letter, but I did not have the time.



Re: Feed Thread in Last Call

2006-05-16 Thread Robert Sayre


On 5/17/06, Lisa Dusseault [EMAIL PROTECTED] wrote:


  - We're talking about visibility to implementations of the base
spec only, not implementations of the extension, naturally.  Any new
information can be visible to implementations of that extension.


There's a misunderstanding here. Many applications rely on a feed
parsing service provided by the OS or a language-level library. Some
of those platforms (MS is not the only one) don't provide access to
extension attributes on the link element. For example,

entry
...
foo:bar /
link foo:bar=baz ... /
/entry

here the extension attribute stands a chance of getting lost. The
reason this occurs is because it's much easier to design an API that
doesn't deal with these things in the general case. This situation
could change in the future, as Atom consumer APIs develop.

My implementation will parse and preserve the attribute, but I'm not
sure what I'm supposed to do with it at an application level,
especially if I encounter more than one such link element.

As a result, I see no reason to introduce gratuitous compatibility
problems when the cardinality of the link element doesn't seem to suit
the problem very well.


  - We're talking about adding machine-parsable data that would be
invisible to readers of the post content


I don't know. The specification says nothing about that. Presumably,
the implementers that have already deployed know what they are for.

--

Robert Sayre



Re: Feed Thread in Last Call

2006-05-15 Thread Robert Sayre


On 5/16/06, James M Snell [EMAIL PROTECTED] wrote:


At this point, Feed Thread support has been deployed in Friendster,
Typepad, and MovableType.


I thought the working group was fairly clear about the dubious value
and placement of these attributes, and you yourself posted that no one
was implementing them, they were strictly informational, and free to
be ignored. So you don't think they're important or needed, and then
WG doesn't have consensus on them. Even Tim's comments were in the
abstract, and not related to feed thread at all.

You don't have to listen to the WG, but if one or two WG members are
going to deploy and then standardize whatever they've done, that's an
informational document.


From a technical perspective, the interactions between multiple links

with the extension attributes remain unspecified. As a client
implementor, I suppose I'll find out what exactly they're for whenever
I see the already-completed implementations deployed. In my opinion,
the document should do more to inform the community on the role of
these attributes.


now is the time to step up and make your case.


You've merely stated you believe that moving these attributes back
to the original location is the right decision. That is not a
technical rationale. I would expect to see a more compelling reason,
given the clear, technical rationales of those against your decision.

On an unrelated note, this document contains sections copied verbatim
from RFC 4287, and it would be polite and honest to acknowledge that.

--

Robert Sayre



Re: Feed Thread in Last Call

2006-05-15 Thread A. Pagaltzis

* Robert Sayre [EMAIL PROTECTED] [2006-05-16 04:45]:
 […]

+1

Regards,
-- 
Aristotle Pagaltzis // http://plasmasturm.org/



Re: Feed Thread in Last Call

2006-05-15 Thread James M Snell



Robert Sayre wrote:
 On 5/16/06, James M Snell [EMAIL PROTECTED] wrote:

 At this point, Feed Thread support has been deployed in Friendster,
 Typepad, and MovableType.
 
 I thought the working group was fairly clear about the dubious value

A few of the individuals on the WG had a problem with the placement of
the attributes due to various limitations of a few existing Atom 1.0
implementations. None of the folks I know of that have actually
implemented support for the extension has had any problems with them.

 and placement of these attributes, and you yourself posted that no one
 was implementing them, they were strictly informational, and free to
 be ignored. So you don't think they're important or needed, and then
 WG doesn't have consensus on them. Even Tim's comments were in the
 abstract, and not related to feed thread at all.


I never posted that no one was implementing the attributes. Quite on the
contrary, you can pull up quite a few TypePad and Friendster feeds that
are using them.  You can also look at Sam Ruby's personal blog... or
look at my wordpress and roller blog feeds.  The attributes are being used.

What I did say was that I wasn't aware of anyone using multiple replies
links in a single entry and that I personally did not intend on
publishing any feeds that used multiple replies links in a single entry.

 From a technical perspective, the interactions between multiple links
 with the extension attributes remain unspecified. As a client
 implementor, I suppose I'll find out what exactly they're for whenever
 I see the already-completed implementations deployed. In my opinion,
 the document should do more to inform the community on the role of
 these attributes.
 

The interaction is unspecified because there is no interaction.  As I've
said before, the thr:count and thr:when attributes apply only to the
atom:link element to which they belong.

The slash:comments extension element can be used to provide a global
comment count that operates independently of the replies link.

The roles of the attributes are clearly specified in the spec.  There
are existing feeds in deployment that demonstrate their use.
.
 On an unrelated note, this document contains sections copied verbatim
 from RFC 4287, and it would be polite and honest to acknowledge that.
 

My apologies, I thought I had already done so.  It will be fixed in the
next revision.

- James



Re: Feed Thread in Last Call

2006-05-15 Thread Robert Sayre


On 5/16/06, James M Snell [EMAIL PROTECTED] wrote:


A few of the individuals on the WG had a problem with the placement of
the attributes due to various limitations of a few existing Atom 1.0
implementations.


Right, and you're breaking them because...? You haven't coherently
explained your reason for moving them back. After all, you agreed with
the WG and updated the document, but now you've moved them back for
unexplained reasons and pointed at deployments.


None of the folks I know of that have actually
implemented support for the extension has had any problems with them.


I find your answers most unsatisfying and full of circular reasoning
that serves mostly to dance around the fact that you and a few others
have already deployed. That's been your argument for months now, and
the IETF process has a way to deal with that situation: Informational.

--

Robert Sayre



Re: Feed Thread in Last Call

2006-05-15 Thread James M Snell



Robert Sayre wrote:
 On 5/16/06, James M Snell [EMAIL PROTECTED] wrote:

 A few of the individuals on the WG had a problem with the placement of
 the attributes due to various limitations of a few existing Atom 1.0
 implementations.
 
 Right, and you're breaking them because...? You haven't coherently
 explained your reason for moving them back. After all, you agreed with
 the WG and updated the document, but now you've moved them back for
 unexplained reasons and pointed at deployments.
 

Very simple reasons: the attributes are easier to implement, are allowed
by RFC4287 and are being used in real deployments.  That's more than
enough justification for me.

I agreed in principle with the arguments presented by David and
Aristotle; Accordingly, I drafted up an alternative; Implemented the
alternative; Compared the two implementations and the pros/cons of each;
Discussed those on the mailing list; and decided in the end that the
risk/benefit weighed in favor of the attributes.

After testing a number of Atom implementations, I have yet to find one
that is broken as a result of using the attributes.

- James