Content type for /site-meta (or HTTP header fragment format)

Eran Hammer-Lahav <eran-GmYI2sWRrjEj5TC/[email protected]> Fri, 28 Nov 2008 15:31:57 -0700
Newsgroups gmane.ietf.http-wg,gmane.comp.web.general
Message-ID <C555B15D.F14B%[email protected]>
Context

The /site-meta proposal (a known-location solution for site metadata) [1]
includes a simple XML format for representing site metadata directly or via
links. In discussing the proposal and the appropriate format for the list o=
f
meta resources, John Panzer suggested using a simpler text format [2]
directly based on the content of the Link header [3].

While I see the value of an XML format for this data, and was the main
supported of it, I now strongly support the idea of using a super-simple
text-based document. Partially because it fits better with the current
use-cases, and partially because I am an editor of a "competing" XML format
which covers this use case (XRDS/XRD) but is too complex to be positioned a=
s
the default form.

I would like /site-meta to list a single text-based format with a clear
Content-type associated with it. I also want the spec to explicitly allow
user-agents to request other representations of the /site-meta resource wit=
h
the default being the super-simple-text-based version. One such
representation (I expect to be widely supported) will be
application/xrd+xml.


Some Questions (and answers)

- Should the /site-meta text format be restricted to a set of links or
provide an easy path for extensions of some other kinds of records?

While I can't come come up with compelling use cases for /site-meta to
directly include other metadata, it is likely someone else will in the
future. By replacing each record in John's proposal:

---
/robots.txt rel=3D"robots"
/p3p.xml rel=3D"privacy"
http://other.example.net/example rel=3D"http://example.com/rel"
---

with actual Link headers:

---
Link: </robots.txt>; rel=3D"robots"
Link: </p3p.xml>; rel=3D"privacy"
Link: <http://other.example.net/example>; rel=3D"http://example.com/rel"
---

other record types can be added in the future. This also means the same cod=
e
used to read Link headers (or HTTP headers in general) can be used for this
format. This also plays nicely with the idea of equating links in /site-met=
a
to Links in individual resources' HTTP response headers.

- Should /site-meta define its own content type, use an existing content
type, or define a new generic content type?

If we take the route of using an HTTP-header-like format for /site-meta, is
there value in making this format generally available for other resources.
RFC 2616 offers a similar construct in the form of message/http. It seems
that as long as the document can be considered a valid HTTP request or
response, we can use this content type.

So /site-meta can be considered a body-less HTTP response with Link headers=
.
The question is, is such a header-fragment allowed in a message/http
document? It is not clear if in this use-case, the Date header may be
omitted, which is otherwise required for a valid response header. The Date
header makes little sense in this context and should be omitted. Note that
the HTTP header for GET /site-meta must still include Date.


In Conclusion

1. The idea of allowing multiple representations for /site-meta resources
suggests the use of a more generic content type for the default (and the
only required) representation than application/site-meta.

2. There is value in using a single mechanism for metadata discovery, eithe=
r
for an individual resource (via HTTP Link header or HTML/ATOM Link element)
and for a domain authority (via /site-meta list of links). Using the exact
same semantics between HTTP Link and /site-meta links seems productive.

3. Preparing for some unknown need for extending /site-meta while not
increasing complexity (assuming Link header structured is simple enough)
seems like a good idea.


Action Items

* Change /site-meta draft to use the Link header format instead of the
current XML proposal.
* If allowed, use message/http as the default content type for /site-meta.
If not, register a new content type, preferably something like
application/http-header-fragment, or just application/site-meta.
* Clarify that the content of /site-meta does not describe any actual
resource or URI, but the abstract concept of 'web site' or 'domain
authority', expressed as an HTTP header. In practice, it is still just a
registry for resource locations to avoid more known-location solutions.

Thoughts?

EHL


[1] http://tools.ietf.org/html/draft-nottingham-site-meta-00
[2]
http://www.abstractioneer.org/2008/11/one-site-meta-to-rule-them-all.html
[3] http://tools.ietf.org/html/draft-nottingham-http-link-header-02