📄 tainting.html
字号:
<html><head><title>Tainting the kernel</title></head><LINK REL="STYLESHEET" HREF="webcam.css" TYPE="text/css"><body><h1>Modutils complains that PWCX is 'tainting' the kernel. What's up?</h1><p>This question has 2 answers: a technical one, and my personal one. I'llgive you the technical one first:</p><p>Since 2.4.something, kernel modules are required to have a license typeencoded in the module, similiar to the kernel version number. This isbecause the Linux kernel is based on the GNU GPL (General Public License),and some kernel developers feel that all modules that are loaded in thekernel should be GPL 'licensed' too, so that's why this check is built intomodutils. However, since PWCX is based on an NDA and closed source, itcannot be released as a GPL module. So I put in another text for the licensetype, and that's why modutils complains.</p><p>Fortunately, this does not affect the working of the module in any way;it is just a reminder that the module you're loading isn't 100% GPL 'pure'. To most people this doesn't matter; as long as it works without much hasslethey don't care. But some people insist on having a 100% pure GPL system,so they are warned, and probably do not wish to use the PWCX module.</p><h2><a name="personal">So what do I think about this?</a></h2><p>Well, I am not too pleased about this. In fact, it worries me a lot.I'll explain.</p><p>As stated above, the Linux kernel is placed under the <ahref="http://www.gnu.org/licenses/licenses.html#GPL">GNU General PublicLicense</a>. In short, it instructs anybody who uses GPL'ed code in theirproject, that he or she should distribute the source code along with thecompiled (binary) form of their programs. In other words: a work derivedfrom a GPL'ed program should be GPL'ed as well, and distributed with the completely source form.</p><p>This concept is at the heart of the Open Source movement, of which theLinux kernel is an outstanding example and this has worked quite well. Butof course there are instances where you cannot, or do not wish to,distribute the source code of your project (patents, licenses, innovativenew design, pure greed, you name it). For <b>programs</b> that run on Linuxthis is not a problem; the boundary between program and kernel is clearlydefined and nobody really cares that program X calls kernel function Y, andthere is no source publicly available for X.</p><p>For <b>modules</b>, like PWC and PWCX, the situation is somewhatdifferent. Because they are loaded into the kernel, they become and integralpart of it; they also have access to all data and functions inside thekernel. This applies to both modules with and without source (thebinary-only module is compiled by a 3rd party from his own private source).In the past this was never a problem; in fact Linus made a specificexcemption for binary-only modules, most likely to please hardware vendorswho were uncomfortable with exposing all their trade-secrets to the world inthe form of human-readable source code.</p><p>But recently, there has been a disturbing change in attitude. To quotefrom <ahref="http://www.uwsg.iu.edu/hypermail/linux/kernel/0110.2/0369.html">thisrather lengthy post</a> on linux-kernel, "Some kernel developers areunhappy [...] to see those interfaces being used by binary onlymodules". In other words: they do not longer wish for binary onlymodules that use their work (e.g. interface) to function inside the Linuxkernel. In their view, everything, and I mean literally everything should beOpen Source.</p><p>To accomplish this, they invented a mechanism by which functions areno longer available UNLESS a module has been specifically compiled in "GPL mode". And here's the catch: a binary-only module couldnever (legally) be compiled in "GPL mode" since the source is notavailable. Thus, sooner or later this module might need a function it maynot use.</p><p>Now Linus Torvalds, in his infinite wisdom, has decreed that only newfunctions may be declared "GPL-only" (and of course only when thedeveloper insists). So all existing binary modules will still work; in themean time 'modutils' will warn you that you are trying to load a non-GPLmodule in your kernel, thereby scaring the wits out of the unsuspectinguser. Of course, it is only a matter of time before either a) a function isadded that is absolutely vital for some (new) binary-only module or b) somefunction disappears, with the same net effect.</p><p>I think the implementation of this mechanism is arrogant,pretentious and downright against the spirit of Open Source. Who do theythink they are? From which planet <i>are</i> these guys?!?!</p><p>First off, even though these developers are the copyright holder of theirwork, I find it rather arrogant to tell who may call your work or not.Calling a function that is readily available to your program (in this case,from the kernel) is different than using the code from that functionyourself. It's like the difference between baking a cake based on a recipefrom a cookbook, or making your own recipe based on it. So in this respect,I think they are overstepping their boundaries.</p><p>Second: do they really think it's going to a make a difference? Arereluctant hardware vendors who might consider, or work on, a binary-onlymodule really going to jump the bandwagon and release the source? Of coursenot. No matter how you look at it, Linux still hasn't got enough weightin the consumer market for vendors to really *need* Linux support in orderto sell. The moment their binary-only modules becomes unworkable due to thisGPL mechanism, they'll drop Linux support like a brick.</p><p>Third, I seriously doubt that this is what Open Source is about. To me,Open Source is a cooperative way of building and enhancing software. I makesome program and publish it; someone else picks it up and fixes bugs,enhances it, sends feedback and basicly pays me respect by using my code,which makes me feel good. But if you are using my code in your own product,I do demand that you publish your source code as well; on the other hand, Ido not place any restrictions on who may use my code for what purpose.</p><p>And this is exactly what these developers are doing. They do not onlydecree how their code should be used, they also want to determine who mayuse it, by effectively blocking those who cannot or do not wish to followtheir view by 100%. The GPL talks about freedom, as in freedom of speech.There is very little freedom in these GPL mechanisms...<p>Now that they see they can't convince the rest of the world of theirGPL point of view, they'll try to force it upon them, even overshootingthemselves in the process. This happened when someone made the comment thatyou could theoretically work around the GPL limitations, and <ahref="http://www.uwsg.iu.edu/hypermail/linux/kernel/0110.2/0705.html">thismail</a> touts this as possibly being an 'illegal circumvention device'under the DCMA (Digital Copyright Millenium Act), the most despised law ofall times by the Open Source community!<p>Sometimes, one can't help wondering if this Open Source puritism isn'tgoing to hurt the movement more than it's going to help. More than once I'vebeen deeply annoyed by, for lack of a better word, Open Source zealots whoinsist that every program should be available as source code; this is simplyunrealistic. Programmers have to eat too. And distributing a programbinary-only is a helluvalot better way to insure income than the source-onlyvariety. Let's face it: it is simply too easy to rip-off by using somebody'ssource code. And although by the letter of the law the GPL does not allowthis, it is in my opinion a very weak license to prevent this.</p><p>The Open Source zealots do not really make themselves anymore credible byacting in this way. In fact, they remind me more of a 5-year old who hasjust been told he cannot have an icecream and goes"Waaaahhhh!!!"... Please, do grow up.</p><hr><p>Distribution of this text is unlimited, provided proper credit isretained. Meaningful comments can be sent to nemosoft at smcc dot demon dotnl and will be read but may go unanswered. Flames, rages and GPLsermons go to /dev/null.</p><p><i>2002-10-07 - Nemosoft Unv.</i></p></body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -