Category Archives: Licensing

Things I dislike about Linux

1. Has a strong copyleft license – GNU General Public License (GPL). So there can be no proprietary derivatives. Also, proprietary kernel modules cannot be linked to the Linux kernel.
2. C++ is forbidden in the Linux kernel. So kernel modules cannot be written in C++.
3. Monolithic kernel – not hybrid or microkernel. That means less reliability and security.

What could be better

1. Linux should be allowed to be linked to non-GPL kernel modules as long as they are GPL-compatible (including but not limited to MIT and three-clause BSD. Apache and CDDL?). I am not saying that proprietary kernel modules should be allowed to be linked. The copyleft should be softened or minimized (the only concern about softening the copyleft is that it might make loopholes).
2. Nothing really.
3. Nothing really.

The good news

1. Not as strong copyleft as GNU Affero General Publuc License (AGPL). Even AGPL is not as strong copyleft as Sybase Open Watcom Public License. Kernel modules can be dual-licensed GPL with any compatible license. I think the copyleft of Linux has an exception for binary firmware blobs. I think proprietary software can be bundled on top of GNU/Linux as long as the underlying system is open source. I think proprietary kernel modules can be linked for personal use.
2. Nothing really.
3. Linux is becoming less monolithic and more like a microkernel. Linux is getting the modular capability. So it’s no longer purely monolithic, but a modular monolithic.


Ideal free and open source license

Minimized GPL copyleft. Combine permissions of GPLv3 and permissions of LGPLv2.1.

Linking: with restrictions
Modification: copylefted
Distribution: copylefted
Patent grant: yes
Private use: yes
Sublicensing: yes
TM grant: manually

Allow some rights to be reserved but not all. Maybe allow remix and commercial use to be reserved but not allow sharing to be reserved.
Allow software to be mixed/shared source but not,pure closed source.
Maybe more requirements for statically loaded modules and more lenient rules for dynamically loaded modules… Based on the way of LGPL.
Freedom 0 allows use, freedom 1 allows studying the source (and modifying it for personal use), freedom 2 allows sharing and redistribution of verbatim copies, and freedom 3 allows redistribution of modified copies. Maybe require freedoms 1 and 2 along with freedom 0 for binary(file or library), and require freedom 1 along with freedom 0 for the executable program.

What do you think?