4 ms·
Linux's license is GPLv2 plus a syscall exception. If it was GPLv2 alone, proprietary modules would probably be infringing. However, since Linus specifically sa
by kmeisthax 3y ago
Linux's license is GPLv2 plus a syscall exception. If it was GPLv2 alone, proprietary modules would probably be infringing. However, since Linus specifically said syscalls don't trip GPL copyleft, kernel symbols that are syscall equivalents also don't trip GPL copyleft. So they have to have a loader that checks license data to know what symbols can and can't be linked to avoid a license violation under Linus's interpretation of their GPL exceptions.
You are correct that this is kernel level DRM[0], and Linus might even have a legal claim against Nvidia for circumvention of copy protection here. GPLv3 explicitly disclaims any form of copy protection in covered code, which would at least theoretically prevent this kind of lawsuit, except the clause isn't court-tested and Linus specifically hates GPLv3 for adding the TiVo clause[1].
This was implemented decades ago, and the original goal was actually just to stop getting bug reports relating to crashes in the Linux kernel caused by proprietary modules they can't fix. Enforcing the GPL was a side benefit.
[0] Not to be confused with the other DRM in the kernel, the Direct Rendering Manager.
[1] He doesn't hate the TiVo clause itself, he just doesn't like retroactively adding it to v2 software and changing the deal, because he doesn't like what he feels is Linux being co-opted by the FSF.
- nextaccountic 3y ago> Linux's license is GPLv2 plus a syscall exception. Did Linus really sought to have every contributor of Linux that licensed their contribution as GPLv2 agree to this specific exception, and relicense it as GPLv2 plus syscall exception? This sounds unbelievable. When one checks the wording of the "exception", https://github.com/torvalds/linux/blob/master/LICENSES/exceptions/Linux-syscall-note https://github.com/torvalds/linux/blob/master/LICENSES/excep... it says > NOTE! This copyright does not cover user programs that use kernel services by normal system calls - this is merely considered normal use of the kernel, and does not fall under the heading of "derived work". This just seems like a legal opinion of Linus that states that userland programs are not derivative from the kernel (and thus don't need to be licensed as GPLv2 themselves), but this is kind of obvious and expected, right? I mean, userland Windows programs aren't derivative from the Windows kernel either, or macOS programs from XNU, or etc. Also note that at the moment Linux was created, all Linux programs were originally made for other operating systems. Programs like bash and gcc predate Linux. They couldn't be derivative works of the kernel, even if they wanted to, because the kernel didn't exist when they were created. I highly doubt that any kernel developer could successfully sue authors of userland programs for copyright infringement, regardless of what Linus thinks about it. So this isn't really an exception of the GPLv2 but just a _clarification_ that the wording of the GPLv2 shouldn't be interpreted in a way to make userland programs infringing (because they aren't, and wouldn't be even if Linus didn't clarify) This means that Linux is free to incorporate any GPLv2 code it wishes without asking people to relicense it as "GPLv2 plus syscall exception" because Linux itself is just GPLv2.
- mkl 3y agoThe exception has been there since v1.0 I think: https://mirrors.edge.kernel.org/pub/linux/kernel/v1.0/ https://mirrors.edge.kernel.org/pub/linux/kernel/v1.0/ It's not there in 0.99.9.
- samus 3y agoThe exception is necessary because the GPL is designed to be viral. The OpenJDK project has a similar exception (the Classpath exception), else anything on the classpath would count as a derivative work. Proprietary licenses don't need those exceptions because they have a completely different objective to begin with. > Also note that at the moment Linux was created, all Linux programs were originally made for other operating systems. Programs like bash and gcc predate Linux. They couldn't be derivative works of the kernel, even if they wanted to, because the kernel didn't exist when they were created. That might be true for those applications. However, not having the syscall exception would make Linux-specific syscalls such as IO_uring accessible to GPL software only. > I highly doubt that any kernel developer could successfully sue authors of userland programs for copyright infringement, regardless of what Linus thinks about it. That would be the intent of the GPL, which is designed to extend its effects to every other software the original work is "linked" with. Remember, the GPL has been tested in Court before.
- phendrenad2 3y agoRight, and how would you go about circumventing this protection? By using syscalls. So you could argue that you only used syscalls, and thus adhered to the rule.
- tzs 3y ago> If it was GPLv2 alone, proprietary modules would probably be infringing I'm not so sure, at least in the US. There were several cases in the '80s and 90s or thereabouts involving video game cartridges which might be relevant. The consoles back then did not have memory protection or multiple address spaces or user/system modes. The ROM in the cartridge simple appeared at a fixed place in the address space, and typically the firmware in the console would do some system initializing, then call an entry point in the cartridge. The code in the cartridge had full access to the hardware and to the firmware in the console. The console manufacturers wanted to control the cartridge market. Among the many ways they tried to keep third parties from making compatible cartridges was copyright. The firmware in the console was copyrighted by the console manufacturer, and the code in the cartridge (in most cases [1]) extensively called into that firmware. Since the third parties had figured out the firmware by reverse engineering (usually in violation of the console's license) in many cases they even called into firmware code that authorized games did not use because that was not part of the firmware's API. My recollection is that the third parties won in most of those cases. [1] I believe that there were some third party games where the game maker had not been able to figure out how the firmware worked but they did know how the hardware worked, and so they made their cartridges completely take over. The console firmware was effectively just a boot loader for them.
- floxy 3y agoHow would proprietary drivers work on a GPL microkernel like the Hurd? Presumably the driver would be a userspace program. Is there something else that would prevent proprietary userspace drivers on the Hurd? Seems like this must have been something that people have considered before. Otherwise it would be pretty amusing if GNU/Hurd could have NVidia proprietary drivers that Linux wouldn't allow.
- lafar6503 3y ago[dead]