otsukare Thoughts after a day of work

Adding Creative Commons License into HTTP Headers

Mark Nottingham has recently published a Web Linking specification (RFC 5988). It standardizes the Link: HTTP header. This is most commonly used for linking to CSS directly from HTTP headers. But it can be used also for giving link relationships in the context of an API (I might write more about that later).

Back to Creative Commons license. They are often given into the HTML markup of a document or at least in the meta name. This not that much an issue if you deal with a CMS. But in the case your content is in static files, you might benefit of giving a degree of freedom to your license by putting it in the HTTP headers. It becomes then a lot easier to deploy widely on a site and to evolve it if necessary. Let's say you would like to use a CC-BY 2.0 license on your content. You could then add the license in your HTTP headers with:

Link: <http://creativecommons.org/licenses/by/2.0/>; rel="license"; title="CC-BY 2.0"

In context that could be.

HTTP/1.1 200 OK
Date: Tue, 12 Jul 2011 23:43:18 GMT
Server: Apache
Last-Modified: Tue, 12 Jul 2011 02:13:27 GMT
Accept-Ranges: bytes
Content-Length: 19772
Expires: Tue, 19 Jul 2011 23:43:18 GMT
Vary: Accept-Encoding,User-Agent
Content-Type: application/xhtml+xml
Link: <http://creativecommons.org/licenses/by/2.0/>; rel="license"; title="CC-BY 2.0"

I have not yet deployed it on my Web site, but I was thinking about it, and was looking for opinions. For people who are more used to PHP for example, it would be entirely possible to do:

<?php
header('Link: <http://creativecommons.org/licenses/by/2.0/>; rel="license"; title="CC-BY 2.0"');
?>

Benefits

  • Easy to massively change the license through HTTP configurations

  • A nice side effect is that a bot could just do HTTP HEAD requests on resources to know about the licenses saving a lot of bandwidth, and then improving the speed of indexing. It really depends on the type of indexing and frequency of it.

  • It means also that you can easily set different licenses for different type of resources. For example, you might want to set a license different for images than HTML markup or CSS content.

  • You might even want to have a different licenses depending on the section of the website. It would be easy to scope it on the URI type.

    http://example.org/liberal/content 
    http://example.org/restricted/content
    

    These two URIs would be associated with different types of Link HTTP headers depending on the matching on liberal or restricted.

  • It makes it easier to associate a license to binary files such as images, music and movies. In the sense that the content is then not dependent of a surrounding markup and the license is kept in case of hotlinking.

Drawbacks

I have discussed with Mike Linksvayer on Creative Commons Channel on IRC. And he made valid points about the drawbacks.

  • It might be harder for common users to know about the license of a product (though an extension could solve this for people who care). The growth of RDFa and/or microdata gives mor incentive for people to put it in the markup.

Thoughts are welcome.