Originally posted by pingufunkybeat
View Post
Announcement
Collapse
No announcement yet.
Debating Continues Over Possible Kernel GPL Violation
Collapse
X
-
Originally posted by ryao View PostOpen source operating systems that are not GPL-licensed do not seem to have that problem.
And on the flipside Linux has helped the *BSD's by requiring open source drivers as lots of BSD drivers have been reverse engineered from Linux driver source code. Source code which would not have been available had it not been for the Linux kernel developers hard stance on binary blobs.
Reverse engineering against source code is _much_ easier than reverse engineering against a binary black box.
Originally posted by ryao View PostIf it is fine to be compatible with interfaces, at what point can you call something a derived work if you are able to replace both sides of an interface?
Comment
-
Originally posted by airlied View PostThe userspace syscall interface in Linux has an exception that anything using it isn't a derived work, and is free from GPL obligations. It doesn't have this exception for the module interface.
whether its logical or not doesn't matter.
Dave.
Originally posted by XorEaxEax View PostCan you point me to another system with anywhere near as many open source drivers as Linux?
And on the flipside Linux has helped the *BSD's by requiring open source drivers as lots of BSD drivers have been reverse engineered from Linux driver source code. Source code which would not have been available had it not been for the Linux kernel developers hard stance on binary blobs.
Reverse engineering against source code is _much_ easier than reverse engineering against a binary black box.
Something that is fairly interesting is that the OpenBSD developers appear to have written a disproportionately large number of reverse engineered drivers, some of which have found their way into Linux. When I say that they did reverse engineering, I mean blobs, not source code. Anyone who claims that people reverse engineer source code has no clue what reverse engineering is, yourself included.
With that said, Linux drivers rarely find their way into *BSD operating systems because of restrictive licensing. The only real exceptions to this are Linux graphics drivers, which are often MIT licensed.Last edited by ryao; 13 November 2012, 10:55 PM.
Comment
-
Originally posted by airlied View PostAnyone who shops a prebuilt kernel distributes it, if you build a livecd and give it to your friend you have distributed the Linux kernel.
The debate on the nvidia driver and AFS stuff is borderline, since derived works aren't clearly defined, and generally only a court can decide, and they may take a completely different method of defining it than me or anyone else. Even kernel devs disagree on what constitutes a derived work, and some believe the nvidia driver definitely does.
People have stopped distros and live cd from shipping the nvidia driver on the same media, distros only ship the binary driver separate from the kernel, and cause the user to do the final linking which violates the GPL on that users machine. Also nvidia never distribute the binary driver with a linux kernel attached.
You'll notice for ARM systems most of the kernel drivers are open source for this reason, since they ship them all on one media.
Its not allowed to use the non _GPL symbols unless you are sure your work isn't a derived work, i.e. you have good lawyers who aren't just telling you what you want to hear.
Dave.
Code:make -C /lib/modules/3.6.6/build SUBDIRS=/tmp/module modules make[1]: Entering directory `/usr/src/linux-3.6.6' test -e include/generated/autoconf.h -a -e include/config/auto.conf || ( \ echo >&2; \ echo >&2 " ERROR: Kernel configuration is invalid."; \ echo >&2 " include/generated/autoconf.h or include/config/auto.conf are missing.";\ echo >&2 " Run 'make oldconfig && make prepare' on kernel src to fix it."; \ echo >&2 ; \ /bin/false) mkdir -p /tmp/module/.tmp_versions ; rm -f /tmp/module/.tmp_versions/* make -f scripts/Makefile.build obj=/tmp/module gcc -Wp,-MD,/tmp/module/.hello.o.d -nostdinc -isystem /usr/lib/gcc/x86_64-pc-linux-gnu/4.6.3/include -I/usr/src/linux-3.6.6/arch/x86/include -Iarch/x86/include/generated -Iinclude -include /usr/src/linux-3.6.6/include/linux/kconfig.h -D__KERNEL__ -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -fno-delete-null-pointer-checks -O2 -m64 -march=core2 -mno-red-zone -mcmodel=kernel -funit-at-a-time -maccumulate-outgoing-args -fstack-protector -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -DCONFIG_AS_CFI_SECTIONS=1 -DCONFIG_AS_FXSAVEQ=1 -DCONFIG_AS_AVX=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -Wframe-larger-than=2048 -Wno-unused-but-set-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -g -pg -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fconserve-stack -DCC_HAVE_ASM_GOTO -DMODULE -D"KBUILD_STR(s)=#s" -D"KBUILD_BASENAME=KBUILD_STR(hello)" -D"KBUILD_MODNAME=KBUILD_STR(hello)" -c -o /tmp/module/hello.o /tmp/module/hello.c if [ "-pg" = "-pg" ]; then if [ /tmp/module/hello.o != "scripts/mod/empty.o" ]; then /usr/src/linux-3.6.6/scripts/recordmcount "/tmp/module/hello.o"; fi; fi; (cat /dev/null; echo kernel//tmp/module/hello.ko;) > /tmp/module/modules.order make -f /usr/src/linux-3.6.6/scripts/Makefile.modpost scripts/mod/modpost -i /usr/src/linux-3.6.6/Module.symvers -I /tmp/module/Module.symvers -o /tmp/module/Module.symvers -S -w -s gcc -Wp,-MD,/tmp/module/.hello.mod.o.d -nostdinc -isystem /usr/lib/gcc/x86_64-pc-linux-gnu/4.6.3/include -I/usr/src/linux-3.6.6/arch/x86/include -Iarch/x86/include/generated -Iinclude -include /usr/src/linux-3.6.6/include/linux/kconfig.h -D__KERNEL__ -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -fno-delete-null-pointer-checks -O2 -m64 -march=core2 -mno-red-zone -mcmodel=kernel -funit-at-a-time -maccumulate-outgoing-args -fstack-protector -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -DCONFIG_AS_CFI_SECTIONS=1 -DCONFIG_AS_FXSAVEQ=1 -DCONFIG_AS_AVX=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -Wframe-larger-than=2048 -Wno-unused-but-set-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -g -pg -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fconserve-stack -DCC_HAVE_ASM_GOTO -D"KBUILD_STR(s)=#s" -D"KBUILD_BASENAME=KBUILD_STR(hello.mod)" -D"KBUILD_MODNAME=KBUILD_STR(hello)" -DMODULE -c -o /tmp/module/hello.mod.o /tmp/module/hello.mod.c ld -r -m elf_x86_64 -T /usr/src/linux-3.6.6/scripts/module-common.lds --build-id -o /tmp/module/hello.ko /tmp/module/hello.o /tmp/module/hello.mod.o make[1]: Leaving directory `/usr/src/linux-3.6.6'
Code:/* * Common module linker script, always used when linking a module. * Archs are free to supply their own linker scripts. ld will * combine them automatically. */ SECTIONS { /DISCARD/ : { *(.discard) } __ksymtab : { *(SORT(___ksymtab+*)) } __ksymtab_gpl : { *(SORT(___ksymtab_gpl+*)) } __ksymtab_unused : { *(SORT(___ksymtab_unused+*)) } __ksymtab_unused_gpl : { *(SORT(___ksymtab_unused_gpl+*)) } __ksymtab_gpl_future : { *(SORT(___ksymtab_gpl_future+*)) } __kcrctab : { *(SORT(___kcrctab+*)) } __kcrctab_gpl : { *(SORT(___kcrctab_gpl+*)) } __kcrctab_unused : { *(SORT(___kcrctab_unused+*)) } __kcrctab_unused_gpl : { *(SORT(___kcrctab_unused_gpl+*)) } __kcrctab_gpl_future : { *(SORT(___kcrctab_gpl_future+*)) } }
Comment
-
Originally posted by Sidicas View PostI think it's pretty clear.. The company *OWNS* the copyright over the code.
Originally posted by Sidicas View PostJust because they released a GPL license of it, doesn't mean that their internal proprietary version which contains part of their GPL version needs to be open source.
The code in question was developed for the Linux kernel, is a Linux kernel module, runs in kernel space, has no use whatsoever without the Linux kernel, and is distributed with a Linux kernel. That makes it a derived work, and as such they agreed to abide by the terms of the Linux kernel license, the GPLv2, which requires that derived works be available under a license compatible with GPLv2.
Comment
-
Originally posted by ryao View PostDave, the act of linking does not violate the GPL. The act of distributing something that is linked does. Also, could you define what linking means in this context? As far as I have seen, nothing anyone would associate with a traditional linker seems to be done against the kernel binary until the module is loaded.
I would also appreciate it if you would explain how we have an uproar concerning this particular vendor when we have heard relatively little complaint about the numerous other vendors that have been doing this far longer. To cite a specific example, anyone shipping Linux devices using broadcom hardware. If you would prefer, you could talk about this in the context of graphics. There are plenty of Android devices out there with binary graphics drivers being shipped with the kernel. Why is there no uproar over that? Are they not in violation?
So the thing is yes there are lots of GPL violators out there, but not as bad as you imply. You'd be surprised how many of the android graphics stacks have fully open source kernel drivers, even if they aren't upstream, they are still released under the GPL, and there are a lot of people doing GPL violation works with those companies in secret.
The reason this one is bigger is (a) it was on lkml, (b) the company alleged to violate also happen to maintain a GPL fork of their code, (c) the company in question stonewalled any polite inquiries in private, (d) it was on lkml. (d) it got into phoronix.
Generally with GPL violations the organisation doing the investigation and the organisation doing the violatiing, talk in private a lot first, and some agreement is hammered out, occasionally it goes to court.
At a guess this one will probably go into the background, until
one of:
a) some rights holder decides to pursue it, whether that be SFLC, Red Hat, or anyone else who holds kernel copyrights
b) the company just releases the source to the bits they didn't before.
Dave.
Comment
-
Originally posted by Syke View PostExactly. They wrote a Linux kernel module and are distributing a Linux kernel with said module. It doesn't matter where the copyright resides, the module became GPL-licensed when they distributed a Linux-derived work.
Are they stupid or what!?
Comment
-
Originally posted by ryao View Post
You can also find commits from Apple employees in Clang, CUPS, LLVM, Xorg, WebKit, etcetera. These might not be things that you appreciate, but they do exist and other people do appreciate them. I notice that Dave Airlie is on the forums. You could always ask him about Apple's contributions to Xorg. Of course, that assumes that you actually use Xorg. If you do not, I could understand why you would not care.
I assumed that the hostility to FLOSS, displayed most prominently in AppStore cases, was intrinsic to the whole company. Now I can't say there are no contributions, I'll have to say there are no significant contributions ;-)
Comment
-
Originally posted by Syke View PostExactly. They wrote a Linux kernel module and are distributing a Linux kernel with said module. It doesn't matter where the copyright resides, the module became GPL-licensed when they distributed a Linux-derived work.
What happened is that they violated the GPL at the moment they shipped a combined work which included GPL software. Their options at that point are:
- Stop distributing the thing immediately and lose the right to distribute GPL software in the future, or
- GPL the code they distributed
Comment
-
Originally posted by pingufunkybeat View PostThe module DID NOT become GPL-licensed, this is a part of the anti-GPL "viral" FUD. You can't relicense other people's code.
Comment
Comment