When creating content - be it code, text, or something else entirely - there is often a desire to share it. I’m no exception to this. But if you want to share something, how should it be licensed?
For me, the reasoning behind this desire is quite simple. I often create something to scratch an itch. The vast majority of stuff I make exists because it solves a problem I have. But if it’s useful to me, it may also be useful for someone else. As a large proportion of the software and content I use on a daily base is made by someone else, it is a small effort to make my work available for others. There are, however, some limitations I may want to impose.
When it comes to content, there are three major categories:
1. Trash
Like it or not, a significant fraction of anyone’s content isn’t that valuable. It may be a tiny proof-of-concept, buggy abandoned code, or writing which simply lacks any creativity. My opinion on it is quite simple: do literally anything with it, I don’t care. No need to credit me.
For written content, the obvious licence of choice is CC0 (a f.a.q. can be found here).
The goal of this licence is quite simple: waive all rights to the fullest extent possible.
Note that there is a difference between this and public domain: PD content applies to content which, for example, no longer falls under copyright or has never fallen under copyright.
However, the content I produce clearly falls under copyright. CC0 is a licence I intentionally choose to apply to it, to make sure that I waive all the rights I have on it.
While I could also licence software under it, I do not like to do so.
CC0 is a nice licence, but it’s too wordy to read and understand immediately.
When it comes to open source software, the barrier to use should be as low as possible.
Another possibility is the Zero-clause BSD licence.
This is a neat, short licence which makes clear that 1) you can do anything with it, and 2) if it breaks, you get to keep both parts: don’t bother blaming me for any damages.
My preferred licence is the Unlicence.
It’s a bit more wordy than 0BSD, but it makes clear that I’m not interested in retaining any form of copyright.
2. Useful
A little step up the ladder is the actually useful content.
While I do not want to be credited for trash content (in fact, if you decide to use it please don’t associate my name with it),
I do like to receive credit for stuff I’m (at least a little bit) proud of.
If I spent time and effort on something useful, it’s not nice to see someone else claim credit for it.
The licences here are precisely that: you’re free to use it in anyway you want, as long as you give me credit.
This is why I prefer to licence my writing under the CC BY licence. You’re free to share it, alter it, or even sell it, but you must attribute me for the original content.
For software, the closest licence is the MIT licence. Again, do whatever you want with it, but it must retain attribution. It’s short and widely used licence, so very few people will hesitate about using it.
3. Valuable
Some of my work (although probably very little) is actually at least a little valuable, but actually exploiting this value may be too much work.
If I spend a significant amount of work doing research for some article or writing some application,
providing it freely to someone else may save them a reasonable amount of time and/or money.
This is where my inner communist shines through.
While I do not at all mind sharing it with the world for free, I do not want other people to directly profit from it.
After all, it’s still my labour!
My goal here is simply: use it in any way you want, as long as you do not directly profit from it.
Additionally, if you decide to make changes to it, I want to be able to access those as well.
The obvious Creative Commons licence is CC BY-NC-SA. It basically does exactly what I ask for. You can share, use, or adapt it, but:
- You must attribute me.
- You may not use it for commercial purposes
- You must share any derived work under the same licence.
Software is a bit trickier, because there is a wide variety of ways to use software.
The first licence one will think of is probably the GPL:
everyone involved in OSS will be familiar with it.
It’s a great licence for standalone software, and provides the guarantees I’d like to have.
However, it does not really work for libraries because it does not allow linking with differently-licensed software.
For this reason the Lesser GPL (LGPL) has a linking exception, making it the perfect licence for libraries.
The final category is server software.
One drawback of the GPL is that it only provides rights to anyone obtaining a (binary or source) copy of the software.
In today’s increasingly-cloudified world, a lot of providers charge money simply by hosting software for others.
While I am completely fine with this, I am less fond of the fact that they often make enhancements to the software without sharing them.
The GPL does not require them to do this, simply because the customer never gets a copy of the software: they merely use it.
For this reason, the Affero GPL (AGPL) has an added clause requiring the hoster to provide the actual source code used to the user.
With this I believe I have covered all major scenarios.
It’s probably not going to cover every single thing I’m ever going to create,
but at least it’s a good start.
A lot of authors and software developers share their work without any licence at all,
even if it is intended to be freely shared and re-used.
This is especially noticeable on sites like GitHub.
If you want to share your work too, consider writing something like this in advance.
It makes it a lot easier to publish something when you don’t have to think about it at the last minute.