Software licensing

02 August 2010
An issue I have thought about in the past (not too surprising as my family background is intellectual property rights), and one that I can foresee dealing with. Come a few evenings where my ADSL connection is screwed, so decided to put it all together..

BSD style licences

The philosophy behind BSD licensing is to let you do almost anything you want with the code, as long as the original authors are not affected. The most common feature of BSD-style licences is a disclaimer protecting upstream authors from damage claims, and on the whole are as close to Public Domain as one can get while still being copyrighted. The original 4-clause BSD licence also required fairly explicit acknowledgements and prohibited use of up-stream authors as endorsement, although the former condition is removed in the 2- and 3-clause variants typically used these days.

A lot of other licences out where (such as MIT, X11, Apache, etc) are basically BSD licences worded differently, and this partly due to the generally more legally relaxed attitude of those who opt for such licences.

Copyleft style licences

This basically means the General Public Licence, as other copyleft licences I have come across all seem to be aimed at non-program content.The philosophy is that you should pass on any rights you have to use a piece of code. If someone (most likely a company) uses your code then the GPL, then it ensures that you (or rather, your code project) can gain from it. Whether this is infectious communism or prevention of free-loading is dependent on which PR department is paying your salary.

Library GPL & the Linking Exception

The LGPL (Lesser GPL, but still often known by its historic name Library GPL) is a licence that makes a distinction between use as an unmodified component, and modification to the component itself. Classic example is LibC (a core component of Linux): Since pretty much any program compiled for Linux needs to link to LibC, such programs are exempt from the GPL clauses because otherwise a lot of people would simply not tolerate it. Many of the criticisms of Linux conveniently don't mention the LGPL, as very few bits of software written as components rather than complete user programs use the full GPL.

What about enforceability?

This seems to be more of a concern to the GPL-camp than the BSD camp. The GPL has had a lot more legal input, and it shows in terms of its length. More importantly the GPL has been tested in court, so its enforceability is backed by court precedence. I am not sure how GPL violations tend to be first noticed (likely someone thinking something looks suspiciously Linux-like), but they tend to be blatantly obvious when investigated. This is not so much the odd cut'n'pasted function, but drag'n'drop of entire source files. Under German law, there is case law that ruled in favour of GPL enforceability, and I suspect in the UK any case coming to court would go the same way (not sure about the US though).

Company use

In most cases, either licence type is fine. I'm personally rather picky about even cut'n'pasted code, but in general the programmers I come across are disinterested in messing around with the internals of off-the-shelf program components (be they BSD or L-GPL licensed).

The tricky bit is embedded systems, particularly when resources are constrained. The most famous cases are where companies custom built distributions for their routers, then tried to keep it closed source. Busybox are particularly on the lookout for violations, as they get 70+MB of software into ~1MB (for an embedded device, that is a massive component cost saving). For commercialised products I would be inclined to err on the side of caution and use BSD as a base instead, but considering some of the things I am doing I doubt the viability of such a move.

And what about the website exceptions?

This is an oddity caused because website program code is not actually distributed, and the GPL (the only licence for which this point is really relevant) only really matters when code is distributed. Although websites generate web-pages that in turned as published, the underlying code (or more often, mixed code and markup) stays private. The same idea applies to server software that has been modified, particularly when outsourced.