<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://www.w3.org/Bugs/Public/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4"
          urlbase="https://www.w3.org/Bugs/Public/"
          
          maintainer="sysbot+bugzilla@w3.org"
>

    <bug>
          <bug_id>7806</bug_id>
          
          <creation_ts>2009-10-05 08:13:38 +0000</creation_ts>
          <short_desc>atom ID element generation for feed entries</short_desc>
          <delta_ts>2010-10-04 14:57:16 +0000</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>HTML WG</product>
          <component>pre-LC1 HTML5 spec (editor: Ian Hickson)</component>
          <version>unspecified</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Windows NT</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>TrackerIssue</keywords>
          <priority>P2</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Julian Reschke">julian.reschke</reporter>
          <assigned_to name="Ian &apos;Hixie&apos; Hickson">ian</assigned_to>
          <cc>ian</cc>
    
    <cc>mike</cc>
    
    <cc>public-html-admin</cc>
    
    <cc>public-html-wg-issue-tracking</cc>
          
          <qa_contact name="HTML WG Bugzilla archive list">public-html-bugzilla</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>28051</commentid>
    <comment_count>0</comment_count>
    <who name="Julian Reschke">julian.reschke</who>
    <bug_when>2009-10-05 08:13:38 +0000</bug_when>
    <thetext> </thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>28052</commentid>
    <comment_count>1</comment_count>
    <who name="Julian Reschke">julian.reschke</who>
    <bug_when>2009-10-05 08:16:03 +0000</bug_when>
    <thetext>&quot;Establish the value of id and has-alternate from the first of the following to apply:

If the article node has a descendant a or area element with an href attribute that successfully resolves relative to that descendant and a rel attribute whose value includes the bookmark keyword
    Let id be the absolute URL resulting from resolving the value of the href attribute of the first such a or area element, relative to the element. Let has-alternate be true.
If the article node has an id attribute
    Let id be the document&apos;s current address, with the fragment identifier (if any) removed, and with a new fragment identifier specified, consisting of the value of the article element&apos;s id attribute. Let has-alternate be false.
Otherwise
    Let id be a user-agent-defined undereferenceable yet globally unique absolute URL. Let has-alternate be false.&quot;

WRT the last sentence:

1) Why undereferenceable?

2) It should be stated that that URI (not URL) needs to be the same for each run of the algorithm. Otherwise it&apos;ll be just a random unique identifier which would violate the requirement in http://greenbytes.de/tech/webdav/rfc4287.html#rfc.section.4.2.6: &quot;The &quot;atom:id&quot; element conveys a permanent, universally unique identifier for an entry or feed.&quot;

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>28520</commentid>
    <comment_count>2</comment_count>
    <who name="Ian &apos;Hixie&apos; Hickson">ian</who>
    <bug_when>2009-10-20 01:10:02 +0000</bug_when>
    <thetext>&gt; 1) Why undereferenceable?

Because if we could have made a dereferenceable URL, we would have done so using the earlier steps.


&gt; 2) It should be stated that that URI (not URL) needs to be the same for each
&gt; run of the algorithm.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>28521</commentid>
    <comment_count>3</comment_count>
    <who name="">contributor</who>
    <bug_when>2009-10-20 01:10:53 +0000</bug_when>
    <thetext>Checked in as WHATWG revision r4185.
Check-in comment: Clarify that the article id should be stable.
http://html5.org/tools/web-apps-tracker?from=4184&amp;to=4185
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>28547</commentid>
    <comment_count>4</comment_count>
    <who name="Julian Reschke">julian.reschke</who>
    <bug_when>2009-10-20 06:23:44 +0000</bug_when>
    <thetext>I still do not understand why it says &quot;undereferencable&quot;. Is this a normative requirement? If so, for what reason? If not, why mention it all?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>28548</commentid>
    <comment_count>5</comment_count>
    <who name="Julian Reschke">julian.reschke</who>
    <bug_when>2009-10-20 06:24:48 +0000</bug_when>
    <thetext>Also, the text now says:

&quot;The same &lt;span&gt;absolute URL&lt;/span&gt; should be
generated for each run of this algorithm when given the same
input.&quot;

I think this should be a &quot;must&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>28551</commentid>
    <comment_count>6</comment_count>
    <who name="Ian &apos;Hixie&apos; Hickson">ian</who>
    <bug_when>2009-10-20 09:03:13 +0000</bug_when>
    <thetext>&gt; I still do not understand why it says &quot;undereferencable&quot;. Is this a normative
&gt; requirement?

Yes.


&gt; If so, for what reason?

Because if you gave a ereferencable URL, people might be tempted to dereference it, which would be bad, since it wouldn&apos;t point at the article in question.


&gt; &quot;The same &lt;span&gt;absolute URL&lt;/span&gt; should be
&gt; generated for each run of this algorithm when given the same
&gt; input.&quot;
&gt; 
&gt; I think this should be a &quot;must&quot;.

Certain UAs won&apos;t be able to guarantee that, e.g. because they store no state and thus use a hash of the page and the page changes slightly each time the page is loaded.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>28555</commentid>
    <comment_count>7</comment_count>
    <who name="Julian Reschke">julian.reschke</who>
    <bug_when>2009-10-20 09:15:13 +0000</bug_when>
    <thetext>(In reply to comment #6)
&gt; &gt; I still do not understand why it says &quot;undereferencable&quot;. Is this a normative
&gt; &gt; requirement?
&gt; 
&gt; Yes.
&gt; 
&gt; 
&gt; &gt; If so, for what reason?
&gt; 
&gt; Because if you gave a ereferencable URL, people might be tempted to dereference
&gt; it, which would be bad, since it wouldn&apos;t point at the article in question.

It&apos;s not HTML5&apos;s job to dictate this. RFC 4287 already is sufficiently clear about this:

&quot;Its content MUST be an IRI, as defined by [RFC3987]. Note that the definition of &quot;IRI&quot; excludes relative references. Though the IRI might use a dereferencable scheme, Atom Processors MUST NOT assume it can be dereferenced.&quot; -- http://greenbytes.de/tech/webdav/rfc4287.html#rfc.section.4.2.6

&gt; &gt; &quot;The same &lt;span&gt;absolute URL&lt;/span&gt; should be
&gt; &gt; generated for each run of this algorithm when given the same
&gt; &gt; input.&quot;
&gt; &gt; 
&gt; &gt; I think this should be a &quot;must&quot;.
&gt; 
&gt; Certain UAs won&apos;t be able to guarantee that, e.g. because they store no state
&gt; and thus use a hash of the page and the page changes slightly each time the
&gt; page is loaded.

In which case they must not generate the ID.

&quot;When an Atom Document is relocated, migrated, syndicated, republished, exported, or imported, the content of its atom:id element MUST NOT change. Put another way, an atom:id element pertains to all instantiations of a particular Atom entry or feed; revisions retain the same content in their atom:id elements. It is suggested that the atom:id element be stored along with the associated resource.&quot;


</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>28566</commentid>
    <comment_count>8</comment_count>
    <who name="Ian &apos;Hixie&apos; Hickson">ian</who>
    <bug_when>2009-10-20 10:28:53 +0000</bug_when>
    <thetext>So you&apos;re saying it&apos;d be ok to just not have an ID?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>28569</commentid>
    <comment_count>9</comment_count>
    <who name="Julian Reschke">julian.reschke</who>
    <bug_when>2009-10-20 10:45:43 +0000</bug_when>
    <thetext>(In reply to comment #8)
&gt; So you&apos;re saying it&apos;d be ok to just not have an ID?

I did, but I was wrong. No, atom:id is indeed required (not only recommended), but it&apos;s also required to be unique and stable.

Thus, if you can&apos;t generate one by definition you can&apos;t create a valid Atom entry.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>28577</commentid>
    <comment_count>10</comment_count>
    <who name="Ian &apos;Hixie&apos; Hickson">ian</who>
    <bug_when>2009-10-20 11:37:37 +0000</bug_when>
    <thetext>So do you think it&apos;s better to violate the MUST of having an ID, or the MUST NOT of the ID changing if the UA generates a feed twice?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>28581</commentid>
    <comment_count>11</comment_count>
    <who name="Julian Reschke">julian.reschke</who>
    <bug_when>2009-10-20 12:46:41 +0000</bug_when>
    <thetext>(In reply to comment #10)
&gt; So do you think it&apos;s better to violate the MUST of having an ID, or the MUST
&gt; NOT of the ID changing if the UA generates a feed twice?

As I said: &quot;Thus, if you can&apos;t generate one by definition you can&apos;t create a valid Atom entry.&quot;

So, if it&apos;s impossible to create a conforming Atom document, then do not do it (that is, abort the algorithm).

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>28603</commentid>
    <comment_count>12</comment_count>
    <who name="Ian &apos;Hixie&apos; Hickson">ian</who>
    <bug_when>2009-10-20 21:50:07 +0000</bug_when>
    <thetext>Well it&apos;s impossible currently to generate a valid Atom feed at all, since taking out the vCard vocabulary meant that there was no way to get the author information from the vCard data.

I don&apos;t think not showing a feed at all is a good user experience.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>28608</commentid>
    <comment_count>13</comment_count>
    <who name="Julian Reschke">julian.reschke</who>
    <bug_when>2009-10-20 21:58:02 +0000</bug_when>
    <thetext>(In reply to comment #12)
&gt; Well it&apos;s impossible currently to generate a valid Atom feed at all, since
&gt; taking out the vCard vocabulary meant that there was no way to get the author
&gt; information from the vCard data.
&gt; 
&gt; I don&apos;t think not showing a feed at all is a good user experience.

First of all, it absolutely not clear that this is something people really want.

But *if* we do this, we need to do it in a way so that a conforming Atom feed is generated.

Generating known-to-be-broken feeds imho is not an option.

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>28615</commentid>
    <comment_count>14</comment_count>
    <who name="Ian &apos;Hixie&apos; Hickson">ian</who>
    <bug_when>2009-10-20 23:05:58 +0000</bug_when>
    <thetext>I&apos;d be happy to add the vCard stuff back, but you asked me not to. So that&apos;s up to you. Should I add back the vCard-based author generation?

There&apos;s nothing we can do about the unstable IDs in certain UAs, though, as far as I can tell. Making it a MUST instead of a SHOULD doesn&apos;t change the fact that certain UAs won&apos;t be able to do it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>28658</commentid>
    <comment_count>15</comment_count>
    <who name="Julian Reschke">julian.reschke</who>
    <bug_when>2009-10-21 06:09:25 +0000</bug_when>
    <thetext>(In reply to comment #14)
&gt; I&apos;d be happy to add the vCard stuff back, but you asked me not to. So that&apos;s up
&gt; to you. Should I add back the vCard-based author generation?

No.

But not that meta/name=author could be used to obtain author information.

&gt; There&apos;s nothing we can do about the unstable IDs in certain UAs, though, as far
&gt; as I can tell. Making it a MUST instead of a SHOULD doesn&apos;t change the fact
&gt; that certain UAs won&apos;t be able to do it.

If certain UA won&apos;t be able to do it then the spec should clarify that this is a problem, and UAs must not generate invalid Atom feeds.

Also, there&apos;s the alternative to remove this part (generating Atom) completely.


</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>28677</commentid>
    <comment_count>16</comment_count>
    <who name="">contributor</who>
    <bug_when>2009-10-21 07:50:14 +0000</bug_when>
    <thetext>Checked in as WHATWG revision r4238.
Check-in comment: Support &lt;meta name=author&gt; in Atom generation.
http://html5.org/tools/web-apps-tracker?from=4237&amp;to=4238
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>28678</commentid>
    <comment_count>17</comment_count>
    <who name="Ian &apos;Hixie&apos; Hickson">ian</who>
    <bug_when>2009-10-21 07:53:30 +0000</bug_when>
    <thetext>EDITOR&apos;S RESPONSE: This is an Editor&apos;s Response to your comment. If you are satisfied with this response, please change the state of this bug to CLOSED. If you have additional information and would like the editor to reconsider, please reopen this bug. If you would like to escalate the issue to the full HTML Working Group, please add the TrackerRequest keyword to this bug, and suggest title and text for the tracker issue; or you may create a tracker issue yourself, if you are able to do so. For more details, see this document:
   http://dev.w3.org/html5/decision-policy/decision-policy.html

Status: Partially Accepted
Change Description: see diff given above
Rationale: I added &lt;atom:author&gt; again, using &lt;meta name=author&gt;. I didn&apos;t add a note saying that UAs must not violate Atom, since that&apos;s a tautology. It&apos;s equivalent to signs that say &quot;unauthorised entry is forbidden&quot;. Creating invalid Atom feeds is obviously not valid.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>28804</commentid>
    <comment_count>18</comment_count>
    <who name="Julian Reschke">julian.reschke</who>
    <bug_when>2009-10-22 11:02:32 +0000</bug_when>
    <thetext>(In reply to comment #17)
&gt; Rationale: I added &lt;atom:author&gt; again, using &lt;meta name=author&gt;. I didn&apos;t add
&gt; a note saying that UAs must not violate Atom, since that&apos;s a tautology. It&apos;s
&gt; equivalent to signs that say &quot;unauthorised entry is forbidden&quot;. Creating
&gt; invalid Atom feeds is obviously not valid.

In which case what harm is done by replacing &quot;should&quot; by &quot;must&quot;?

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>28806</commentid>
    <comment_count>19</comment_count>
    <who name="Ian &apos;Hixie&apos; Hickson">ian</who>
    <bug_when>2009-10-22 11:06:48 +0000</bug_when>
    <thetext>I&apos;m not adding a requirement that we know can&apos;t necessarily be met. If the Atom specification wants to make unsatisfiable requirements, that&apos;s its problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>28807</commentid>
    <comment_count>20</comment_count>
    <who name="Julian Reschke">julian.reschke</who>
    <bug_when>2009-10-22 11:10:02 +0000</bug_when>
    <thetext>(In reply to comment #19)
&gt; I&apos;m not adding a requirement that we know can&apos;t necessarily be met. If the Atom
&gt; specification wants to make unsatisfiable requirements, that&apos;s its problem.

This seems to be in conflict with your previous statement that of course &quot;you have to follow other specs&quot;.


</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>28810</commentid>
    <comment_count>21</comment_count>
    <who name="Ian &apos;Hixie&apos; Hickson">ian</who>
    <bug_when>2009-10-22 11:49:44 +0000</bug_when>
    <thetext>How so?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>28814</commentid>
    <comment_count>22</comment_count>
    <who name="Julian Reschke">julian.reschke</who>
    <bug_when>2009-10-22 12:34:28 +0000</bug_when>
    <thetext>(In reply to comment #21)
&gt; How so?

By saying &quot;should&quot; instead of &quot;must&quot; you suggest that there may be cases where it&apos;s acceptable not to follow the requirement.

Or, phrased differently: if it&apos;s &quot;must&quot; in RFC 4287, why is it &quot;should&quot; here?
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>28815</commentid>
    <comment_count>23</comment_count>
    <who name="Ian &apos;Hixie&apos; Hickson">ian</who>
    <bug_when>2009-10-22 12:39:24 +0000</bug_when>
    <thetext>&quot;SHOULD&quot; doesn&apos;t mean &quot;MAY&quot;.

It&apos;s a must in the Atom WG because (I presume) they assumed that it wouldn&apos;t be difficult to come up with unique IDs, and thus all software could do it. I do not share that assumption. Not following the SHOULD in the HTML5 spec means you are violating Atom, which isn&apos;t ok, but that&apos;s a problem for the Atom spec. I do not think that being unable to generate a stable ID should be grounds for saying you aren&apos;t conforming to HTML, even if you aren&apos;t conforming to Atom.

EDITOR&apos;S RESPONSE: This is an Editor&apos;s Response to your comment. If you are satisfied with this response, please change the state of this bug to CLOSED. If you have additional information and would like the editor to reconsider, please reopen this bug. If you would like to escalate the issue to the full HTML Working Group, please add the TrackerRequest keyword to this bug, and suggest title and text for the tracker issue; or you may create a tracker issue yourself, if you are able to do so. For more details, see this document:
   http://dev.w3.org/html5/decision-policy/decision-policy.html

Status: Rejected
Change Description: no spec change
Rationale: I think the spec is making the right tradeoff here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>28816</commentid>
    <comment_count>24</comment_count>
    <who name="Julian Reschke">julian.reschke</who>
    <bug_when>2009-10-22 13:16:59 +0000</bug_when>
    <thetext>I&apos;ll escalate to a tracker issue.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>28901</commentid>
    <comment_count>25</comment_count>
    <who name="Julian Reschke">julian.reschke</who>
    <bug_when>2009-10-23 16:26:21 +0000</bug_when>
    <thetext>Escalated to http://www.w3.org/html/wg/tracker/issues/86.</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>