Thoughts on Licences

22 May 2020

Software licences are probably the single most boring aspect of software development, but it’s important to carefully consider the terms under which the stuff I hack on is shared to ensure they’re consistent with my values. Despite my general dislike for all things legalistic, the most unambiguous way to state those terms is through a licence. So a couple days ago, I tossed LICENSE files into any of my public repos that didn’t already have one.

So how did I settle on which licences to apply? Jump on into the DeLorean and let’s set the dial back to the late 1980s.

It’s 1986 and I’ve got a 1200 baud modem wired up to a beat-up 286 with a steel case that would easily allow it to double as a boat anchor if needed. Armed with a dot-matrix printout of local BBSes with names like Camelot, Tommy’s Holiday Camp, and Forbidden Night Castle, I fire up PC-Talk. A series of high-pitched squeals and tones fill the air, then text flashes across the screen. I’m online.

BBSes were a treasure trove of information, filled to the brim with zip archives full of downloadable programs, source code, patches for existing programs, and all manner of text files with names like Smashing The Stack For Fun And Profit. You could find everything from how to crack copy-protected software, to details on phone phreaking, to how to make nitroglycerine from commonly-available household items. It was through BBSes that I first downloaded an I’m sure totally legitimate copy of Borland Turbo C++ and took my first baby steps writing real programs. No more BASIC for me.

This culture of open sharing in the online world has had a huge impact on me. From those early experiences with BBSes to my first forays onto the Internet a few years later, seeing people openly sharing code and patches and helping each other solve problems over Usenet seemed almost revolutionary to me at the time. In some ways, it still does. I feel lucky to have been a part of it from such an early age.

The end result is that I try to publicly share all the work I do. So when it came time to chuck licences on stuff, I sat down to work out a personals ad for my ideal licence. Aside from enjoying long walks on the beach, it should:

  1. Allow free use, modification, and distribution both of the original work and any derived works.
  2. Require that people distributing the work or any derived work to give appropriate credit.
  3. Disallow suggesting that I in any way endorse any derived products or whoever produces them.
  4. Gently encourage a culture of open exchange and sharing of information and techniques.
  5. Be short, clear, and easy to understand.

On the software side, there were lots of options, but the best matches in my mind are the MIT or BSD licences. The 3-clause ’new’ BSD licence has an advantage in that it required written permission from the author to use their name in any endorsement/promotion of a derived work. That happens to be what we already use for work.

On the content side, I’ve always posted my web site’s content under a Creative Commons Attribution-ShareAlike licence. But I don’t believe that’s actually the ideal match based on my priorities. Why is it that I’ve elected to use a licence that requires that derived works also be licensed under the same terms rather than under whatever terms someone feels like, so long as credit is given? In the end I settled on the more permissive Creative Commons Attribution licence.

This feels to me a bit like the difference between BSD and GPL terms, where the latter requires that derived works also be GPL-licensed. This “viral” nature has always rubbed me the wrong way: rather than gently promoting a culture of sharing by example, it legally requires sharing under the same terms whether or not you want to.

Personally, I’d like for people to do the right thing and share their work for everyone’s benefit not because they have to, but because they want to. If they don’t want to, why should my reaction be to disallow their use of my work? Isn’t that contrary to my stated goals of sharing as much and as broadly as possible?

While I hope that more people share more of their work, it doesn’t bother me if you don’t. If anything I’ve written is somehow useful to you, I’m glad. Use your knowledge to help others and make the world a better place, and if you can find time to do so, share a bit with the rest of us.

Got thoughts and opinions on licences? Fire an email my way at chris@bracken.jp.