Open source licenses
If it isn't obvious, I am a massive fan of free software. I love that I can write code for everyone to use, and anyone can contribute back if they want to. Small developers? Massive corporations? Doesn't matter! You're all equally invited to use my free and open source code.
However, I'm not usually going to release it into the public domain, as I wouldn't want to give up my copyright to the code I've spent countless hours writing (even if I think digital copyright law in its current form is completely stupid). That means I may release my code, but that doesn't necessarily give you the rights to use it (due to said copyright). So, to grant you rights, I have to attach a license.
So, what kind of licenses are there that I can use to make a bona fide open source library or program? Quite a few, actually. The ones I most commonly see used are the following:
- New BSD (i.e. 3-clause or sometimes the 2-clause variant which is more-or-less equivalent to MIT)
- Apache License (v2.0)
- GPL (v2.0, v3.0)
- LGPL (v2.0, v2.1, v3.0)
- AGPL (v3.0)
All of them basically have the following traits:
- Freedom to sell the software
- Freedom to modify the software
- Freedom to distribute the software
- Disclaim warranty and liability of the software from the developers
- You have to include the license with the software
There are some variations on how these licenses work. Some, like Apache and *GPL, grant patent rights. Some, like Apache, also explicitly exclude any trademark rights. Some, like the *GPL and zlib, require you to also document changes. *GPL licenses require you to redistribute the code to the software, and for personal software I write, that is my preference.
Why not use a more permissive license?
A permissive license is a license that basically only do the those five bullet points and few other things. So, pretty much everything I listed except the *GPL licenses are "permissive" licenses. Most people I've worked with generally prefer this type of licensing because it's compatible with pretty much any other license, and it can be used to produce closed source software, as well. This means that everyone can use it with anything.
My problem with this licensing is that it allows people to take this software, possibly modify it, and include it in their closed source software without "giving back" to the community. Closed source software restricts your ability to use said software, even if the software isn't being sold for any profit, and as I've stated in a previous article, does not benefit the user by limiting their rights to use said software. The GPL, on the other hand, requires you to release derivative works under the same terms you received the original software, guaranteeing everyone who uses the software to have the same rights.
What is it to me?
No, really, let's think about this: What do I hope to gain by using a permissive license like MIT over a protective license like GPL? I don't want to spend hours writing software only for it to be used in some closed source software where it doesn't benefit me.
I've heard the "More people will use your software." and "If more people use your software, more people will contribute back." arguments from people a lot. But when you think about it, the first one is probably irrelevant, and the second isn't necessarily true.
Okay, yes, it's true that, if my software is included in more software, then effectively more people will use my software. And, of course, the number of people using my software can correlate with the number of bug reports I get, which means more people can correlate to better software. But there's a problem: if people are DIRECTLY using my software, this is likely going to be the case. However, if my software is being used in some software, the people who are going to report the issue is only going to be the developers using it, NOT the end users.
Here's the thing: most end users don't care if the software is MIT, GPL, etc. since they aren't typically interested in the internals (or even aware of it usually). Most of them are just interested in the usefulness of the software, itself, for their needs. And if they encounter a bug in my software but it's in some closed source software that happens to be using my software, they are going to report the issue to the developer of the closed source software, not me. So, I'd have to HOPE that the developer is actually kind enough to report the issue to me. They might not and actually fix or workaround the problem, themselves, without documenting how they did it. And if they do this, how am I supposed to know what the problem is?
And that brings me to my next point: the "more people will contribute back" thing just doesn't hold water. If the developer actually reports their issues to me or submits a patch to my repository, then good on them. However, there is no guarantee they'll even do this. In fact there is no guarantee that such a fix would ever be made public. But you know what will guarantee that? If they had to publish the source code due to the GPL.
So, if not using the GPL doesn't actually help my software in any way, then what is it to ME to NOT use the GPL for my code? Am I being paid to write the software in question? Are you, the person wanting to use my software, going to donate money to me because I wrote some nice software you like using in your closed source computer program?
Probably not. So why should I waste my time writing software under MIT if I'll most likely never get anything out of it that I wouldn't have gotten by using the GPL?
And, of course, your next question might be: "Well, what about LGPL?" Of course it is. So, what is the LGPL? It's basically a copyleft license like the GPL, but software using the software doesn't have to be released under the same terms. Rather, just the LGPL code, itself, maintains the same terms. It's basically a compromise between using a permissive license and a protective license, so a lot of people go for this when they (think) they want the best of both worlds.
But my reasoning is the same. Why should I pick a weaker license? What do I get out of it? People are still going to make their closed source software. Okay, sure, they have to give back to the community any changes they've made to my software, so okay, fine, that can be helpful to me. But the GPL would've accomplished that, too. So, basically, I don't get anything different out of it, and they get to make their closed source software. Standard GPL sounds a LOT more in my favor, if you ask me.
Basically, the whole reason I use GPL and not a permissive license (and also why I typically don't relicense my code under more permissive licenses when people ask) is because, unless I'm ACTUALLY getting paid to do this, I would most likely get absolutely nothing out of using a permissive license while, at the same time, enabling someone else's closed source software to exist thanks to my hard work.
This is not to say these permissive license don't have a use. They certainly do, and if you find permissive licenses to be useful when you develop your own software, you should go ahead and keep using them! But as a small developer who is just wanting to make free software for other people to use, they really don't have a use for me.
- 2021-02-28: Reformatted in gemtext
- 2021-06-30: Updated conclusion (this article might read as a dump on permissive license which is NOT the intended tone)