1Date: Thu, 29 Apr 2004 14:10:41 -0700 (PDT) 2From: Linus Torvalds <torvalds@osdl.org> 3To: Giuliano Colla 4cc: Linux Kernel Mailing List <linux-kernel@vger.kernel.org> 5Subject: Re: [hsflinux] [PATCH] Blacklist binary-only modules lying about 6 their license 7Message-ID: <Pine.LNX.4.58.0404291404100.1629@ppc970.osdl.org> 8 9On Thu, 29 Apr 2004, Giuliano Colla wrote: 10> 11> Let's try not to be ridiculous, please. 12 13It's not abotu being ridiculous. It's about honoring peoples copyrights. 14 15> As an end user, if I buy a full fledged modem, I get some amount of 16> proprietary, non GPL, code which executes within the board or the 17> PCMCIA card of the modem. The GPL driver may even support the 18> functionality of downloading a new version of *proprietary* code into 19> the flash Eprom of the device. The GPL linux driver interfaces with it, 20> and all is kosher. 21 22Indeed. Everything is kosher, because the other piece of hardware and 23software has _nothing_ to do with the kernel. It's not linked into it, it 24cannot reasonably corrupt internal kernel data structures with random 25pointer bugs, and in general you can think of firmware as part of the 26_hardware_, not the software of the machine. 27 28> On the other hand, I have the misfortune of being stuck with a 29> soft-modem, roughly the *same* proprietary code is provided as a binary 30> file, and a linux driver (source provided) interfaces with it. In that 31> case the kernel is flagged as "tainted". 32 33It is flagged as tainted, because your argument that it is "the same code" 34is totally BOGUS AND UNTRUE! 35 36In the binary kernel module case, a bug in the code corrupts random data 37structures, or accesses kernel internals without holding the proper locks, 38or does a million other things wrong, BECAUSE A KERNEL MODULE IS VERY 39INTIMATELY LINKED WITH THE KERNEL. 40 41A kernel module is _not_ a separate work, and can in _no_ way be seen as 42"part of the hardware". It's very much a part of the _kernel_. And the 43kernel developers require that such code be GPL'd so that it can be fixed, 44or if there's a valid argument that it's not a derived work and not GPL'd, 45then the kernel developers who have to support the end result mess most 46definitely do need to know about the taint. 47 48You are not the first (and sadly, you likely won't be the last) person to 49equate binary kernel modules with binary firmware. And I tell you that 50such a comparison is ABSOLUTE CRAPOLA. There's a damn big difference 51between running firmware on another chip behind a PCI bus, and linking 52into the kernel directly. 53 54And if you don't see that difference, then you are either terminally 55stupid, or you have some ulterior reason to claim that they are the same 56case even though they clearly are NOT. 57 58> Can you honestly tell apart the two cases, if you don't make a it a case 59> of "religion war"? 60 61It has absolutely nothing to do with religion. 62 63 Linus 64 65Date: Fri, 5 Dec 2003 09:19:52 -0800 (PST) 66From: Linus Torvalds <torvalds@osdl.org> 67To: Peter Chubb 68cc: linux-kernel@vger.kernel.org 69Subject: Re: Linux GPL and binary module exception clause? 70Message-ID: <Pine.LNX.4.58.0312050853200.9125@home.osdl.org> 71 72On Fri, 5 Dec 2003, Peter Chubb wrote: 73> 74> As I understand it, SCO is/was claiming that JFS and XFS are derived 75> works of the UNIX source base, because they were developed to match 76> the internal interfaces of UNIX, and with knowledge of the internals 77> of UNIX -- and they hold the copyrights of and are the licensor of UNIX. 78 79Yes, and I'm not claiming anything like that. 80 81I claim that a "binary linux kernel module" is a derived work of the 82kernel, and thus has to come with sources. 83 84But if you use those same sources (and _you_ wrote them) they do not 85contain any Linux code, they are _clearly_ not derived from Linux, and you 86can license and use your own code any way you want. 87 88You just can't make a binary module for Linux, and claim that that module 89isn't derived from the kernel. Because it generally is - the binary 90module not only included header files, but more importantly it clearly is 91_not_ a standalone work any more. So even if you made your own prototypes 92and tried hard to avoid kernel headers, it would _still_ be connected and 93dependent on the kernel. 94 95And note that I'm very much talking about just the _binary_. Your source 96code is still very much yours, and you have the right to distribute it 97separately any which way you want. You wrote it, you own the copyrights to 98it, and it is an independent work. 99 100But when you distribute it in a way that is CLEARLY tied to the GPL'd 101kernel (and a binary module is just one such clear tie - a "patch" to 102build it or otherwise tie it to the kernel is also such a tie, even if you 103distribute it as source under some other license), you're BY DEFINITION 104not an independent work any more. 105 106(But exactly because I'm not a black-and-white person, I reserve the right 107to make a balanced decision on any particular case. I have several times 108felt that the module author had a perfectly valid argument for why the 109"default assumption" of being derived wasn't the case. That's why things 110like the AFS module were accepted - but not liked - in the first place). 111 112This is why SCO's arguments are specious. IBM wrote their code, retained 113their copyrights to their code AND THEY SEVERED THE CONNECTION TO SCO'S 114CODE (and, arguably the connections didn't even exist in the first place, 115since apparently things like JFS were written for OS/2 as well, and the 116Linux port was based on that one - but that's a separate argument and 117independent of my point). 118 119See the definition of "derivative" in USC 17.1.101: 120 121 A "derivative work" is a work based upon one or more preexisting 122 works, such as a translation, musical arrangement, dramatization, 123 fictionalization, motion picture version, sound recording, art 124 reproduction, abridgment, condensation, or any other form in which 125 a work may be recast, transformed, or adapted. A work consisting 126 of editorial revisions, annotations, elaborations, or other 127 modifications which, as a whole, represent an original work of 128 authorship, is a "derivative work". 129 130And a binary module is an "elaboration" on the kernel. Sorry, but that is 131how it IS. 132 133In short: your code is yours. The code you write is automatically 134copyrighted by YOU, and as such you have the right to license and use it 135any way you want (well, modulo _other_ laws, of course - in the US your 136license can't be racist, for example, but that has nothing to do with 137copyright laws, and would fall under a totally different legal framework). 138 139But when you use that code to create an "elaboration" to the kernel, that 140makes it a derived work, and you cannot distribute it except as laid out 141by the GPL. A binary module is one such case, but even just a source patch 142is _also_ one such case. The lines you added are yours, but when you 143distribute it as an elaboration, you are bound by the restriction on 144derivative works. 145 146Or you had better have some other strong argument why it isn't. Which has 147been my point all along. 148 149 Linus 150 151 152Date: Wed, 10 Dec 2003 09:10:18 -0800 (PST) 153From: Linus Torvalds <torvalds@osdl.org> 154To: Larry McVoy 155Subject: Re: Linux GPL and binary module exception clause? 156 157On Wed, 10 Dec 2003, Larry McVoy wrote: 158> 159> Which is? How is it that you can spend a page of text saying a judge doesn't 160> care about technicalities and then base the rest of your argument on the 161> distinction between a "plugin" and a "kernel module"? 162 163I'll stop arguing, since you obviously do not get it. 164 165I explained the technicalities to _you_, and you are a technical person. 166 167But if you want to explain something to a judge, you get a real lawyer, 168and you make sure that the lawyer tries to explain the issue in _non_ 169technical terms. Because, quite frankly, the judge is not going to buy a 170technical discussion he or she doesn't understand. 171 172Just as an example, how do you explain to a judge how much code the Linux 173kernel contains? Do you say "it's 6 million lines of C code and header 174files and documentation, for a total of about 175MB of data"? 175 176Yeah, maybe you'd _mention_ that, but to actually _illustrate_ the point 177you'd say that if you printed it out, it would be a solid stack of papers 178100 feet high. And you'd compare it to the height of the court building 179you're in, or something. Maybe you'd print out _one_ file, bind it as a 180book, and wave it around as one out of 15,000 files. 181 182But when _you_ ask me about how big the kernel is, I'd say "5 million 183lines". See the difference? It would be silly for me to tell you how many 184feet of paper the kernel would print out to, because we don't have those 185kinds of associations. 186 187Similarly, if you want to explain the notion of a kernel module, you'd 188compare it to maybe an extra chapter in a book. You'd make an analogy to 189something that never _ever_ mentions "linking". 190 191Just imagine: distributing a compiled binary-only kernel module that can 192be loaded into the kernel is not like distributing a new book: it's more 193like distributing a extra chapter to a book that somebody else wrote, that 194uses all the same characters and the plot, but more importantly it 195literally can only be read _together_ with the original work. It doesn't 196stand alone. 197 198In short, your honour, this extra chapter without any meaning on its own 199is a derived work of the book. 200 201In contrast, maybe you can re-write your code and distribute it as a 202short-story, which can be run on its own, and maybe the author has been 203influenced by another book, but the short-story could be bound AS IS, and 204a recipient would find it useful even without that other book. In that 205case, the short story is not a derived work - it's only inspired. 206 207Notice? This is actually _exactly_ what I've been arguing all along, 208except I've been arguing with a technical audience, so I've been using 209technical examples and terminology. But my argument is that just the fact 210that somebody compiled the code for Linux into a binary module that is 211useless without a particular version of the kernel DOES MAKE IT A DERIVED 212WORK. 213 214But also note how it's only the BINARY MODULE that is a derived work. Your 215source code is _not_ necessarily a derived work, and if you compile it for 216another operating system, I'd clearly not complain. 217 218This is the "stand-alone short story" vs "extra chapter without meaning 219outside the book" argument. See? One is a work in its own right, the other 220isn't. 221 222 Linus 223 224 225Please read the FAQ at http://www.tux.org/lkml/ 226Date: Thu, 4 Dec 2003 22:43:42 -0800 (PST) 227From: Linus Torvalds <torvalds@osdl.org> 228To: David Schwartz 229cc: linux-kernel@vger.kernel.org 230Subject: RE: Linux GPL and binary module exception clause? 231 232On Thu, 4 Dec 2003, David Schwartz wrote: 233> 234> Yes, but they will cite the prohibition against *creating* derived 235> works. 236 237So? 238 239The same prohibition exists with the GPL. You are not allowed to create 240and distribute a derived work unless it is GPL'd. 241 242I don't see what you are arguing against. It is very clear: a kernel 243module is a derived work of the kernel by default. End of story. 244 245You can then try to prove (through development history etc) that there 246would be major reasons why it's not really derived. But your argument 247seems to be that _nothing_ is derived, which is clearly totally false, as 248you yourself admit when you replace "kernel" with "Harry Potter". 249 250 Linus 251 252Date: Wed, 3 Dec 2003 16:00:21 -0800 (PST) 253From: Linus Torvalds <torvalds@osdl.org> 254To: Kendall Bennet 255cc: linux-kernel@vger.kernel.org 256Subject: Re: Linux GPL and binary module exception clause? 257 258On Wed, 3 Dec 2003, Kendall Bennett wrote: 259> 260> I have heard many people reference the fact that the although the Linux 261> Kernel is under the GNU GPL license, that the code is licensed with an 262> exception clause that says binary loadable modules do not have to be 263> under the GPL. 264 265Nope. No such exception exists. 266 267There's a clarification that user-space programs that use the standard 268system call interfaces aren't considered derived works, but even that 269isn't an "exception" - it's just a statement of a border of what is 270clearly considered a "derived work". User programs are _clearly_ not 271derived works of the kernel, and as such whatever the kernel license is 272just doesn't matter. 273 274And in fact, when it comes to modules, the GPL issue is exactly the same. 275The kernel _is_ GPL. No ifs, buts and maybe's about it. As a result, 276anything that is a derived work has to be GPL'd. It's that simple. 277 278Now, the "derived work" issue in copyright law is the only thing that 279leads to any gray areas. There are areas that are not gray at all: user 280space is clearly not a derived work, while kernel patches clearly _are_ 281derived works. 282 283But one gray area in particular is something like a driver that was 284originally written for another operating system (ie clearly not a derived 285work of Linux in origin). At exactly what point does it become a derived 286work of the kernel (and thus fall under the GPL)? 287 288THAT is a gray area, and _that_ is the area where I personally believe 289that some modules may be considered to not be derived works simply because 290they weren't designed for Linux and don't depend on any special Linux 291behaviour. 292 293Basically: 294 - anything that was written with Linux in mind (whether it then _also_ 295 works on other operating systems or not) is clearly partially a derived 296 work. 297 - anything that has knowledge of and plays with fundamental internal 298 Linux behaviour is clearly a derived work. If you need to muck around 299 with core code, you're derived, no question about it. 300 301Historically, there's been things like the original Andrew filesystem 302module: a standard filesystem that really wasn't written for Linux in the 303first place, and just implements a UNIX filesystem. Is that derived just 304because it got ported to Linux that had a reasonably similar VFS interface 305to what other UNIXes did? Personally, I didn't feel that I could make that 306judgment call. Maybe it was, maybe it wasn't, but it clearly is a gray 307area. 308 309Personally, I think that case wasn't a derived work, and I was willing to 310tell the AFS guys so. 311 312Does that mean that any kernel module is automatically not a derived work? 313HELL NO! It has nothing to do with modules per se, except that non-modules 314clearly are derived works (if they are so central to the kenrel that you 315can't load them as a module, they are clearly derived works just by virtue 316of being very intimate - and because the GPL expressly mentions linking). 317 318So being a module is not a sign of not being a derived work. It's just 319one sign that _maybe_ it might have other arguments for why it isn't 320derived. 321 322 Linus 323 324 325Date: Wed, 3 Dec 2003 16:23:33 -0800 (PST) 326From: Linus Torvalds <torvalds@osdl.org> 327To: Kendall Bennett 328cc: linux-kernel@vger.kernel.org 329Subject: Re: Linux GPL and binary module exception clause? 330 331 332On Wed, 3 Dec 2003, Linus Torvalds wrote: 333> 334> So being a module is not a sign of not being a derived work. It's just 335> one sign that _maybe_ it might have other arguments for why it isn't 336> derived. 337 338Side note: historically, the Linux kernel module interfaces were really 339quite weak, and only exported a few tens of entry-points, and really 340mostly effectively only allowed character and block device drivers with 341standard interfaces, and loadable filesystems. 342 343So historically, the fact that you could load a module using nothing but 344these standard interfaces tended to be a much stronger argument for not 345being very tightly coupled with the kernel. 346 347That has changed, and the kernel module interfaces we have today are MUCH 348more extensive than they were back in '95 or so. These days modules are 349used for pretty much everything, including stuff that is very much 350"internal kernel" stuff and as a result the kind of historic "implied 351barrier" part of modules really has weakened, and as a result there is not 352avery strong argument for being an independent work from just the fact 353that you're a module. 354 355Similarly, historically there was a much stronger argument for things like 356AFS and some of the binary drivers (long forgotten now) for having been 357developed totally independently of Linux: they literally were developed 358before Linux even existed, by people who had zero knowledge of Linux. That 359tends to strengthen the argument that they clearly aren't derived. 360 361In contrast, these days it would be hard to argue that a new driver or 362filesystem was developed without any thought of Linux. I think the NVidia 363people can probably reasonably honestly say that the code they ported had 364_no_ Linux origin. But quite frankly, I'd be less inclined to believe that 365for some other projects out there.. 366 367 Linus 368 369 370 371 372Date: Thu, 17 Oct 2002 10:08:19 -0700 (PDT) 373From: Linus Torvalds <torvalds@transmeta.com> 374To: Christoph Hellwig 375Cc: <linux-kernel@vger.kernel.org> 376Subject: Re: [PATCH] make LSM register functions GPLonly exports 377In-Reply-To: <20021017175403.A32516@infradead.org> 378Message-ID: <Pine.LNX.4.44.0210170958340.6739-100000@home.transmeta.com> 379 380Note that if this fight ends up being a major issue, I'm just going to 381remove LSM and let the security vendors do their own thing. So far 382 383 - I have not seen a lot of actual usage of the hooks 384 - seen a number of people who still worry that the hooks degrade 385 performance in critical areas 386 - the worry that people use it for non-GPL'd modules is apparently real, 387 considering Crispin's reply. 388 389I will re-iterate my stance on the GPL and kernel modules: 390 391 There is NOTHING in the kernel license that allows modules to be 392 non-GPL'd. 393 394 The _only_ thing that allows for non-GPL modules is copyright law, and 395 in particular the "derived work" issue. A vendor who distributes non-GPL 396 modules is _not_ protected by the module interface per se, and should 397 feel very confident that they can show in a court of law that the code 398 is not derived. 399 400 The module interface has NEVER been documented or meant to be a GPL 401 barrier. The COPYING clearly states that the system call layer is such a 402 barrier, so if you do your work in user land you're not in any way 403 beholden to the GPL. The module interfaces are not system calls: there 404 are system calls used to _install_ them, but the actual interfaces are 405 not. 406 407 The original binary-only modules were for things that were pre-existing 408 works of code, ie drivers and filesystems ported from other operating 409 systems, which thus could clearly be argued to not be derived works, and 410 the original limited export table also acted somewhat as a barrier to 411 show a level of distance. 412 413In short, Crispin: I'm going to apply the patch, and if you as a copyright 414holder of that file disagree, I will simply remove all of he LSM code from 415the kernel. I think it's very clear that a LSM module is a derived work, 416and thus copyright law and the GPL are not in any way unclear about it. 417 418If people think they can avoid the GPL by using function pointers, they 419are WRONG. And they have always been wrong. 420 421 Linus 422 423------------------------------------------------------------------------ 424Date: Fri, 19 Oct 2001 13:16:45 -0700 (PDT) 425From: Linus Torvalds <torvalds@transmeta.com> 426To: Barnes 427Subject: Re: GPL, Richard Stallman, and the Linux kernel 428 429[ This is not, of course, a legal document, but if you want to forward it 430 to anybody else, feel free to do so. And if you want to argue legal 431 points with me or point somehting out, I'm always interested. To a 432 point ;-] 433 434On Fri, 19 Oct 2001, Barnes wrote: 435> 436> I've been exchanging e-mail with Richard Stallman for a couple of 437> weeks about the finer points of the GPL. 438 439I feel your pain. 440 441> I've have spent time pouring through mailing list archives, usenet, 442> and web search engines to find out what's already been covered about 443> your statement of allowing dynamically loaded kernel modules with 444> proprietary code to co-exist with the Linux kernel. So far I've 445> been unable to find anything beyond vague statements attributed to 446> you. If these issues are addressed somewhere already, please refer 447> me. 448 449Well, it really boils down to the equivalent of "_all_ derived modules 450have to be GPL'd". An external module doesn't really change the GPL in 451that respect. 452 453There are (mainly historical) examples of UNIX device drivers and some 454UNIX filesystems that were pre-existing pieces of work, and which had 455fairly well-defined and clear interfaces and that I personally could not 456really consider any kind of "derived work" at all, and that were thus 457acceptable. The clearest example of this is probably the AFS (the Andrew 458Filesystem), but there have been various device drivers ported from SCO 459too. 460 461> Issue #1 462> ======== 463> Currently the GPL version 2 license is the only license covering the 464> Linux kernel. I cannot find any alternative license explaining the 465> loadable kernel module exception which makes your position difficult 466> to legally analyze. 467> 468> There is a note at the top of www.kernel.org/pub/linux/kernel/COPYING, 469> but that states "user programs" which would clearly not apply to 470> kernel modules. 471> 472> Could you clarify in writing what the exception precisely states? 473 474Well, there really is no exception. However, copyright law obviously 475hinges on the definition of "derived work", and as such anything can 476always be argued on that point. 477 478I personally consider anything a "derived work" that needs special hooks 479in the kernel to function with Linux (ie it is _not_ acceptable to make a 480small piece of GPL-code as a hook for the larger piece), as that obviously 481implies that the bigger module needs "help" from the main kernel. 482 483Similarly, I consider anything that has intimate knowledge about kernel 484internals to be a derived work. 485 486What is left in the gray area tends to be clearly separate modules: code 487that had a life outside Linux from the beginning, and that do something 488self-containted that doesn't really have any impact on the rest of the 489kernel. A device driver that was originally written for something else, 490and that doesn't need any but the standard UNIX read/write kind of 491interfaces, for example. 492 493> Issue #2 494> ======== 495> I've found statements attributed to you that you think only 10% of 496> the code in the current kernel was written by you. By not being the 497> sole copyright holder of the Linux kernel, a stated exception to 498> the GPL seems invalid unless all kernel copyright holders agreed on 499> this exception. How does the exception cover GPL'd kernel code not 500> written by you? Has everyone contributing to the kernel forfeited 501> their copyright to you or agreed with the exception? 502 503Well, see above about the lack of exception, and about the fundamental 504gray area in _any_ copyright issue. The "derived work" issue is obviously 505a gray area, and I know lawyers don't like them. Crazy people (even 506judges) have, as we know, claimed that even obvious spoofs of a work that 507contain nothing of the original work itself, can be ruled to be "derived". 508 509I don't hold views that extreme, but at the same time I do consider a 510module written for Linux and using kernel infrastructures to get its work 511done, even if not actually copying any existing Linux code, to be a 512derived work by default. You'd have to have a strong case to _not_ 513consider your code a derived work.. 514 515> Issue #3 516> ======== 517> This issue is related to issue #1. Exactly what is covered by the 518> exception? For example, all code shipped with the Linux kernel 519> archive and typically installed under /usr/src/linux, all code under 520> /usr/src/linux except /usr/src/linux/drivers, or just the code in 521> the /usr/src/linux/kernel directory? 522 523See above, and I think you'll see my point. 524 525The "user program" exception is not an exception at all, for example, it's 526just a more clearly stated limitation on the "derived work" issue. If you 527use standard UNIX system calls (with accepted Linux extensions), your 528program obviously doesn't "derive" from the kernel itself. 529 530Whenever you link into the kernel, either directly or through a module, 531the case is just a _lot_ more muddy. But as stated, by default it's 532obviously derived - the very fact that you _need_ to do something as 533fundamental as linking against the kernel very much argues that your 534module is not a stand-alone thing, regardless of where the module source 535code itself has come from. 536 537> Issue #4 538> ======== 539> This last issue is not so much a issue for the Linux kernel 540> exception, but a request for comment. 541> 542> Richard and I both agree that a "plug-in" and a "dynamically 543> loaded kernel module" are effectively the same under the GPL. 544 545Agreed. 546 547The Linux kernel modules had (a long time ago), a more limited interface, 548and not very many functions were actually exported. So five or six years 549ago, we could believably claim that "if you only use these N interfaces 550that are exported from the standard kernel, you've kind of implicitly 551proven that you do not need the kernel infrastructure". 552 553That was never really documented either (more of a guideline for me and 554others when we looked at the "derived work" issue), and as modules were 555more-and-more used not for external stuff, but just for dynamic loading of 556standard linux modules that were distributed as part of the kernel anyway, 557the "limited interfaces" argument is no longer a very good guideline for 558"derived work". 559 560So these days, we export many internal interfaces, not because we don't 561think that they would "taint" the linker, but simply because it's useful 562to do dynamic run-time loading of modules even with standard kernel 563modules that _are_ supposed to know a lot about kernel internals, and are 564obviously "derived works".. 565 566> However we disagree that a plug-in for a GPL'd program falls 567> under the GPL as asserted in the GPL FAQ found in the answer: 568> http://www.gnu.org/licenses/gpl-faq.html#GPLAndPlugins. 569 570I think you really just disagree on what is derived, and what is not. 571Richard is very extreme: _anything_ that links is derived, regardless of 572what the arguments against it are. I'm less extreme, and I bet you're even 573less so (at least you would like to argue so for your company). 574 575> My assertion is that plug-ins are written to an interface, not a 576> program. Since interfaces are not GPL'd, a plug-in cannot be GPL'd 577> until the plug-in and program are placed together and run. That is 578> done by the end user, not the plug-in creator. 579 580I agree, but also disrespectfully disagree ;) 581 582It's an issue of what a "plug-in" is - is it a way for the program to 583internally load more modules as it needs them, or is it _meant_ to be a 584public, published interface. 585 586For example, the "system call" interface could be considered a "plug-in 587interface", and running a user mode program under Linux could easily be 588construed as running a "plug-in" for the Linux kernel. No? 589 590And there, I obviously absolutely agree with you 100%: the interface is 591published, and it's _meant_ for external and independent users. It's an 592interface that we go to great lengths to preserve as well as we can, and 593it's an interface that is designed to be independent of kernel versions. 594 595But maybe somebody wrote his program with the intention to dynamically 596load "actors" as they were needed, as a way to maintain a good modularity, 597and to try to keep the problem spaces well-defined. In that case, the 598"plug-in" may technically follow all the same rules as the system call 599interface, even though the author doesn't intend it that way. 600 601So I think it's to a large degree a matter of intent, but it could 602arguably also be considered a matter of stability and documentation (ie 603"require recompilation of the plug-in between version changes" would tend 604to imply that it's an internal interface, while "documented binary 605compatibility across many releases" implies a more stable external 606interface, and less of a derived work) 607 608Does that make sense to you? 609 610> I asked Richard to comment on several scenarios involving plug-ins 611> explain whether or not they were in violation of the GPL. So far he 612> as only addressed one and has effectively admitted a hole. This is 613> the one I asked that he's responded to: 614> [A] non-GPL'd plug-in writer writes a plug-in for a non-GPL'd 615> program. Another author writes a GPL'd program making the 616> first author's plug-ins compatible with his program. Are now 617> the plug-in author's plug-ins now retroactively required to be 618> GPL'd? 619> 620> His response: 621> No, because the plug-in was not written to extend this program. 622> 623> I find it suspicious that whether or not the GPL would apply to the 624> plug-in depends on the mindset of the author. 625 626The above makes no sense if you think of it as a "plug in" issue, but it 627makes sense if you think of it as a "derived work" issue, along with 628taking "intent" into account. 629 630I know lawyers tend to not like the notion of "intent", because it brings 631in another whole range of gray areas, but it's obviously a legal reality. 632 633Ok, enough blathering from me. I'd just like to finish off with a few 634comments, just to clarify my personal stand: 635 636 - I'm obviously not the only copyright holder of Linux, and I did so on 637 purpose for several reasons. One reason is just because I hate the 638 paperwork and other cr*p that goes along with copyright assignments. 639 640 Another is that I don't much like copyright assignments at all: the 641 author is the author, and he may be bound by my requirement for GPL, 642 but that doesn't mean that he should give his copyright to me. 643 644 A third reason, and the most relevant reason here, is that I want 645 people to _know_ that I cannot control the sources. I can write you a 646 note to say that "for use XXX, I do not consider module YYY to be a 647 derived work of my kernel", but that would not really matter that much. 648 Any other Linux copyright holder might still sue you. 649 650 This third reason is what makes people who otherwise might not trust me 651 realize that I cannot screw people over. I am bound by the same 652 agreement that I require of everybody else, and the only special status 653 I really have is a totally non-legal issue: people trust me. 654 655 (Yes, I realize that I probably would end up having more legal status 656 than most, even apart from the fact that I still am the largest single 657 copyright holder, if only because of appearances) 658 659 - I don't really care about copyright law itself. What I care about is my 660 own morals. Whether I'd ever sue somebody or not (and quite frankly, 661 it's the last thing I ever want to do - if I never end up talking to 662 lawyers in a professional context, I'll be perfectly happy. No 663 disrespect intended) will be entirely up to whether I consider what 664 people do to me "moral" or not. Which is why intent matters to me a 665 lot - both the intent of the person/corporation doign the infringement, 666 _and_ the intent of me and others in issues like the module export 667 interface. 668 669 Another way of putting this: I don't care about "legal loopholes" and 670 word-wrangling. 671 672 - Finally: I don't trust the FSF. I like the GPL a lot - although not 673 necessarily as a legal piece of paper, but more as an intent. Which 674 explains why, if you've looked at the Linux COPYING file, you may have 675 noticed the explicit comment about "only _this_ particular version of 676 the GPL covers the kernel by default". 677 678 That's because I agree with the GPL as-is, but I do not agree with the 679 FSF on many other matters. I don't like software patents much, for 680 example, but I do not want the code I write to be used as a weapon 681 against companies that have them. The FSF has long been discussing and 682 is drafting the "next generation" GPL, and they generally suggest that 683 people using the GPL should say "v2 or at your choice any later 684 version". 685 686 Linux doesn't do that. The Linux kernel is v2 ONLY, apart from a few 687 files where the author put in the FSF extension (and see above about 688 copyright assignments why I would never remove such an extension). 689 690The "v2 only" issue might change some day, but only after all documented 691copyright holders agree on it, and only after we've seen what the FSF 692suggests. From what I've seen so far from the FSF drafts, we're not likely 693to change our v2-only stance, but there might of course be legal reasons 694why we'd have to do something like it (ie somebody challenging the GPLv2 695in court, and part of it to be found unenforceable or similar would 696obviously mean that we'd have to reconsider the license). 697 698 Linus 699 700PS. Historically, binary-only modules have not worked well under Linux, 701quite regardless of any copyright issues. The kernel just develops too 702quickly for binary modules to work well, and nobody really supports them. 703Companies like Red Hat etc tend to refuse to have anything to do with 704binary modules, because if something goes wrong there is nothing they can 705do about it. So I just wanted to let you know that the _legal_ issue is 706just the beginning. Even though you probably don't personally care ;) 707 708 709

