Copyleft and HTML/CSS

May 18, 2007

Looking into that whole Google using YUI thing in the last post I came upon the comments thread on this post on Zach Leatherman’s blog. Apparently he noticed the yui code in the CSS and pointed out that it was unattributed. Chris DiBona from Google noticed that, and got it moved to a nice little BSD-licensed code section at the bottom. This is the form I found it in today when I looked at the CSS.
Along the way here ensued a discussion about how licensing terms apply to JavaScript – the source code to which you are always, in some way, redistributing. DiBona’s opinion – far more reliable than my suspicions – is that using someone else’s free-licensed (specifically BSD-licensed) JavaScript in a website is not redistribution. Nonetheless, he did feel that attribution is appropriate.
This freshened my long standing intention to post something about the whole issue of implementation versus redistribution and how it applies to the elements of your average site on the Interweb. You see, most free software or free content licenses draw a distinction between implementation and redistribution. You are generally free to use the code (or image, text, what have you) however you like on your own machine or in-house. However, once you distribute a derivative work – in source or binary form – the various terms of the license will kick in, and you are obliged to comply or remove the original work. Some licenses require attribution, others that your entire derivative work be licensed under the same terms, and all of your modifications given back to the community.
Now, the thorny issue arises with the way most of the technologies which run the web work. Every time you access a web site your browser is downloading a plain text version of the source code for the HTML, CSS, and JavaScript. To the extent that all of the elements are combined in the page as presented in the browser, this is potentially the redistribution of a derivative work. While DiBona explicitly stated that their (Google’s) position is that this is not the case, the FSF recognizes this interpretation, and its implied consequences.

Templates are minor enough that it is not worth using copyleft to protect them. It is normally harmless to use copyleft on minor works, but templates are a special case, because they are combined with data provided by users of the application and the combination is distributed. So, we recommend that you license your templates under simple permissive terms.

(From the GPL FAQ)

IN other words, the FSF’s lawyers see a potential for the copyright owner of some GPL’d HTML/CSS – say, that nifty menu in your sidebar – to demand that your entire site – layout, content, and all – be released under the GPL itself. And the FSF’s response is to specifically recommend that code like this not be GPL’d. They also provide a special exception clause to include with JavaScript, which should be called from an external file. It is based around this line:

As a special exception to GPL, any HTML file which merely makes function calls to this code, and for that purpose includes it by reference shall be deemed a separate work for copyright law purposes.

The thing to note here is that the FSF feels this needs to be explicitly added to the GPL. Therefore, the default is that they are not separate works.

The FSF folks feel this is important because JavaScript is non-trivial, unlike HTML and CSS. I don’t know how many template designers feel about their work being considered trivial. It would seem that the same strategy could be applied to CSS served from an external file.

Essentially, any sort of sensible terms could be added by modifying the license to make explicit what is considered the covered work, how it can be linked to and included in other works, and where the boundaries are. This is just as true for licenses which are not copyleft but require attribution – such as the BSD license used by Yahoo!. (Prototype is covered by an MIT-style “do whatever you want with this” license – which is essentially what the FSF is urging for templates.) The Creative Commons licenses are seemingly more ambiguous – but of course they explicitly suggest that their licenses are not appropriate for code.

The initiative for this could be taken by individual developers and designers. Or it could be taken by those who design the licenses. But one locus of attention which might be overlooked is the various open source applications themselves. The existence of a wide variety of free templates is a major ingredient in the success of projects like Joomla!, WordPress, and so on. These projects could add clauses to their licenses which specify the scope of licenses for HTML served by the application so as to specifically exclude the content. And they could raise awareness amongst those developing for them.

The current situation is such that the vast majority of “free” templates are released under the GPL, CC-by, CC-by-sa, or no license at all. All of these are potentially legally ambiguous. I’m sure many of the developers gave little thought to the licensing – intending to release under something akin to the WTFPL. Others may have just wanted attribution in the source. Others may have expected a link in the visible HTML – in other words they expected that the link they included would not be removed.

Worse is the fact that by most of these templates are being used with no regard for the intentions and wishes of the developers, and no consideration of the implications of the licenses. This may always be the situation. After all, commercial designs are stolen all the time. But the legal ambiguity surrounding these licenses as applied to this code serves as an impediment to legitimate usage. We need to move towards a clearer and more sensible set of licenses for the web.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: