The Free Software Foundation and its sprout the GNU Project are a core element of the free and open source software movement.
They led to a new era of software development where sharing and improving as a community is more valuable than selling proprietary software (maybe because we stopped selling software altogether and started selling services).
But there is a key thing in the most popular free licence of the world, a key problem that let me question if this license is truly free, or if it brings a distorted concept of freedom.
Is a license that sets limits to developers really "free"?
Software freedom as intended by Richard Stallman and the FSF is not real freedom, just like communism is not really about sharing and loving each other.
Communism is more like being at the bottom of the pit, and forcing everyone to stay down there just because you don't wanna be left behind by those who manage to climb.
Software freedom in the stallmanian way of thinking is not about being free, is about not doing anything on your own.
No commercial software, no code that you keep for yourself, no way to use it in a manner that makes you keep it private. Which is good, right?
Well, not really. Not at all.
A key point of this whole text is about the definition of freedom. What follows is MY POINT OF VIEW and does not reflect any "official" definition of freedom.
In my vision of software freedom, free software means that I'm allowed to use it in my daily work, to make use of libraries and programs inside my projects. I mean, that is the whole reason I do open source in the first place. When I started the PlugFace Framework I decided to release it under the MIT License because I thought that it could be useful to other people in need of using plugins inside their software. I thought of other developers in my same situation, in need of modularizing their monolitic application at work with a simple and robust solution. I don't care if you want to use it in proprietary software, on the contrary I would be flattered by this.
GPL wouldn't allow that to happen.
A PlugFace Framework released under GPL would have never been used in enterprise environment because it would require to the user to release their software under the same license. Even with LGPL, which allows software linking to proprietary software, would not have been ideal since any customization (i.e. proprietary security features to validate plugins?) could not have been kept private.
So if I'm developing a library, why should I want to use a GPL-like license?
Why should I choose a free license in order to limit other developers' freedom?
But Matt, without a strong copyleft license $InsertNefariousSoftwareCompanyHere could steal your work and sell it with their name on it, and you wouldn't see a dime of it.
I can hear you reply like that already.
And my answer would be: THAT'S EXACTLY WHAT I WANT.
If you are reading this and you are a software company, please TAKE MY CHILD SOFTWARE AND DO WHAT YOU WISH WITH IT.
If my goal was to make money I wouldn't be doing open source, I would try with something easier. Like forex trading, ice-cream making or underground drug dealing.
Instead, I'm doing open source software because I want people to use it, to solve problems with it. I imagine professional software developers like myself being stuck with a problem, finding out my GitHub account and thinking "Well damn, this guy has made a library that exactly do what I need".
And it would download it, and link it into his software and proceding working, and I would send him a spiritual "You're welcome buddy" through the Force.
That's why, if you write software libraries, you should NEVER EVER USE GPL LICENSES. The best enterprise software are released under weak copyleft licenses, like Kubernetes, Docker, Google Guava, FreeBSD and many others.
cLinux doesn't count. Linux is a final product, not a middleware. But still, remember that without weak licensing and with Linux as the only open source OS, products like the PlayStation 4 and the Nintendo Switch would be very very different.
There are many many great licenses out there that are truly free. They will make Stallman angry (and that's probably something that I would truly enjoy), but they will also make many fellow developers happy and thankful.
My favourite ones are the the Apache License 2.0 and MIT License. I release all of my works under those two licenses (and also the MPL 2.0 for complete products, aka not libraries). If you want a complete list, check out this awesome site from GitHub and look for licenses that does not feature the Same license tag in the Conditions column. They are the weak-copyleft ones.
That's all for now. Thank you all for your kind attention, and happy coding! <3
It's social media for devs
Level up every day