[uf-new] Re: Comment Questions

Toby A Inkster mail at tobyinkster.co.uk
Sat Nov 15 05:28:17 PST 2008


OK, I've had a think about this overnight, which is often a good way  
of clarifying an issue in ones head. Upon consideration, I think the  
best solution is as follows.

What is the nature of a comment? What makes a piece of text not just  
a piece of text, but a comment? I think the answer is that a comment  
is a (usually short) reply to something. (The length of a reply can  
easily be determined by a byte count if required, so I will ignore  
this feature of comments.) So what we need is a method for indicating  
that one hentry is a reply to another hentry.

I propose (or put my vote behind earlier proposals for) two methods  
and suggest that *both* be allowed.

1. Within the parent hentry, a class="hfeed replies" is used to group  
all direct replies to it. The entire replies hfeed must be within the  
parent *hentry* (not just within the parent hfeed). This solution  
suits a threaded layout, with each level of hfeed perhaps left inset  
by a few ems - similar to slashdot. No explicit visible links are  
required between an hentry and its parent, as the layout makes the  
relationships clear.

2. An hentry can link to its parent hentry using rel="in-reply- 
to" (or perhaps class="in-reply-to"). This is Sarven's proposal. This  
allows for comments to be placed in a sorted (e.g. chronological)  
order, where the link between a comment and its parent is not  
necessarily clear from layout, necessitating a visible link. In this  
case, the parent hentry needs a rel="bookmark" permalink or an id  
attribute on its root element, so that the child hentry knows where  
to link to. This solution also allows for an hentry to be in reply to  
multiple parent hentries, perhaps even hentries on different pages.  
When "in-reply-to" is found, this wins over "replies".

In the spirit of reusing term rather than inventing new ones, both  
("replies" and "in-reply-to") are taken from RFC 4685 - Atom  
Threading Extensions.

Example in threaded style, showing only entry titles, contents and  
replies (i.e. omitting authorship for conciseness):

	<div class="hentry" id="article-101">
	  <h1 class="entry-title">An Article</h1>
	  <p class="entry-content">Some text.</p>
	  <div class="hfeed replies">
	    <h2 class="feed-title">Comments</h2>
	    <div class="hentry" id="comment-7501">
	      <p class="entry-content">A reply.</p>
	      <div class="hfeed replies">
	        <div class="hentry" id="comment-7509">
	          <p class="entry-content">Reply to reply.</p>
	        </div>
	      </div>
	    </div>
	    <div class="hentry" id="comment-7504">
	      <p class="entry-content">Another reply.</p>
	    </div>
	  </div>
	</div>

Might be used with the following stylesheet:

	.replies
	{
		margin-left: 3em;
		padding-left: 0.5em;
		border-left: 2px solid silver;
	}
	.replies .replies
	{
		font-size: 90%;
	}

The same comment structure, shown semi-linearly:

	<div class="hentry" id="article-101">
	  <h1 class="entry-title">An Article</h1>
	  <p class="entry-content">Some text.</p>
	  <div class="hfeed replies">
	    <h2 class="feed-title">Comments</h2>
	    <div class="hentry" id="comment-7501">
	      <p class="entry-content">A reply.</p>
	    </div>
	    <div class="hentry" id="comment-7504">
	      <p class="entry-content">Another reply.</p>
	    </div>
	    <div class="hentry" id="comment-7509">
	      <p class="entry-content">Reply to reply.</p>
	      <p>
	        In reply to:
	        <a rel="in-reply-to" href="#comment-7501">Fred</a>.
	      </p>
	    </div>
	  </div>
	</div>

The same comment structure, completely linear:

	<body class="hfeed">
	  <div class="hentry" id="article-101">
	    <h1 class="entry-title">An Article</h1>
	    <p class="entry-content">Some text.</p>
	  </div>
	  <h2>Comments</h2>
	  <div class="hentry" id="comment-7501">
	    <p class="entry-content">A reply.</p>
	    <p>
	      In reply to:
	      <a rel="in-reply-to" href="#article-101">article</a>.
	    </p>
	  </div>
	  <div class="hentry" id="comment-7504">
	    <p class="entry-content">Another reply.</p>
	    <p>
	      In reply to:
	      <a rel="in-reply-to" href="#article-101">article</a>.
	    </p>
	  </div>
	  <div class="hentry" id="comment-7509">
	    <p class="entry-content">Reply to reply.</p>
	    <p>
	      In reply to:
	      <a rel="in-reply-to" href="#comment-7501">Fred</a>.
	    </p>
	  </div>
	</body>

Thoughts?

-- 
Toby A Inkster
<mailto:mail at tobyinkster.co.uk>
<http://tobyinkster.co.uk>





More information about the microformats-new mailing list