RHEL4/Documentation/COPYING.modules
<<
>>
Prefs
   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