Slashdot Mirror


Linux: the GPL and Binary Modules

An anonymous reader writes "When first made available in September of 1991, the Linux kernel source code was released under a very restrictive non-GPL license requiring that the source code must always be available, and that no money could be made off of it. Several months later Linus changed the copyright to the GPL, or GNU General Public License, under which the kernel source code has remained ever since. Thanks to the GPL, any source code derived from the Linux kernel source code must also be freely released under the GPL. This has led many to question the legality of 'binary only' kernel modules, for which no source code is released. Linux creator Linus Torvalds talks about this issue in a recent thread on the lkml."

16 of 657 comments (clear)

  1. How viral IS the GPL? by MROD · · Score: 4, Interesting

    OK, from the article it seems that merely writing a device driver which uses the kernel module interface automatically makes the code a derived work. Also, building programs which include the kernel header files automatically makes those programs GPL.

    Now, what if someone wrote another standard driver interface, separate from the kernel interface, wrote a device driver which implemented that and then wrote a GPL'd interface wrapper which translated the Linux module interface to that of the new standard?

    Obviously, the wrapper interface code is now a derived work. However, does it also mean that because the new driver which uses a code interface which the GPL'd wrapper implements now is tainted by the GPL?

    Also, does the driver become a derived work if the person who writes it initially does so to get some hardware working on his Linux box, rather than his other box which runs ObsureOS which also implements this standard device driver interface but the person hasn't installed the hardware on that machine yet?

    --

    Agrajag: "Oh no, not again!"
  2. lines have to be drawn by ciaran_o_riordan · · Score: 4, Interesting

    it lowers the entry barrier to companys wishing to contribute

    I see it as encouraging companies *not* to contribute. Why give people Free code when you don't have to?

    A binary file is not a contribution, it's just a marketing tactic exploiting our free platform. Since the Linux hackers have written an entire kernel, I don't think it's unreasonable for them to ask for module source code in return. Otherwise the module vendor is a parasite.

  3. SCO Derivative works theory & Linux modules by putaro · · Score: 4, Interesting

    The SCO case will have some far reaching effects if a sufficiently bone-headed judge rules in certain ways. One of the cornerstones of SCO's "case" is their theory on derivative works: notably, JFS. JFS is in the same category of kernel module as AFS which Linus references. SCO claims that JFS is a derivative work of Unix and therefore falls under IBM's contract obligations and SCO's copyright. Were SCO's theory to be accepted, it would be theoretically possible to try to force AFS to be GPL'd under the same theory.


    An even more interesting stretch of the theorem would depend on how this "derivativeness" would be defined. Why is JFS a derivative work? If it's because it has substantial similarities to other Unix file systems (tree structured directories, permissions) there's an interesting case against MS for NTFS and DOS FAT, as these both have tree-structured directories and MS has been a Unix licensee. Now, wouldn't that be fun. Unfortunately the only entity that could bring that case would be our good friends Darl and SCO at this time.

  4. Re:Pragmatism by BESTouff · · Score: 4, Interesting
    Nope. Having binary modules only stops developers from trying to make their own, so you end up with proprietary, non-debuggable and non-portable (across kernel versions or across architectures) drivers. There are for example winmodem drivers you can only use on a 2.2 kernel, or the famous nvidia drivers which work only on i386. Even if this helps the casual gamer (which would be waaay better running Windows anyway), this is in fact a regression from the free software perpective.

    Imagine a future where you install your core Linux kernel, then download a ton of different binary modules from different websites, have to hunt in the forums to mix-and-match the right versions, and end up having bugs nobody won't fix ? Think about it, that's what you want when you allow "pragmatism".

  5. Fair Use by Anonymous Coward · · Score: 5, Interesting

    So, I think there's lots of things to quibble about here, and appended is part of the law that might prove relevent. I'll try to make a case for a driver company attempting to create a non-GPL driver that uses snippets of GPL'd code in a 'fair use' way.

    The key I think is if you can convince a judge that what they are doing is furthering 'research'. But the rest of the tests obtain:

    1) Binary Linux drivers are generally release with a non-commercial nature - people don't charge for the software (although the opposite case, that you have to buy the hardware, could be argued to contradict this) - specifically, note that the word "including" modifies the two called out styles of use (commercial and non-profit eduacation) - thus other things might very well cause this section to obtain.
    2) The copyrighted work is humungus and designed to be used in explicitly this manner
    3) The portion of the whole is miniscule - it could be characterized as a 'quote' from an original source
    4) The effect on the market value of the copyrighted work can be argued (successfully, I think) to be _positive_.

    One other thing: I am under the impression that you can't copyright tables of raw data (such as names and their numeric mappings), so with Linus, I'd argue the #defines and such don't count for these calculations. The comments can't be said to contribute to the (binary) final work, even if someone read them once. Linus noted, and I agree, the compilable code (macros, subs defined in .h files), is what matters, and not all of the compilable code even in the subset of files referenced are used to create the .obj.

    I think I've made a (albeit shakey) case for 'Fair Use' in this way.

    (ObSCO: I wouldn't be _at all_ surprised if SCO is going to attempt to argue that the overwhelming weight of the detrimental effect of #4 on SCOnix's value will outweigh the relatively trivial amount of infringement of #1, #2, #3 should IBM attempt to suggest fair-use of a couple of lines here and there)

    ------
    Title 17, Chapter 1, Section 107
    Notwithstanding the provisions of sections 106 and 106A, the fair use of a copyrighted work, including such use by reproduction in copies or phonorecords or by any other means specified by that section, for purposes such as criticism, comment, news reporting, teaching (including multiple copies for classroom use), scholarship, or research, is not an infringement of copyright. In determining whether the use made of a work in any particular case is a fair use the factors to be considered shall include --

    (1) the purpose and character of the use, including whether such use is of a commercial nature or is for nonprofit educational purposes;

    (2) the nature of the copyrighted work;

    (3) the amount and substantiality of the portion used in relation to the copyrighted work as a whole; and

    (4) the effect of the use upon the potential market for or value of the copyrighted work.

    The fact that a work is unpublished shall not itself bar a finding of fair use if such finding is made upon consideration of all the above factors.

  6. Re:Linux linkiing analogy by kscd · · Score: 5, Interesting

    Derivative works in general are a grey area, but in your specific example I would have to say that you are in fact wrong. Not wrong according to the original U.S. copyright law, but definitely wrong according to what we have now. You say, "If I wrote a story that was derived from the LOTR...". That's it. You wrote a story derived, it's a deritave work. That simple. For example, let's say you would like to re-write Gone with the Wind from a slave's perspective. Completely different story (as you can imagine), but characters, plot, etc. derived from the original. If you did this, you would wind up in court, much like the person that did.

  7. Re:Pragmatism by jusdisgi · · Score: 5, Interesting

    Whatever man, those modules aren't that bad.

    1)I'm interested to see these bug reports due to the "nvidia black box"...you are aware that a good chunk of this thing (and all the kernel interface) is available in source, right?

    2)And what's this about not having one compiled for your archetecture? Have you ever installed these? I did it this morning; I typed one command, a menu prompted me to accept a license, then looked for a version on nvidia's ftp site, didn't find one. So it compiled one for me. This was all every bit as easy as running a WISE installer in windows. That is, as long as you can read the instruction on the site where you downloaded the thing from that says "type 'sh nvidia-thingie'"

    I have run a lot of video cards in a lot of Linux boxes. Some had open source drivers; most of these were good, a couple were not. Some had no drivers available, and I had to use a generic driver. Sometimes this worked, and sometimes it didn't. If I have my choice, I use an nvidia board...the drivers are easy to install, they're fast, you don't have to worry about getting the right module, and most of all they have a knack for just working immediately.

    I wish those drivers were FOSS, but they aren't. I'm not too proud to run them.

    Now...if I can just get the 3d on this ATI mobile radeon IGP320M going......

    --
    Given a choice between free speech and free beer, most people will take the beer.
  8. Kernel and module compability by Anonymous Coward · · Score: 4, Interesting

    I hate binary-only kernel modules, and all kernel modules should be available as source.

    I recently purchased an IDE Raid controller, and naturally I chose one where the box said "Yes! Works with Linux!".

    Sounds great so far, doesn't it? Problem was that the drivers turned out to be precompiled binaries for the kernel shipped with the following distributions: SuSe 7.1-8.0 and RedHat 7.2-9.0.

    I returned the controller and demanded my money back.

    First of all, I ran Debian with a kernel not supported by the binary drivers.

    Second, with these kernel-spesific drivers I would be unable to upgrade my kernel (what if an dangerous kernel exploit is found?)

    Third, "Yes, works with Linux!" is a lie. What the label should say is "Yes, works with a couple of Linux kernels!"

    Fuck the binary drivers. I don't see the point. It's not like they would loose money by giving away the source to the driver -- they'll sell the hardware anyways, won't they!?

  9. Re:Linux driver model doesn't help by StenD · · Score: 3, Interesting
    The fact that Linus states that there is no exception must worry a lot of companies out there who are producing binary drivers for Linux
    No, because he immediately explains that it isn't an exception, it's a clarification:
    There's a clarification that user-space programs that use the standard system call interfaces aren't considered derived works, but even that isn't an "exception" - it's just a statement of a border of what is clearly considered a "derived work". User programs are _clearly_ not derived works of the kernel, and as such whatever the kernel license is just doesn't matter.

    And in fact, when it comes to modules, the GPL issue is exactly the same. The kernel _is_ GPL. No ifs, buts and maybe's about it. As a result, anything that is a derived work has to be GPL'd. It's that simple.

    Now, the "derived work" issue in copyright law is the only thing that leads to any gray areas. There are areas that are not gray at all: user space is clearly not a derived work, while kernel patches clearly _are_ derived works.

    But one gray area in particular is something like a driver that was originally written for another operating system (ie clearly not a derived work of Linux in origin). At exactly what point does it become a derived work of the kernel (and thus fall under the GPL)?

    THAT is a gray area, and _that_ is the area where I personally believe that some modules may be considered to not be derived works simply because they weren't designed for Linux and don't depend on any special Linux behaviour.
    And specifically talking about nVidia:
    In contrast, these days it would be hard to argue that a new driver or filesystem was developed without any thought of Linux. I think the NVidia people can probably reasonably honestly say that the code they ported had _no_ Linux origin. But quite frankly, I'd be less inclined to believe that for some other projects out there.
    And, to wrap it up:
    No, the note at the top of the copying file is something totally different: it's basically a statement to the effect that the copyright holder recognizes that there are limits to a derived work, and spells out one such limit that he would never contest in court.

    See? It's neither a license nor a contract, but it actually does have legal meaning: look up the legal meaning of "estoppel" (google "define:" is qutie good). Trust me, it's got _tons_ of legal precedent.
  10. Re:Pragmatism by October_30th · · Score: 5, Interesting
    Meanwhile linux didn't get any better from it

    Yes it did. I get proper OpenGL acceleration on my Linux box now.

    not-quite-obscure-nividia-just-didnt-bother-compil ing-their-driver-for-it

    You know, if the installer cannot find pre-compiled drivers for your card, it will compile them for you. How's that for service?

    most importantly you don't know what the driver is doing on your system

    Yeah, right. Have you ever read through the code of your LAN card driver, too? How about the USB controller and SCSI-card? Most important of all, how many driver exploits have you heard of either in Windows or Linux?

    --
    The owls are not what they seem
  11. Re:Pragmatism by MS_is_the_best · · Score: 4, Interesting

    Yes it did. I get proper OpenGL acceleration on my Linux box now.

    That is true and an advantage. Unfortunately the drawbacks are perhaps larger (depends on your opinion). An open driver with the same performance would be better (but perhaps impossible).

    You know, if the installer cannot find pre-compiled drivers for your card, it will compile them for you. How's that for service?

    Nope, only the interface around the binary core is compiled, not the driver itself.

    Yeah, right. Have you ever read through the code of your LAN card driver, too? How about the USB controller and SCSI-card? Most important of all, how many driver exploits have you heard of either in Windows or Linux?

    Yes, I have. Lots of others have done this too. Being able to look up the source in case of network troubles is really a great help. The debug mode of the driver is very helpful, the source even better.

  12. So the GPL in fact hurts Linux... by Otis_INF · · Score: 3, Interesting

    You don't have to agree with me, but I can only conclude that the restrictive GPL with its vague derived work clause is hurting Linux: a company won't put trade secrets into a binary driver to run the risk of losing these trade secrets because of a lawsuit based on the GPL which states that the binary only driver has to be opened up because it violates the GPL.

    OR get a proper system into place like in Windows, for kernel modules so the modules are not 'derived works' (calling kernel modules derived works is pretty stupid IMHO, but that aside) OR live by the fact that not a lot of hardware vendors will offer drivers for their hardware. (which then results in the 'home brewn' drivers which are not always up to par).

    Reading all the comments here I simply can't understand why so many people are so hardheaded. Don't you see / understand that to make Linux an OS with great support for a LOT of hardware, you have to convince hardware vendors their drivers will not be part of a GPL-case? Apparently not.

    --
    Never underestimate the relief of true separation of Religion and State.
  13. Re:Pragmatism by Tim+C · · Score: 3, Interesting

    More than that, last I heard NVidia was under NDA from one or more third parties concerning some of the code in their drivers. They simply can't release it, as it essentially isn't theirs to release.

  14. Actual case of a module affected: PWC/PWCX by Nemosoft+Unv. · · Score: 5, Interesting

    So far, most posts in here have been about binary only drivers provided directly by hardware vendors. My case is somewhat different, yet if I read everything correctly, I could still be affected by all this.

    I am the author of the Linux Philips webcam driver, which supports a lot of Philips and Logitecht webcams, and a few others. This driver has been in development for nearly 4 years, has been formally introduced into kernel 2.4.5 and has been in continual support by yours truely ever since the first public release, some 3 years ago. Now here's the catch:

    Part of the driver (PWC) is Open Source, even in the kernel under the GPL. With it, you have a functional webcam driver, but there are some limitations; you can't get the full resolution and not as high as framerate as is possible. For that, you need a binary only plugin, called PWCX. It contains decompression routines that allow you to use the cam at its full performance. These decompression routines fall under an NDA and are thus not public. Judging by the number of mails and webvisitors I think this driver has been quite a success. And now this may no longer be possible.

    The point is, that by the strict interpretation held by Linus et al. I can no longer make this PWCX driver, thereby depriving a lot of users of a useful bit of hardware. Or at least make it quite a bit less enjoyable. I might as well remove the PWC driver altogether form the kernel then, hmm?

    First off, I feel sorry for the thousands of Linux users that use my driver (PWC and/or PWCX) and may no longer be able to do so. Second, I'm getting pissed off beyond measure by this Open Source fundamentalism because it is my driver that may be turned into a worhtless piece of code.

    It is my ass here that's on the line; I signed the NDA with Philips and if I goof up and accidently post the decompressor code or fail to protect it properly, I will be the one standing in court, not Linus. Second, I went through all the trouble of getting in contact with Philips, trying to convince them to help the Linux community and indeed they have, and I commend them on that. But they have their reasons to shield some parts from prying eyes (read: competition) and I can't blame them. So that's why there's and NDA and it's even fairly relaxed. Without the NDA there wouldn't even have been a driver.

    BTW, Philips spent exactly 2 webcams and a couple of manhours on getting the paperwork done in order to get their product supported in Linux for 3 years across 3 major kernel versions, including online helpdesk. I think that's damn cheap. I cannot count the hours I spent on programming and debugging and tracing intractable bugs, not to mention the time spent in helping users by e-mail. I've also spent many an hour to get this PWCX module crosscompiled to various hardware platforms in order to extend it's Linux usage as much as possible. Now that may appearantly all have been a big waste of time. Thank you very much!

    No, it is time to realize for anybody who thinks that the GPL is the Holy Grail of computing that this is not going to work. You cannot force anyone to oblige by a volountary license (because that's what the GPL is: nothing more, nothing less). As I wroting in my piece on tainting the kernel, if you make it any harder for (hardware) vendors to support their product in Linux, they'll drop it like a brick because they don't have to. This way Linux will never gain any real acceptance.

    Finally, it's also not very wise to piss off people like me, who are doing their best, and made some small yet clearly apreciated contribution to Linux. I would also rather have a complete Open Source solution, but I'm realistic enough to know that is not possible in this Universe. So I think I've struck quite a good comprise. But if I am being told now: "well, that isn't good enough", I might just throw in the towel in the ring altogether.

    - Nemosoft

    --
    "Fix it? It has been disintegrated, by definition it cannot be fixed!" - Gru in Despicable Me.
  15. This is pathetic by pclminion · · Score: 3, Interesting
    This is exactly why I'm choosing the BSD license for my code. If you want my code, by all means USE it. By all means CHANGE it. In binary form if you wish. All I ask is that you don't claim that you WROTE IT yourself.

    More and more these days, I view the GPL as moralistic masturbation. It's pathetic and sad. There are plenty of other things in this world that are worth being moralistic about. I don't see how software development falls under the same heading as "helping the homeless" or "stopping persecution" or any of those things we really ought to give a shit about.

    Sorry, but I just don't want to waste my energy on that crap. My primary objective with my code is for people to USE it. Not to sit around smoking cigars with the boys arguing over who has a "right" to it. Grow up and find something worth fighting for, for chrissake.

  16. Re:Linux linkiing analogy by dgatwood · · Score: 3, Interesting
    My favorite would be:

    If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.

    ---George Bernard Shaw

    --

    Check out my sci-fi/humor trilogy at PatriotsBooks.