This week I've been investigating the thorny issue of licensing. There is an old programming adage that goes, "The nice thing about standards is that there are so many to choose from". The same could easily be said of software licences.
Defining a licence before writing a line of code might sound a little odd but it's a decision that'll need to be taken at some point. Doing it now makes my position clear from the outset. I'm not a lawyer and I doubt most of the people reading this will be lawyers either, so if that's you then I can give you the quick version:
"I'm building this thing because it's fun and because I want to play with it. If you think you can build it faster or want to use any of my stuff to build something else then knock yourself out. I'd appreciate it if you send me a link as like I said, I want to play with it to. Oh yeah and if it's buggy or broken then I am genuinely sorry; but no, you can't have any money."
There are a lot of licences out there and trying to find the one that properly captures the above sentiments in harder-to-understand-legal-language requires a bit of reading.
Things to consider when choosing a licence
I don't want to build everything from scratch. Leveraging some existing open source libraries will let me concentrate on building the application rather than the supporting framework. The gotcha though with this strategy is that each open source project comes with it's own licence; not all the licences are compatible and some may even put constraints on the licence you choose for your own project.
There is a lot of duplication amongst licences but after some initial legwork I came across 'Navigating Open Source Licensing', a great article that attempts to categorise the popular ones. The shortest and most open are the 'Academic licences' like the MIT and new BSD. Their brevity also makes them very easy to understand. I like that and that's probably what I'll go with.
The ones to read carefully are the 'Reciprocal Licenses'. These include the GPL and the Mozilla Public License and are much wordier affairs. To quote from the article, "Like other licenses, Reciprocal licenses grant complete rights to the software's use to the developer and end user. The single difference lies in the requirement that any derivatives of the software be released under the same license, and that the source code must be released. The resulting new software must also be free."
A couple of points of clarification: The Lesser GPL sits somewhere between a reciprocal and an academic licence. You might also be wondering where the Creative Commons licenses come into all this. These are 'content licences' used to clarify the usage rights of media such as images, video, articles or music.