It’s always a struggle when it comes to licenses, but no license is no solution, unless you don’t believe in the concept of free/libre software. The licensing decision is easy when it comes to text – at least for me. The Creative Commons folks developed a nice licensing toolset. You can basically choose one by clicking some checkboxes. I came up with a CC-BY license pretty fast, but to be honest I kept an eye on Creative Commons for quite a while. I picked attribution as the only condition in order to share and remix my work. Unfortunately Creative Commons wasn’t made for software.
Whenever I thought about software licensing, GPL popped in my mind. Probably because it’s the most famous and widely used license around when we’re talking Free Software. However GPL has some issues when it comes to reuse of code. The obstacles one has to face when using GPL code are pretty high, especially these:
Whenever you use GPL code..
- your project’s license must be GPL
- you must disclose the whole sourcecode of your project
Jeff Atwood describes it as following:
The archetypal bearded, sandal-clad free software license. Your code can never be used in any proprietary program, ever! Take that, capitalism!
– Coding Horror: Pick a License, Any License
I don’t want to force people to use a specific license and disclose the complete sourcecode, although that would be awesome. However it’s far from reality.
Richard Stallman, the main author of GPL, said on the 31C3:
What if you have no money? And you need to eat something, you’re hungry. Well, you don’t have to limit yourself to these options [writing free/libre or proprietary software], because you got a better option, which is steal some food. It’s not exactly nice, but it’s better than developing proprietary software. That’s really wrong!
Yes, free/libre software should be the maxim, but I would not agree with Mr. Stallman’s attitude concerning everything besides it.
People want to use code off the internet in their daily jobs working on proprietary software. And they tend to do so without looking at the licenses. I think the only way to recover a grasp on reality is to use licenses with meetable conditions.
Then there is the BSD or MIT licenses, the antidotes to GPL. It gives you the freedom to use code as long as the BSD copyright notice stays intact and you use another name. If you want to give even more freedom, you might think about WTFPL, the “Do What The Fuck You Want To Public License”. I thought about using it, but it lacks a “no warranty” clause and there seem to be some legal concerns. At least I couldn’t find any court case where WTFPL has been recognized as a valid license.
What turned out to be my happy medium is the Mozilla Public License (MPL). It does neither try to force the project, which uses MPL code, to be under a specific license nor do you have to disclose the whole sourcecode. So where’s the difference to BSD/MIT licenses?
MPL says you must share back changes you made to the original code and only that. So if a company uses your wicked MPL-licensed XML parser and improves it, these changes have to be disclosed. I think the chances that a company will share back these specific pieces of code is far more realistic than turning the whole project into GPL code and disclosing it. So i’ll go with MPL 2.0.
Credits to Tobias Sjösten’s blog post “Open source licenses and the asshole clause”, which led me to the MPL license.