5 ms·
I'm genuinely curious; both of these changes seem to be exciting due to the ability for people to extend and implement specialized code/features using the kerne
by qchris 6y ago
I'm genuinely curious; both of these changes seem to be exciting due to the ability for people to extend and implement specialized code/features using the kernel. Since the Linux kernel is GPLed (v2, I believe?), does this mean that the number of GPL requests related to products' operating systems is likely to increase, since groups using this extensibility will be writing code covered by the GPL which might actually be of value to other people? Or does the way io_uring and eBPF are implemented isolate the code in such a way that the extensions through their frameworks such that the GPL license won't affect them?
- rtkaratekid 6y agoI don’t know about io_uring, but for BPF programs only the kernel space needs to be licensed as GPLv2. Everything on the user space side is handled with system calls or higher level libraries that aren’t GPL licensed (libbpf).
- marcan_42 6y agoio_uring is a data structure, not code. It's not Turing complete, so there is absolutely no way it would extend GPL virality from the kernel into userspace. eBPF is code, and follows similar rules to kernel modules. That is, non-GPL-compatible eBPF code is allowed, but a subset of APIs (helpers, like module symbols) are only available to GPL-compatible eBPF programs.
- Conan_Kudo 6y agoI wish people would stop trying to work around the GPL. It causes immense heartache and someday, the kernel developers will revolt and destroy any avenue that you try to use. After all, that's what just happened with the NVIDIA GPU drivers with Linux 5.9. Also, you're still pulling in parts of Linux into your code, so GPLv2 still applies.
- tyingq 6y agoI don't see how that would apply to an application using io_uring through syscalls. It's not linking to any GPLv2 code, and the header file (io_uring.h) is dual licensed as GPLv2 and MIT. Similarly, if you choose to use the higher level liburing, it's dual LGPL and MIT licensed. It's all very deliberately not viral for user-space applications.
- Conan_Kudo 6y agoThat is not true for eBPF, though. That stuff pretty works exclusively out of instrumenting and manipulating Linux itself. That said, libbpf is LGPLv2+, even though a lot of the stuff you'd pull in to use eBPF at the kernel level forces it to be GPLv2.
- MaxBarraclough 6y agoThe 'workaround' will be for companies to use it for internal projects, and to decline to publish their work. The kernel is licensed under GPLv2 after all, not the AGPL.
- tyingq 6y agoWhat seems to prevent an GPL issues with io_uring is the "linking" part of GPLV2. Covered here: https://www.gnu.org/licenses/gpl-faq.en.html#GPLStaticVsDynamic https://www.gnu.org/licenses/gpl-faq.en.html#GPLStaticVsDyna... Glibc being the entry point for the syscall, and glibc being LGPL is specifically why it's "okay". If you were to directly link an application to the kernel code, it would be viral.
- Asooka 6y ago> If you were to directly link an application to the kernel code, it would be viral. That doesn't sound right, how is a io_submit syscall different from a read syscall? Obviously if you write a kernel module it links with the kernel, but just issuing a syscall shouldn't be considered linking, otherwise every single proprietary software that issues a raw syscall would be GPL-infringing.
- tyingq 6y agoWe are saying the same thing. "Directly link" meaning dynamic or static library linking. That's where GPLv2 draws the line.
- jcranmer 6y agoLicenses only matter to the extent that the resulting product is a "derivative work" of the GPL code. If it's not derivative, then you have no copyright claim that requires the license to permit you to use it. While the exact nature of when a software project is a "derivative work" of the libraries it depends on is still somewhat of an open legal question, I would be very surprised if anyone were to find that a computer application were a derivative of the OS it runs on. The typical understanding of the industry is essentially a process boundary, and the boundary a system call represents is closer to a process boundary than it is to a library call.
- tyingq 6y agoPerhaps I phrased something odd? We are saying the same thing from my perspective. By "prevents GPL issues", I'm saying the user space code wouldn't need to be GPL.
- eeZah7Ux 6y agoStop using the term "viral". It's propaganda made up by microsoft.