home *** CD-ROM | disk | FTP | other *** search
/ linuxmafia.com 2016 / linuxmafia.com.tar / linuxmafia.com / kb / Kernel / COPYING.modules < prev    next >
Internet Message Format  |  2004-05-26  |  33KB

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