Kernel Modules that Lie About Their Licenses
jon787 writes "An email to LKML about the Linuxant's HSF Modem drivers lying to the kernel about their license has prompted some interesting replies. Lots of talk about how to effectively blacklist these kind of things; a patch is here. One of the more interesting is this one. Linus as always has his $0.02."
Since /0 is the string-termination character, would it be possible to convince a court to see the decloration the way the kernel does, and therefore hold them to the GPL since they're the ones who declared it?
You make it sound like he's just a figurehead now. I would expect him to say something, and I would expect slashdot to not trivialize it.
The site's not loading.
Anyway, I suspect that rather than blacklist bad people, I'd much preferto have the module tags be done as counted strings instead. It should be easy enough to do by just having the macro prepend a sizeof(xxxx)" thing or something.
Great idea, for this hack, anyway. Problem is, they'll come up with something else next time. I think this one really is up to the lawyers, unfortunately.
If the Kernel asks you if you think its gained wait or if its ass looks big in those drivers.
Modules should not lie about their licenses. Fine.
BUT... the linux kernel developers need to get over their fanaticism about open-source drivers. There are many reasons companies cannot or will not make their driver source public. For wireless cards, the FCC effectively prohibits it. For video cards and others, much of the value of the card is in fact in the driver and companies have a right to keep that under wraps.
Part of every attempt to legislate (which the kernel's interrogation of drivers is) should include the question "how will people cheat, and how can we stop this". Otherwise this kind of game is inevitable.
(And if the answer to the question is: "people will cheat and we can't stop them", then there is little point in playing legislator.)
Ceci n'est pas une signature
suspect that rather than blacklist Black people
Careful guys, body text troll.
Interesting story, considering the gray area many consider binary modules to be. Linus has said that he considers binary modules to not be far enough removed from GPL code and thus infringing, but since binary modules have been around since very early on in the kernels development history without any enforcement of the GPL with regards to them, wouldnt that potentially count against the GPL applying to binary modules if someone did decide to take action? Doesnt the whole idea of kernel license strings interfere with this view as well? If modules are infringing if they arent GPL, then why would they need to tell the kernel that they arent under the GPL? Also, where in the Kernel license does it require you to be truthful to the kernel about your modules license? Nowhere, because it cant. The GPL will not allow you to put that limitation on use of the kernel. Again, it comes back to wondering about the legality of binary modules.
Personally, I dont use linux and as such, this doesnt directly affect me. But still, it raises interesting questions about how far removed code has to be to be able to be licensed differently. The kernel module API is a publically available API, and Linus does not consider this to be far enough removed. So what is? Does the kernel have to adhere to the CPUs or Motherboards firmware license, because its using a publically available API just like kernel modules are?
Interesting. Very interesting!
I sure hope they cut it out and stop trying to hack their way around the gpl.
Have you ever been to a turkish prison?
If we wait in this pumpkin patch long enough, the Great Pumpkin will rise up and give out toys. It will then float to the offices of the evil developers and smite them.
The original Linus e-mail was changed in that "helpful" reposting. Words like "Circumsise" and "vomit" were not present in the original (haven't bothered to check for other transgressions).
- To err is human; but to really screw up, you need a computer
I don't believe that. Companies that make hardware shouldn't be so dogged about protecting their software. I buy a router/etc for the hardware, not for the companies excellent firmware. I don't see why companies should protect their firmware at all, if it's open source, more people will buy their hardware.
You'll notice that this AC has put the following words into Linus' mouth:
"...rather than blacklist Black people..." (emphasis added)
Linus was referring to "bad" people. This should be something other than Informative.
All those C string functions are todays source of plague. Even though I'm not Miguel de Icaza it's obvious that we should move to something new.
rotfmao. circumcise, vomit and black, going to +5 informative. Way to troll.
I hate to propose something so drastic; but it's pretty clear that the kernel module loader need to operate the same way that good firewalls work: allow nothing except for that which is explicitly permitted.
Meaning, the kernel devs should focus on writing up a white list; not a black list.
You can run closed source binaries linking closed source shared libraries, but somehow closed source modules are not ok??
Couldn't one
Why did they even bother with this silly (if not cunning) trick in the first place? I mean, OK, no one loves the "kernel tainted" message, but at the end of the day, is it really that much of a deal that it needs to be circumvented?
I think a more appropriate way of handling things would be have a message explaining _why_ the tainted message is coming up, and why they can't GPL the driver. Work with the system, not against it.
-Erwos
Plausible conjecture should not be misrepresented as proof positive.
Excuse my ignorance, but why are they doing this?
/. ?
/.ing is over so I can RTFA and get some facts!
I assume it's to allow them to access some 'GPL only' functionality.
This reminds me of the court case where a console game maker was allowed by the court to insert some copyrighted text because it was the only way to make a game that would work.
Is there any similarity, lawyers of
Now I'm waiting until the
I hope they don't start trying to circumcise anything else.
Could someone explain to me why this is an issue? The web page where you download the drivers reads:
Most files in this package are released under terms described in the LICENSE file. Some distinct components, located in the modules/GPL directory however are covered by the GNU General Public License. See the files LICENSE and modules/GPL/COPYING for details.
It doesn't sound like they're trying to hide anything ("LICENSE" above is linked to their license) yet everyone is running around claiming evil intent. What would they gain by this ruse, if it was intentional? Has anyone contacted the company directly to get their take on it?
On Tue, 27 Apr 2004, Carl-Daniel Hailfinger wrote: > > LinuxAnt offers binary only modules without any sources. To circumvent our > MODULE_LICENSE checks LinuxAnt has inserted a "\0" into their declaration: > > MODULE_LICENSE("GPL\0for files in the \"GPL\" directory; for others, only > LICENSE file applies"); Hey, that is interesting in itself, since playing the above kinds of games makes it pretty clear to everybody that any infringement was done wilfully. They should be talking to their lawyers about things like that. Anyway, I suspect that rather than blacklist bad people, I'd much prefer to have the module tags be done as counted strings instead. It should be easy enough to do by just having the macro prepend a "sizeof(xxxx)" thing or something. Hmm. At least with -sdt=c99 it should be trivial, with something like #define __MODULE_INFO(tag, name, info) \ static struct { int len; const char value[] } \ __module_cat(name,__LINE__) __attribute_used__ \ __attribute__((section(".modinfo"),unused)) = \ { sizeof(__stringify(tag) "=" info), \ __stringify(tag) "=" info } doing the job. That should make it pretty easy to parse the .modinfo section too.
Linus
Has anyone ever gotten the modem in the TiBook to work with that driver? I've struggled with it a number of times (using YDL) and everyone on the lists or IRC just said, "Yeah, didn't work for me, either."
What I'm listening to now on Pandora...
It strikes me that alot of the same people so rabidly against DRM when used by big companies for the media they produce, are now demanding that linux include what can be seen as it's own DRM to prevent people from running unauthorized non-GPL kernel code.
but the default Fedora kernel sure is bloated!
I'm just kidding, I never use default kernels for very long. So for all I know Fedora's is the karen Carpenter of kernels. Its just so much fun to customize.
Well.. maybe. Or Maybe not. But Definitely not sort of.
...lying to the kernel about their license
Insubordination at its worst! Lying to the kernel!
Private Function, get Corporal Punishement on the phone and have them admonished immediatley!
Couldn't one move the code from the driver to user space to an executable or library, then have some hooks in kernel space.
Perhaps someone could write a chain module loader, which is itself GPL'd, but has no restraints of what "chained modules" it loads?
Ok, let me expand on my post then. I dont use Linux. I used to, then I moved to *BSD for reasons i do not want to go into (not ideological tho). I know roughly how the licensing works and have read up on the binary module topic, but since I am not a lawyer, I do not know 100% how the licensing works or would be applied in various cases, and I doubt anyone else can seriously lay this problem to rest, unless it was decided by a court of law. Im not speculating widely, Im asking leading questions, there is a difference. If you wish to attack me further, please feel free, this is a public forum.
On Tue, 27 Apr 2004, Carl-Daniel Hailfinger wrote:
.modinfo section too.
>
> LinuxAnt offers binary only modules without any sources. To circumvent our
> MODULE_LICENSE checks LinuxAnt has inserted a "\0" into their declaration:
>
> MODULE_LICENSE("GPL\0for files in the \"GPL\" directory; for others, only
> LICENSE file applies");
Hey, that is interesting in itself, since playing the above kinds of games
makes it pretty clear to everybody that any infringement was done
wilfully. They should be talking to their lawyers about things like that.
Anyway, I suspect that rather than blacklist bad people, I'd much prefer
to have the module tags be done as counted strings instead. It should be
easy enough to do by just having the macro prepend a "sizeof(xxxx)"
thing or something.
Hmm. At least with -sdt=c99 it should be trivial, with something like
#define __MODULE_INFO(tag, name, info) \
static struct { int len; const char value[] } \
__module_cat(name,__LINE__) __attribute_used__ \
__attribute__((section(".modinfo"),unused)) = \
{ sizeof(__stringify(tag) "=" info), \
__stringify(tag) "=" info }
doing the job.
That should make it pretty easy to parse the
Linus
If /. has no respect for other people's choice in licenses and cheers people ignoring the license, then it must also cheer on people breaking the license in Linux. You can't have it both ways.
As for your assertion, drivers can be non-OSS and still work perfectly, and OEM's aren't forced to make their stuff OSS - just ask NVIDIA if you don't believe me. Therefore, you're posting a strawman there...
The linuxant cheat isn't a problem because of the source code being closed, it is a problem because it pretends to be open-source when it is not, failing to warn whoever installs it.
Quo usque tandem abutere, Nimbus, patientia nostra?
I'm sure this hans't been done before.
In a similar case, the maker of a game console had copyprotection code which had to be invoked before a game played. Someone who wrote a game, but didn't want to pay licensing fees, invoked the same code becuase it was the only way to get their game to run. They were sued under the Lanham Act. The plaintiffs claimed that their display of their trademark could make someone think that the console manufacturer was the source of the game causing consumer confusion.
The court rightly ruled that the console designer caused the code to display the trademark and that they were responsible for any confusion that resulted.
Putting MODULE_LICENSE("GPL\0... in their code could be viewed by the courts as using a method of operation to accomplish a module load. It is very unlikely that they would view it as a grant of a GP License to someone who received the code.
I have discovered a truly marvelous sig, unfortunately the sig limit is too small to contain i
Clearly this is a case of needing to revoke the driver's Major Number.
May we never see th
you're statements are facetious. If your comment isn't modded down as flamebait and/or offtopic, then someone made a mistake.
I am what most people would consider a highly trained technical professional. Unlike most people who spout off at this site, I have the certificates to prove this, and furthermore they're issued by the biggest software company in existence.
yes, because most people consider an MCSE to be better than a PSE or a CCNP. That's the way it is on the street, is it? I'll take a free software zealot over you any day, at least they know what they're talking about, even if their opinions are far left.
~dijjnn
It is a problem with the company lying to the kernel
Yes, but the kernel is not a person, right? In fact lying to hardware/software is a well-accepted practice for interoperability, emulation and fair use. If we want it to be illegal, we might as well defend DMCA.
Original Post:
a ds .php
e only meaning in life is the meaning you create for it.
.modinfo section too.
Someone needs to take a look at the MODULE_LICENSE string reported by
the HSF modem drivers made by LinuxAnt.
http://www.linuxant.com/drivers/hsf/full/downlo
They creatively inserted a \0 character in it.
MODULE_LICENSE("GPL\0for files in the \"GPL\" directory; for others,
only LICENSE file applies");
Runnning modinfo -F license on the compiled driver gives:
GPL because of their creative null character. The actual license for most of
the files is NOT GPL.
--=20
Jon
http://tesla.resnet.mtu.edu
Th
Linus's Reply:
On Tue, 27 Apr 2004, Carl-Daniel Hailfinger wrote:
>
> LinuxAnt offers binary only modules without any sources. To circumvent our
> MODULE_LICENSE checks LinuxAnt has inserted a "\0" into their declaration:
>
> MODULE_LICENSE("GPL\0for files in the \"GPL\" directory; for others, only
> LICENSE file applies");
Hey, that is interesting in itself, since playing the above kinds of games
makes it pretty clear to everybody that any infringement was done
wilfully. They should be talking to their lawyers about things like that.
Anyway, I suspect that rather than blacklist bad people, I'd much prefer
to have the module tags be done as counted strings instead. It should be
easy enough to do by just having the macro prepend a "sizeof(xxxx)"
thing or something.
Hmm. At least with -sdt=c99 it should be trivial, with something like
#define __MODULE_INFO(tag, name, info) \
static struct { int len; const char value[] } \
__module_cat(name,__LINE__) __attribute_used__ \
__attribute__((section(".modinfo"),unused)) = \
{ sizeof(__stringify(tag) "=" info), \
__stringify(tag) "=" info }
doing the job.
That should make it pretty easy to parse the
Linus
Please post other response if you have it. It was unavailable by the time I got to it.
Suppose that Lexmark made a printer that looked for a certain string in a ROM on an ink cartridge. Let's say the string was "The manufacturer of this cartridge agrees to the terms of the ELL (Evil Lexmark License)." If the string is present, the printer works great; if the string is not present, the printer has undesirable behavior of some kind.
Further suppose you want to make an ink cartridge for your Lexmark printer, and thus for the purposes of optimum interoperability, you imbed into the ROM: "The manufacturer of this cartridge agrees to the terms of the ELL (Evil Lexmark License).\0Just kidding. Of course I don't REALLY agree to the Evil Lexmark License, because after all, IT'S EVIL!! It even has \"Evil\" right there in the name, what more proof do you need?!? Sheesh, people!"
Are you bound to the ELL?
As copyright owner of this comment, I authorize everyone to defeat any technological measure which limits access to it.
Linus 2 cents
Just pointing out that the anonymous coward butchered the email a bit, changing several words and so on ...
.modinfo section too.
the actual email is thus:
---------
On Tue, 27 Apr 2004, Carl-Daniel Hailfinger wrote:
>
> LinuxAnt offers binary only modules without any sources. To circumvent our
> MODULE_LICENSE checks LinuxAnt has inserted a "\0" into their declaration:
>
> MODULE_LICENSE("GPL\0for files in the \"GPL\" directory; for others, only
> LICENSE file applies");
Hey, that is interesting in itself, since playing the above kinds of games
makes it pretty clear to everybody that any infringement was done
wilfully. They should be talking to their lawyers about things like that.
Anyway, I suspect that rather than blacklist bad people, I'd much prefer
to have the module tags be done as counted strings instead. It should be
easy enough to do by just having the macro prepend a "sizeof(xxxx)"
thing or something.
Hmm. At least with -sdt=c99 it should be trivial, with something like
#define __MODULE_INFO(tag, name, info) \
static struct { int len; const char value[] } \
__module_cat(name,__LINE__) __attribute_used__ \
__attribute__((section(".modinfo"),unused)) = \
{ sizeof(__stringify(tag) "=" info), \
__stringify(tag) "=" info }
doing the job.
That should make it pretty easy to parse the
Linus
-
(i notice as i press the preview button that the post had already been modded down as a troll, so, well, i guess this message doesn't have any point anymore so i'll post anonymous too)
On Tue, 27 Apr 2004, Carl-Daniel Hailfinger wrote:
.modinfo section too.
>
> LinuxAnt offers binary only modules without any sources. To circumvent our
> MODULE_LICENSE checks LinuxAnt has inserted a "\0" into their declaration:
>
> MODULE_LICENSE("GPL\0for files in the \"GPL\" directory; for others, only
> LICENSE file applies");
Hey, that is interesting in itself, since playing the above kinds of games
makes it pretty clear to everybody that any infringement was done
wilfully. They should be talking to their lawyers about things like that.
Anyway, I suspect that rather than blacklist bad people, I'd much prefer
to have the module tags be done as counted strings instead. It should be
easy enough to do by just having the macro prepend a "sizeof(xxxx)"
thing or something.
Hmm. At least with -sdt=c99 it should be trivial, with something like
#define __MODULE_INFO(tag, name, info) \
static struct { int len; const char value[] } \
__module_cat(name,__LINE__) __attribute_used__ \
__attribute__((section(".modinfo"),unused)) = \
{ sizeof(__stringify(tag) "=" info), \
__stringify(tag) "=" info }
doing the job.
That should make it pretty easy to parse the
Linus
Linus' 2 cents undoubtedly cost the hoster of his message more than that in /.ed bandwidth.
Have you Meta Moderated t
Here's why:
If Office 2003 started asking the Win32 API - areYouReallyMicrosoftWindows(). Then MS Windows would return true...
What would Wine get to return?
Moneyed corporations, non-working 'poor' and criminal prisoners are turning productive citizens into tax-slaves.
Hi,
/* LinuxAnt is known to ship non-GPL modules with license=="GPL"
/* Set up license info based on the info section */
/* Fix up syms, so that st_value is a pointer to location. */
LinuxAnt offers binary only modules without any sources. To circumvent our
MODULE_LICENSE checks LinuxAnt has inserted a "\0" into their declaration:
MODULE_LICENSE("GPL\0for files in the \"GPL\" directory; for others, only
LICENSE file applies");
Since string comparisons stop at the first "\0" character, the kernel is
tricked into thinking the modules are GPL. Btw, the "GPL" directory they
are speaking about is empty.
The attached patch blacklists all modules having "Linuxant" or "Conexant"
in their author string. This may seem a bit broad, but AFAIK both
companies never have released anything under the GPL and have a strong
history of binary-only modules.
Regards,
Carl-Daniel
--
http://www. hailfinger.org/
["module_blacklist.diff" (text/plain)]
--- linux-2.6.5/kernel/module.c~ 2004-04-04 05:37:37.000000000 +0200
+++ linux-2.6.5/kernel/module.c 2004-04-27 01:24:14.000000000 +0200
@@ -34,6 +34,7 @@
#include <linux/vermagic.h>
#include <linux/notifier.h>
#include <linux/stop_machine.h>
+#include <linux/string.h>
#include <asm/uaccess.h>
#include <asm/semaphore.h>
#include <asm/pgalloc.h>
@@ -1112,6 +1113,14 @@
}
}
+static inline int license_author_is_not_blacklisted(const char *author)
+{
+
+ to cheat on our checks. Stop them from doing that. */
+ return !(strstr(author, "Linuxant")
+ || strstr(author, "Conexant"));
+}
+
static inline int license_is_gpl_compatible(const char *license)
{
return (strcmp(license, "GPL") == 0
@@ -1121,12 +1130,16 @@
|| strcmp(license, "Dual MPL/GPL") == 0);
}
-static void set_license(struct module *mod, const char *license)
+static void set_license(struct module *mod, const char *license,
+ const char *author)
{
if (!license)
license = "unspecified";
+ if (!author)
+ author = "unspecified";
- mod->license_gplok = license_is_gpl_compatible(license);
+ mod->license_gplok = license_is_gpl_compatible(license)
+ && license_author_is_not_blacklisted(author);
if (!mod->license_gplok) {
printk(KERN_WARNING "%s: module license '%s' taints kernel.\n",
mod->name, license);
@@ -1466,7 +1479,8 @@
module_unload_init(mod);
- set_license(mod, get_modinfo(sechdrs, infoindex, "license"));
+ set_license(mod, get_modinfo(sechdrs, infoindex, "license"),
+ get_modinfo(sechdrs, infoindex, "author"));
err = simplify_symbols(sechdrs, symindex, strtab, versindex, pcpuindex,
What is the effect of the MODULE_LICENSE checks? In particular, what benefit does LinuxAnt gain from tricking the kernel into thinking its license string is "GPL"?
-Alan
We need some good DMCA-type encryption and copy protection in the kernel. Perhaps Microsoft would volunteer to write that module? To prevent this sort of thing from happening in the future, every user should be get a passport ID to use their drivers. That'll fix it.
One of the issues with closed source kernel modules is that some developers don't want to waste time debugging them. Since they aren't GPL, and there is no source, they feel their time can be better utilized in other places.
One way to note this is have each module announce its license to the kernel, and a method exists for this.
I think the intent is clearly to try and fool people into supporting this module, even if that person wishes to avoid supporting non GPL code.
I think this is very underhanded, and going to create significant ill will with some developers.
Only clueless fanboys would give a damn about under which license their drivers are distributed.
You've obviously never needed to use a driver with the 2.4 kernel that was written for the 2.2 kernel.
LK
"Hi. This is my friend, Jack Shit, and you don't know him." - Lord Kano
Hop on over there if you want the whole thing.
The licensing constraints on modules makes you lie about the license your module is under. Consider this:
I prefer to develop my modules under the revised BSD license, so that others can port them to the BSDs without running into licensing issues. However, Linux will mark the kernel as tainted when a BSD-licensed module is inserted. So I mark them as Dual GPL/BSD, so that they can be loaded without complaints, although I really don't want to release them under GPL, as that would pose a risk that others add code under GPL that could then not be used in the BSDs.
Ok, that may sound confusing as I typed it in a hurry, but you can make sense of it if you try.
Please correct me if I got my facts wrong.
I HATE to say this, and IANAL, but doesn't it protect us in this case? ... ...
Just my 2 cents
The issue here is that the patch provider is lying about the license, and is opening the door for a careless user or distributor ("careless" as in "assumed that everybody abided by their social contracts") to violate the company's IP. It opens the Linux community up to all kinds of legal hassles.
Finding God in a Dog
On Tue, 2004-04-27 13:59:48 +0100, Paulo Marques : :)
wrote in message
> Carl-Daniel Hailfinger wrote:
> >This way, the module format doesn't change, but we can do additional
> >verification in the loader.
>
> The way I see it, they know a C string ends with a '\0'. This is like
> saying that a English sentence ends with a dot. If they wrote "GPL\0" they
> are effectively saying that the license *is* GPL period.
>
> So, where the source code?
That's another (quite amusing:) point of view. Anybody willing to ask a
lawyer?
MfG, JBG
--
Jan-Benedict Glaw jbglaw@lug-owl.de . +49-172-7608481
"Eine Freie Meinung in einem Freien Kopf | Gegen Zensur | Gegen Krieg
fuer einen Freien Staat voll Freier Bürger" | im Internet! | im Irak!
ret = do_actions((curr | FREE_SPEECH) & ~(NEW_COPYRIGHT_LAW | DRM | TCPA));
This has already been discussed in this thread
...but I sit here wondering how many of the people with their panties in a bunch over this (excepting Linus, of course) have a hard drive full of MP3's of dubious origin?
This ain't flamebait, but a rather trenchant commentary on the hypocrisy that I see.
just dropping the GPL fanaticism, quit worrying about what license drivers have, stop with the "kernel tainted" bullshit, and just use the damn drivers? Who give a flying fuck if they're binaries or not? I use the LTMDM driver in FreeBSD and honestly I could give a shit less that it's a binary driver. It works. I also downloaded the binaries to X4.4 when it was first released (HERESY!).
What is the big friggin deal about binaries?
That would be true if such a declaration was required to function.
However it isn't, you can load code with any license you wish, therefore this is not required for interoperability, and such a defense wouldn't be valid.
I noticed the patch adding a static inline function called "license_author_is_not_blacklisted".
Now please excuse me for never having done any kernel hacking before (although I would be interested in trying it some day, as I've been telling myself for years).
But wasn't it considered "a bad thing" (as in: potentially confusing) to use double negatives in one's source code?
Wouldn't it be a lot clearer to name the function "author_is_blacklisted" and having it simply return the result of the string comparison?
"Oooh, does that mean we get to kick some puffy white mad zionist butt?"
And with the DMCA firmly in place, it will be illegal to hack YOUR hardware.
Jeez, I used to think I might be a little paranoid, but not any more...
My beliefs do not require that you agree with them.
From the license:
I mean, even RFC 1149 (TCP/IP over Carrier Pigeon) would be better :-)
This is crippleware.
Since the module reports that it is GPL, why doesn't every one start asking for the source code. Maybe they will be annoyed enough to fix the software (assuming they claim typo or some such) maybe they actually want to GPL the whole thing? :)
To show wilful infringement, you do need to show "intention"; although we interpret the worst that the '\0' was placed in the string specifically to evade kernel tainting, this may not hold up as "on the balance of probabilities" in a court of law without other evidence to show that it wasn't just a mistake or so on.
Anyone who's heard of buffer overflows knows you should NEVER trust the string you're working with, and always check its size. Why on earth is the code written such that a \0 will break it?
Is that string only used internally or can it be listed with a command? Such as
modlicences
or something.
Assume for a second that a command like that existed and it gave a list of modules like this:
forcedeth license: GPL
Linuxant's HSF Modem driver license: GPL
That way it would at least be very obvious and inconvenient to lie in that license string.
The Internet is full. Go Away!!!
Umm. What law got broken here? If my software lies did I break a law? I'm in big trouble, then.
The GPL is a copyright, not a criminal law. It says you have no right to distribute a modified version unless its also GPL. Is LinuxAnt distributing a modified version, or just their own software that they wrote? Or are you claiming that the API to the kernel is proprietary to the kernel [ attention SCO lawyers ].
The only legal issue is that YOU can't distribute the kernel after you have added their software, because the kernel is now tainted. But the tool isn't telling you that, because of the clever hack. [ and yeah, it is kind of clever ]
It's a moot point; a proprietary module that uses GPL symbols is an unauthorized derivative.
If Office 2003 started asking the Win32 API - areYouReallyMicrosoftWindows(). Then MS Windows would return true...
What would Wine get to return?
Wine would get to return true as well, if answering true was essential to get the software to work.
Take the case of the gameboy (I think). One of the checks the thing did when loading a game was to look for the Nintendo logo in the header of the game. If it wasn't there, it wouldn't run it. Someone else put the logo in their games to get it to run, Nintendo sued for trademark infringement. Nintendo lost, because they had made it absolutely necessary to include that logo in order for third parties to achieve interoperability with the product. Instead of preventing third parties from developing games (which was what they wanted), they lost control of their trademark to some degree. Not good.
However, this case is different. You don't need to lie to the kernel about your license to achieve interoperability. It'll load the module regardless of what you put in the license string. The only thing the license string does is to signal to the kernel developers that non-free modules are loaded into the kernel. It's been "tainted", and then they can choose to not support problems with tainted kernels.
This isn't lying to the kernel so much as it is lying to the kernel developers.
- Give a man a fire and he's warm for a day, but set him on fire and he's warm for the rest of his life.
"BUT... the linux kernel developers need to get over their fanaticism about open-source drivers. There are many reasons companies cannot or will not make their driver source public. "
One could turn your argument one eighty, and ask why companies don't drop their fanaticism about closed-source drivers? As far as your "many reasons" that's NOT the kernel guys problem. The companies willfully made those decisions.
"For wireless cards, the FCC effectively prohibits it. For video cards and others, much of the value of the card is in fact in the driver and companies have a right to keep that under wraps."
So they do, and the flip side of a right is a responsability. So why are companies trying to avoid their responsability by lying to the kernel (and hence the user) by playing this kind of trick?
So in conclusion, there's nothing to "get over". You're using Linux, and hence you accept the conditions that it's created under. You want "binary drivers"? Then I recommend you stop using Linux and go find another OS, that doesn't restrict your freedom to do whatever you please. Might I recommend Windows. They'll be more than happy to accept your "pragmatism" when it comes to "their" code.
Ignoring the parent post just because it's trolling is silly -- it offers a good opportunity to clarify the points involved.
Only clueless fanboys would give a damn about under which license their drivers are distributed. As long as they do what they're supposed, so what?
The kernel developers have a tainting system in place because they won't debug kernels that have drivers loaded that are closed-source. It's too hard for them to tell whether that driver might have been responsible, and very difficult for them to fix any problems.
Try seeing how interested Microsoft is with fixing problems in other people's proprietary drivers. It's not all that high.
This is different from something meaningful, like Microsoft's excellent WHLQ certification. I'm surprised that no other vendor, including LinuxOS Inc., has copied the idea of certified drivers yet. Microsoft has taken the initiative to take responsibility, this is something that the GPG/Linux community needs to copy.
WHQL is primarily a mechanism designed to give Microsoft strategic power in the software market. It has little to do with software quality, though it is billed as such (just as DRM is billed as an anti-virus/malware scheme by MS). It is intended to grant them ultimate authority over what software is released for their system -- they have the power to refuse to sign any driver release if they need to do so as a lever, which gives them tremendous power over device manufacturers. This is tremenously more powerful and intrusive than the Linux driver tainting system, which works on an honor system. WHQL ensures only basic functionality is in place -- WHQL testing does not involve audititing code, checking for corner cases, or do any of the things necessary to produce a good, bug-free driver.
May we never see th
Seriously, why do I care about this at all?
I have a kernel. I have a device. With out said driver the kernel is useless to me.
So the driver is closed and propitiatory, as long as it works with my kernel why should I care. ( all religious OSS arguments aside.. I'm taking for a *real* reason )
The alternative seems to be no driver, and the kernel becomes a useless lump of code. We cant demand that companies that produce hardware support anything they don't want too, be happy they at least give us closed drivers... 5 years ago they didnt even do that, unless it was for a Microsoft kernel.
---- Booth was a patriot ----
I know several companies that were scared that the Linux kernel would disallow their non-GPL modules from loading. They discussed all kinds of creative workarounds, such as improper license strings, or a GPL'd stub which loads the full module. But, these were dismissed as silly, inefficient, and anti-GPL.
But, one thing that would work is to modify the core kernel to remove the module license check, or remove warning messages so it didn't matter. The code is GPL'd, which means anyone is free to modify it to suit their needs, as long as they release their mods. So, this would be completely within their rights.
Of course, they are then dealing with their own kernel, which they would need to support. So, I think this takes care of the main gripe from the GPL/kernel people - of not being able to provide support for binary modules.
WINE would have to return true to that call just in case someone uses it for compatibility. Same with this macro. Maybe it isn't used to verify compatbility today, but it might be later. Same with that Windows API call.
And I'm shocked how many people on slashdot reference Sega v. Acclaim without knowing much at all about. It wasn't a logo, it was text. And Sega didn't lose much control of their trademark, it only displayed a single line of text, no logos at all. What it really did was make the game run.
Trademark and copyright are to protect creative work, not functional things like keys. That's what patents are for.
Finally, before Sega v. Acclaim there was the same issue with IBM and their display adapters. To find out if there was an EGA (or VGA?) video card in a PC, you would search the first 16 bytes of the config ROM for 'IBM'. So cloners put IBM in there to make their cards work. This was also determined to be a legal use.
This feels a little like shared source: Ask community members for bug reports but do not allow them to change anything. Use their efforts to improve the value of your product without paying them.
All data is speech. All speech is Free.
IANAL
Please correct me if I got my facts wrong.
1, 2
What can I return to that? Is that different than lying about my license?
"just dropping the GPL fanaticism, quit worrying about what license drivers have, stop with the "kernel tainted" bullshit, and just use the damn drivers? Who give a flying fuck if they're binaries or not?"
Well since you're using a BSD created OS, why are you even concerned about what those "GPL fanatics" do? It doesn't affect you. We've elected to have a free (in the GPL sense, not BSD) OS, and we're sticking to our principles. For pragmatic and ideological reasons.
http://marc.theaimsgroup.com/?l=linux-kernel&m=108 308534628965&w=2
...is probably cursing all his developers that THEY didn't come up with this trick. Or maybe they did, and that's their secret masterplan...
These people wanted $15 for a Linux driver, with no guarantees of free upgrades in the event of a kernel update.
I just went and bought a serial port external modem for $13 (shipped). Works like a charm.
There are a huge number of yeast infections in this county. Probably because we're downriver from the bread factory.
Linuxant responds and explains why they did what they did. It was mostly to supress multiple messages when loading multi module drivers rather than some sort of circumvention.
On the otherhand I think everyone's eyes are open to possible malicious use of this and simular tricks.
“Common sense is not so common.” — Voltaire
Yes, I realize this is a Troll, but I still feel the need to respond with a "real world example" of why driver licensing is an issue.
...and it went on a bit from there, but never really went anywhere. So we had to go with different hardware. This was long before I'd ever heard of the GPL, bu had the drivers been released under that license, we wouldn't have had to depend on the vendor's continued good will to keep the hardware functional. This doesn't matter for the vast majority of people, but the people who care about such things really care about such things.
Back when I was an intern we ran into a bug in the driver for a video card and reported it to the vendor. My supervisor's conversation with the vendor went something like this:
Us: "We need you to fix this bug."
Them: "Sorry, that card is considered obsolete and is no longer supported."
Us: "If you send us the source, we can fix it ourselves."
Them: "Sorry, we don't give out the source to our drivers. Driver source code is copyrighted and a valuable trade secret."
Us: "But you just said the card was obsolete." Them: "The code is still valuable, and we can't give it out." Us: "We're perfectly willing to sign an NDA."
Them: "I'm sorry, we can't give you the source."
By the way, if you're going to cite statistics please indicate the source of your numbers. I give little credence to anyone who rattles off a list of numbers that allegedly came from "SEVERAL INDEPENDENT RESEARCH INSTITUTES." Stats without information on versions, configurations, and testing methods are largely meaningless. Without access to the source studies, your claims are unverifiable and could very well be fictional. Access to the source is very important to many of us.
Off topic slightly. But are there others who have tried the linuxant drivers for centrino on FC1? I tried the demo version of the drivers over the last month, and though its not noticable when downloading data, but when I play streaming media over the net, there are major jerks in the stream. The jerks are not there when I play the same media over a direct ethernet connection. Is this the demo crippleware or is the quality of the driver(wrapper) code really that bad?
A Winmodem with hardware DSP is simply a modem that uses a DSP to transfer data from modemPC instead of a serial port.
The firmware that the DSP executes cannot be free software because the holders of the patents that cover v.92 modulation are not willing to license their implementation in free software. Therefore, winmodems on Linux must use some kernel-space process to at least initialize the modem.
What advantage do they get by lying about the license of their module? Doesn't it just load normally regardless of the license? If it didn't give them some advantage why would they lie about it?
- vphl
You can't "accidentally" GPL code you have the copyright to, because you can't violate your own copyright.
So if I'm the sole copyright holder on software package Foo, and I distribute the binary (sans source) with a file that claims that it's GPL'd, and I subsequently deny any requests for the source, I still can't be forced to provide my code, because I can't violate my own copyright. Similarly, someone who has previously distributed their code under the GPL is well within their rights to relicense said code into Evil Foo License at any time they choose.
I'm pretty confident that Europeans don't mass themselves on balances.
True, most scales are based on a measurement of weight, but electronic spring scales can in theory take the weight of a known mass (the removable top half of the scale's case) in order to measure and store g, and then divide all measured weights by g to compute the mass of an object placed on the scale.
How do you debug a closed source module?
What trying to solve a problem you realize the actual bug is due to this closed module, and you wasted all that time to find out that there is nothing you can do about it.
Better to just focus where your efforts are going to be useful, and eliminate those closed modules before you start.
So they get boycotted and all other driver makers get a message, that the market isn't ready for businesses that step out on a limb and still try to retain some semblance of a business model and proprietary software at the same time. If all driver are expected to be open source, then, it'll be a while before manufacturers start to "catch on" and get the *nix bug. What if the "GPL" string in question actually refers to something else? Now they get the message they are wanted and, other manufacturers get a similar "vibe" due to all this. Make one "perceived" mistake and the whole community boycotts you. That's a great way to compell more businesses to support the platform.
Thanks,
Leabre
EXPORT_SYMBOL_GPL() means: "if you use this symbol, then your driver is inequivocably a derivative work of the kernel".
Why? Because there are some ways of writing device drivers that make the drivers *not* be a derivative work of the kernel. P.ex., the NTFS driver distributed by Microsoft, NTFS.DLL, is not a derivative work of the kernel, but might, by way of (GPL'd) glue code, be load in the addressing space of the kernel and linked to it.
MODULE_LICENSE("Other license") means: "this module is constructed in a way that makes it a non-derivative of the kernel; you can modprobe it, and as it's not derivative, the GPL does not apply to it; don't allow it to see those symbols that would make it derivative";
MODULE_LICENSE("GPL") means: "the license of this module is GPL, please do the linking for me to the symbols that will make me a derivative work of the kernel", while
MODULE_LICENSE("GPL\0but not really") means: "I'm a fucking liar, and I want to roll the dice without paying the price (I want to be a non-GPL-licensed derivative of the kernel)."
Got it?
It's better to be the foot on the boot than the face on the pavement. ~~ tkx Kadin2048
It's unlawful to make a Free driver for some devices. For instance, v.92 modulation used in POTS modems is covered by patents whose holders are not willing to license their implementation in free software. Not all modems store their firmware in a flash chip on the device itself, instead relying on the driver to upload firmware after every cold boot. A Free driver distributed in developed countries would have to restrict itself to 20-year-old modulations, none of which are sufficient to connect to any popular dial-up Internet service provider.
Putting these restrictions in the drivers of each individual OS is not a good plan. The restrictions belong in the firmware.
Then you have to have a user-space program to upload the firmware into the card because proprietary firmware taints a free kernel.
You can contact the following person who is
the Linuxant contact:
Mark Boucher
Phone: 514 281 8286
Email: marc@mbsi.ca , marc@linuxant.com
283 de la Commune Ouest, suite 32
H2Y 2E1, Montreal Quebec, Canada
I seem to remember sopme discussion of using a software modem under Linux to obtain higher transfer speeds than the current standards would allow over a standard telephone connection. Of course this would require that both ends of the connection would be talking the same language (compatible "standards", etc), and this would run afoul of FCC regulations in the United States, but that's only a small part of the world, and this could be usefull in situations where a standard telephone wire is available, but no other conectivity is available at a reasonable price (or at all).
Does anyone else remember this?
Can anyone provide a link or two?
I'd hate to reinvent the wheel on this one, or waste enourmous effort without being familiar with the work of those who have gone before. I've found nothing about this on the Linmodem website, and google has been not much help either.
thanks.
Is lying to the user. Lying that they (users) are not loading a derivative work of the kernel, so that they (users) don't know they are entitled to the rights granted to them by the GPL licensing of the kernel as a whole *and* derivative works.
It's better to be the foot on the boot than the face on the pavement. ~~ tkx Kadin2048
Sure, see if anyone sticks their neck out for you. Consider that money is a good way to keep a company in business that provides an actual service of value. Ungrateful prick.
Fighting the War on the War on Drugs.
http://smokedot.org/
Linus probably does have a HD full of MP3s. Remember, he was the one eho publicly announced that he was running a closed source DVD decoder on his Linux box not so long ago.
:)
Though when he gets a Kernel Panic (That's a linux B(lack)S(creen)O(f)D(eath) FYI) and tries to get tech support from himself and sees the "tainted" dump message he'll have to blow himself off for help though...
Contrary to popular belief, coding is not all free blow-jobs and beer. Those things cost MONEY!
Thanks. My grandparents were argumenting using wrong assertions.
The thing about things we don't know is we often don't know we don't know them.
No. A program can be open-source and proprietary!
The taint is only about the license.
Actually, we also have no desire nor purpose to prevent tainting. The purpose of the workaround is to avoid repetitive warning messages generated when multiple modules belonging to a single logical "driver" are loaded (even when a module is only probed but not used due to the hardware not being present). Although the issue may sound trivial/harmless to people on the lkml, it was a frequent cause of confusion for the average person.
Read the entire email for the whole picture. Whether you agree or not, it is important to understand why they partially circumvented the license check.
Your box will also run faster, as you won't be mimicking hardware functionality in software.
It will also be easier to combine 2 or more modem connections in a low-end box for faster speed.
the GPL is a license, like the license you get with nearly any other piece of software(eg. ms windows). if you distribute something with a GPL license and fail to provide the code, you are violating a contract and may be sued or otherwise litagated into oblivion.
duh.
Nice Troll. Maybe you want to quote your "several independent research institues?" BTW, what the hell is the Linux 7.0 Webserver? or LinuxOS, Inc? and who is Thorwaldes?
Heh. Would you like another nice billy goat up the rear?
~Victor~ Ignorance is excusable. Stupidity is not.
It won't magically refuse to run if your code is under the "wrong" license. It won't call you bad names. All it will do is put a little mark somewhere so that a kernel developer, presented with a dump from this kernel, knows immediately that he doesn't (and can't) have all the sources necessary to hunt down and fix the bug. Otherwise, he could spend hours/days working on it before he relizes this.
Linuxant has added a note about this issue to their site, with a link to their response on the Linux kernel mailing list.
Here is the answer from Linuxant. They claim it wasn't a mistake, just a way to suppress potentially confusing warning messages.
The 'we need source to fix something' is a good argument for individuals not to buy a piece of hardware that doesn't provide specs or driver source. It is not a good arguement for a kernel to demand control of source code for everything it touches. If Linux can require a kernel module to be covered by it's own copyright then SCO's agument that their copyright applies to jfs because it was linked to their kernel is equally correct.
That's why it is important to READ before you ACT (POST, MODERATE).
The GPL is a dscription of terms under which you are granted the right of copying (hence: copyright). It does not (and cannot) compel me to give the source to you in the first place so that you can exercise your right. I can simply claim that the presence of the COPYING file was a mistake corrected in a later release, and nothing more.
You could, perhaps, try to sue me for misleading you (insofar as I led you to believe I would give you the source, when I won't), but you can't sue me for violating my own copyright, and winning said suit would entitle you to damages, not force me to license my code a certain way.
I'm very curious to see if the driver still functions after the the first '\0' in the module string has been changed to 'X'.
If so, then this is franky just obnoxious behavior.
If not, then in fact their non GPL module is using GPL-only kernel internals, meeting at least Linus's definition (I think?) of a derived work, which would constitute actual infringement.
That's a strange perspective. But admittedly, I don't know all the facts around this issue.
From my perspective, it looks like the users are screwed.
This is exactly the type of story that scares me away from GPL software. It is not for users. It is not for developers. It is for lawyers (and even more armchair lawyers).
If the GPL were for users or developers, everyone would be thanking this company for providing drivers that did not exist.
Sounds like somebody who puts MODULE_LICENSE("GPL") into their code has just reliscensed their code under the GPL.
I saw this and decided to look at their license. After reading the entire license, I saw the last line item...
7. Performance. V.92 modems are designed to be capable of receiving data at up to 56Kbps with compatible phone line and server equipment, and transmitting data at up to 31.2Kbps. V.90 modems are designed to be capable of receiving data at up to 56 Kbps from a compatible service provider and transmitting data at up to about 28.8 Kbps. Public networks currently limit download speeds to about 53Kbps. The free version of the drivers is limited to 14.4Kbps. Actual speeds vary and are often less than the maximum possible.
I mean WTF!!! Give us a break. I wouldn't use their crap if I had to spend a zillion dollars on a new modem. I think we need put pressure on all involved (Linus, the disto companies, etc.) to remove this companies crap. It will make the inexperienced user think just what M$ wants them to, that Linux is inferior to WinBlows.
This is a perfect case of inventing a mountain where there isn't even a molehill.
Linuxant makes binary-only drivers. Well, there is disdain for these in the Linux community; fine. I respect that. But for people stuck with unsupported hardware (like me, on occasion) I don't see anyone rushing to my aid from the FSF/Gnu world. Hello, welcome to FS/OS, and goodbye. You're on your own, kid.
Yeah, in theory maybe without binary modules someone might be more motivated to do a whole open source driver from scratch. Except, in real life, where lots of hardware is so complex and software-driven these days that nobody is really suggesting any such thing will ever happen.
You're seeing devices now where proprietary software running the hardware is a significant portion of the total work that went into the product! This is not like supporting a new ethernet chip. Supporting some of these devices, from scracth, with no references, is half a career! For some wireless cards it's even a can of worms with the FCC - you could get into "trouble" for writing an OSS driver. Check out madwifi and their notes on the binary HAL.
So you've got what hardware you've got. The militant FS/OS people just told you to kiss off.
LinuxAnt, on the other hand, is there for you. Their prices are reasonable, their work is good (IMO), they support their customers better than most small software companies (I can say from experience), and they are supporting Linux by helping more people have a positive experience with it.
Some people complained about multiple taint messages, since because of the particular way this driver was organized there might be a lot of them. So they wrote a simple workaround to limit the number of taint messages. Correct me if I'm wrong, but I don't think the (proper) "tainted" status of a kernel using the driver is even eliminated. It's just to stop redundant messages.
People can't seem to be bothered to even read up on this, and are trying to make it out as if they're pretending they're GPL, or they're trying to fool the kernel into not being "tainted." It's got little to do with the facts.
What's wrong with everybody? Yes, I agree if someone was trying to pass closed binary code as GPL, and foist it into the kernel while keeping it untainted that's a support nightmare. But this was no conspiracy. Do we enjoy an imaginary controversy? Is it fun to be persecuted? Can we at least do 60 seconds of homework before writing nasty screeds and "ban linuxant" kernel patches?
Want to Know How to Cheat the GPL? Read On!
None of this is relevant to Linux kernel binary modules, though, because the message always has been the same: derivative works must be GPL; nonderivative works are outside the scope of the kernel developers' copyrights.
Incidentally, I don't recall Eolas ever saying that it would stop with Microsoft--Doyle posed that as a hypothetical scenario. It's irrelevant, of course, since the patent was invalidated.
Your representative in your Congress, or the local equivalent, or the local Dictator, according to the country/state you live in.
More seriously, the USofA ``Congress revised the federal copyright statute in 1976 to provide copyright owners with statutory protection for derivative works. A derivative work can take the form of "any . . . work [that] may be recast, transformed, or adapted. A work consisting of editorial revisions, annotations, elaborations, or other modifications which, as a whole, represents an original work of authorship, is a 'derivative work.'" (emphasis added) 17 U.S.C. 101 (1994).
In short, a derivative work is a whole work based on one or more other whole works. ''
(from here)
There is an equivalent provision in the Brazilian Author's Rights Law (Law 9610/98), roughly translated: section 5, "for the effects of this law, it's considered: [...] VI. work: [...] (g) derivative work: the one which, altough constitutes a new intelectual creation, results of some transformation of the original work".
PS. to the Brazucas here, the laws governing software copyrights are the Software Law (9609/98) and the Author's Rights Law (9610/98). (links to the Ministry of Science and Technology.
It's better to be the foot on the boot than the face on the pavement. ~~ tkx Kadin2048
Don't forget.
It's better to be the foot on the boot than the face on the pavement. ~~ tkx Kadin2048
It's not politics. It's not zealotry. It's simply wanting to avoid wasting your time trying to fix a problem that isn't in code to which you have access.
nt
A lot of the posters here seem to think the GPL-only module string and the "Tainted" message were created to make it harder to allow binary-only or non-GPL drivers.
In fact, the reverse is true. Many device vendors were hesitant to release drivers for Linux because of the binary linkage created when the driver gets loaded. Under a strict interpretation of the GPL, that would consitute enough of a linkage to make the drivers a derivative work.
Some vendors did not want their drivers to automatically fall under the GPL just because of dynamic loading.
The GPL flag was created to let non-GPL drivers clearly indicate that they were not derivatives and would not be GPL-licensed.
This is an example of a vendor that wants to eat its cake and have it too.
"Genius may have its limitations, but stupidity is not thus handicapped." --Elbert Hubbard (1856-1915)
Funny, I have an HP Pavillion that has these modems/soundcards. For the longest time I've used the Linuxant drivers until I switched my kernel to 2.6. Linuxant has been really slow at updating their stuff for 2.6 so I've been without sound (don't really use the modem). This past weekend I bought a generic Alsa compatible soundcard on ebay. Never realized or payed any attention to the fact that my kernel had been tainted all this time....it would have been nice to at least know.
We shouldn't thank LinuxAnt for providing drivers that don't exist if they're being dishonest about it. We don't need a driver for this or that specific piece of hardware so badly that we'd tolerate people being purposefully deceitful in writing it. Heck, if you want your modem to be Windows only, then you don't need to release it under the GPL. On the other hand, you ought to have a registered copy of Visual Studio.NET (at least $1800) and the Windows DDK to legally compile it for the Windows environment. Does it pay?
Right. By choosing those words, they just wanted to express that you cannot debug it. Not to express any political view.
That's complete BS.
So witholding the data from closed drivers is just lessening the experience/reliability/etc of people who use Linux but who aren't Open Source zealots. That's the aim of the driver interface but it's a stupid one, and as I pointed out it's easy enough to circumvent.
If a kernel oops or panic occurs in a driver, it's important for the kernel developers to quickly know if it's a GPL driver (or a 3rd party binary only driver that they shouldn't even waste their time looking at). Too much noise is generated on LKML for broken binary drivers that just can't be fixed or troubleshooted.
Zealotry has it's hand in that Open Source people really only want to fix Open Source drivers.
Your clever circumvention idea is well known, it will not save you in getting kernel developer support, however.
No.
This is more silliness. On both sides. People shouldn't be lying (or stretching the truth) about their license. But the kernel license tag is just as silly.
Let me use another kernel in an attempt to explain why. The FreeBSD kernel is licensed under the BSD license. But the ext2fs code is under the GPL since it directly derived from the GPL code in Linux. Building a FreeBSD kernel with the ext2fs option will "taint" the kernel. While this is generally known and understood, the FreeBSD kernel does not tell the user that they have been tainted. Such a move would be decried by those on the GPL side of the fence as cheap license politicking. But this is what Linux does. I call it cheap license politicking.
Some kernel developers say that this is necessary so that they can debug the kernel. Source code is necessary for debugging. Nonsense! The license tag marks all non-GPL modules as tainted. It is the license that matters, and not the availability of source code. Is a kernel developer going to tell a user "sorry, I can't fix your problem because you're using the X11 license"? That would be truly silly. Should the developer run across a binary-only module that prevents debugging, a simple message to the user saying so will suffice.
The license tag is also used to limit access to certain private kernel routines. In essence, it makes private kernel APIs public, but only for GPL modules. It's tying the license to the API, which is quite strange (and silly). Use license A and you get one API. Use license B instead and you get another. Huh? Either the API is public or it is not. This "members only" crap has to go. It's license politicking of the lowest sort.
Don't blame me, I didn't vote for either of them!
The module interface is designed and allowed to be used by non GPLd code, but you cant just include header files willy nilly without fear of becoming infected with the GPL ... there are inline functions and macros which are clearly code, and even the status of header files without executable code isnt entirely clear.
... because it is painfull, the code becomes extremely brittle, it is not useless though. It provides impetus for people who want to much around with internals to that extent to write open source modules. Which is best for users and kernel develers.
The interfaces arent copyrighted, but the same can not be said about the header files. If you arent GPL you have a lot of wrapping and/or reverse engineering to do. That is just the problem of wanting to develop for a Free OS.
The answer is obvious, and painfull
I've been using a few different versions of this driver for awhile, and I have to say I disapprove of this because it circumvents a process that was put in to avoid a wild goose chase (not worrying about a kernel problem when a binary driver has been loaded.)
You see, these drivers are almost worthless. They make the kernel unstable when loaded. They create an OOM error with pci hotplugging. I've had to reboot 5+ times in one day.
The only way I was able to track it to the drivers was by blacklisting the mods with hotplug and reading log messages.
Now, they may or may not crash on all systems, but I personally was close to filing bug reports complete with dumps. If it's true that this change doesn't show up in the dumps, the kernel developers would be busy tracking down bugs that weren't a result of their code.
How much time do you think would have been wasted on these reports (assuming that I am not alone in having kernel panics from these drivers?)
As for the whole "the tainted messages were confusing the customer" schtick: There are about 6 different modules that get loaded, so there would be 6 different tainted messages (which can be spooky...) but I can't even remember the last time I saw a "tainted kernel" message. Nowadays, most modules are being loaded in the background with any messages going to a log somewhere on the system. Besides, a one line explanation would be enough to not bother the user ("It's for kernel developers. You don't need to worry about it." or "It's to help people fix your computer if something goes horribly wrong."
Given what's come out about the abusive terms in M$ contracts, I've always assumed that M$ was using this clout to pressure h/w manufacturers from providing drivers for Linux. This would explain the lack of Linux drivers (though that seems to be changing; perhaps the manufacturers feel that M$ is less likely to strong-arm them after the publicity around these tactics).
and the world hasn't ended.
First, instead of assuming something (like that lying was necessary to make the module load, like so many fools here) you ask politely. Then, rather than wait for the answer to be spoon fed to you, you look it up yourself and post the results. Very commendable, but I have to ask... are you sure you're at the right website?
The enemies of Democracy are
FWIW IMHO the string ends at the \0 I don't care what garbage in memory exists after this, this is not a subtle issue or grey area, \0 ends the string, subsequent information is irrelevant.
But back to my subject, blacklisting is a bit heavy handed. Hmm... we have a company that provides drivers for Linux, yup they're proprietary winmodem drivers but they're there. To *suppress warnings* they have unfortunately chosen to prematurely end their string with a \0, that's really nasty and foolish but blacklisting them as a company from installing kernel modules is way frikin OTT.
How does this help joe public get his winmodem working?
How does this encourage any corporation from releasing proprietary drivers for in Linux? (Which are better than no drivers IMHO)
There are other drivers (particularly audio and graphics) that use proprietary code implemented by private companies and these are used every day by many thousands of Linux users.
Look at Cisco. They sell millions of routers, and the IOS software is readily available. Are there any manufacturers making illegal copies of the hardware so that customers can use real IOS in non-Cisco hardware ?
It's the hardware that customers buy.
I am what most people would consider a highly trained technical professional.
Most people can't differentiate between a computer and a monitor.
Most people can't differentiate between a script kiddi3 and a MCSE. Oh wait...
They compared Microsofts IIS to the Linux 7.0 webserver. For Windows, the cost was only:
$40.25 per megabit of throughput per second.
$1.79 per peak request per second.
Oh yeah, the great comparison between cheap server boxes on independant network pipes with Windows against Linux on expensive Big Iron from IBM with a single network pipe.
A full Windows installation, compared to
installing Linux, on an Enterprise Server boxen:
Is nearly three hours faster.
Requires 77% fewer steps.
Oh, did they count the hour or two for the service pack, 8 to 20 patches, and the time to install IIS, DHCP, DNS, and others?
Windows takes fewer steps to set up a stupid (as in simple) file sharing server or IIS server, because that's about all that it can do. The defaults you didn't get to configure are broken and insecure. Oops!
Lets see, the top paragraph is true (if misspelled) and the bottom part is a joke. So maybe a "Funny/Interesting" would be more appropriate than "Flamebait" which really doesn't apply to any part of it.
But keep modding, you'll get the hang of it one day.
... (1) a closed source driver in flash accessed by open source code (eg your scsi card, or system bios), and (2) a closed source driver in a .so file accessed by an open source code (eg what NVidia and win/lin modems do)?
What if NVidia stuck an extra flash chip on their card, loaded the common part of the driver into there at manufacturing time, or via a flash update and had the 'open sourced' part of the driver access it? This would be no more or less GPL compliant than any 'normal' driver, as linux does this with the BIOS, and with ide and scsi cards all the time, by calling proprietry code via an open sourced interface.
It seems to me that the GPL is differentiating between the delivery method, which is just silly (imho). Until everything on a computer is free (as in speech) then compromises are going to have to be made.
If this sounds like a troll then sorry, but i don't mean for it to be.
but it seems to me like sometime last summer the whole Conexant project went from a free open-source program to a rather closed-source, non-free program.
Did the Conexant project's license allow forking? If so, why hasn't anybody tossed the old Free version of the drivers up on SourceForge.net?
... YOUR MONEY
Doing these things honestly and functionally isn't all that difficult.
For instance, my company makes a sweet little device that, among other things, has a bunch of FPGAs (Field Programmable Gate Arrays). There is some language (I have never seen) that creates, via a source file (I will never possess) and a compiler (we license for a nut), to create a byte-stream (I have sitting around in a file) that gives the FPGAs their personality.
When my boss came in and started whining about the GPL I pointed out that the three modules were GPL-able and that distributing them under the GPL was about as "wanton with our intellectual property" as sunday school.
The drivers are just not that interesting. From one (the one that loads the FPGA images) you could learn how to copy a byte string into a single register. e.g. "for (int counter = 0; counter image_size; ++counter) { *FPGA_Personality_Register = image_buffer[counter]; }"
Oh yea, there is a lot of boiler-plate around this, and I actually do that inside a fpgaflash_write() etc. But this is *not* rocket science.
In point of fact, virtually all of the "Intellectual Property Issues" people have with respect to software are, frankly, crap.
A bunch of people doing a lot of truely marginal work have created a mythology of value. Somehow the way _*THEY*_ increment an integer is so much more fascinating than the way the rest of us do it. "But Boss," they say, "if everybody out there figures out that we put *our* serial uart at 0x2df instead of 0x2f0 then nobody will need us any more."
Bull.
If you provide a good product at a reasonable rate then people will pay you for it.
Every year I spend $20 to $50 to pay my taxes with one or another tax prepration software product. I do this *despite* the fact that all the forms and things are there and (obfuscated 8-) open source. (And I actually buy the software instead of pirate it, since to steal software when that is how I make my living would be hypocritical.)
The only people who have to worry about Open Source are the people who make crappy software.
Trust me, nobody wants your job. Nobody wants sneak in and rewrite comercial drivers *IF* *THEY* *WORK*. Nobody cares about your "proprietary register mapping" *IF* *IT* *WORKS*. The people who are going to make a nockoff of your board are just going to trace out your hardware if they want to clone it, and its is going to take them how long to disassemble your Windows driver to make their compatable device?
Gee, if they want to compete, they could just make their clone to one of the already-existing drivers they have source too anyway.
There is *NOTHING* *OF* *VALUE* in your drivers. Really. Get over yourselves and start harvesting all that free money by making a product and having the OS community improve your products' drivers for free.
It boggles the mind that people like nVidia and ATI want to keep their drivers closed when their real value is in the chipsets themselves. Everybody knows how Direct-X and OpenGL is going to present the data at that level. Why do they even *care* if someone knows that the data buffers are reformatted and their addresses are crammed into a doorbell register at a particular address. Do they think we can't possibly fathom the concept of laying out data and putting addresses into doorbell registers? Do they expect us to be supprised when it turns out that the eight hardware rendering pipelines they brag about on the box are backed up by eight separate linked lists (or whatever) in the driver?
And you just know that on the flip side, there is someone at each of these companies trying to outsource the driver development even as the first team of idiots are jealously garding their source code.
Back to the example, all the "value" in our product is in the complex and subtle control of state *below* the driver in the hardware, and in the complex and robust interractions of the applications and protocols
Innocent people shouldn't be forced to pay for inferior software development.
--"Code Complete" Microsoft Press
yes, the manufacturer has no right to prevent you using their hardware in any way you choose. you can use your nvidia geforce card as a paperclip, or a model airplane. they dont give a shit. what they do give a shit about, is making money. after all, that is why they are a company, yes? to make money. if they tell everyone in the world 'this is how we make our latest $799 geforce ultra fx whoopee card which is currently the best in the world' then 2 days later, some guy in taiwan is building his own geforce ultra fx whoopee cards for $10 each.
of course, nvidia still spent $10billion doing research and development to come up with the geforce ultra fx whooppee card, but, hey... YOU HAVE THE RIGHT TO KNOW HOW IT WORKS, RIGHT?
now, lets change nvidia to 'acme nuclear rockets inc - supplier to the us defence force' OH LOOK... BECAUSE AJS318 HAS CHANGED THE LAW TO COMPEL HARDWARE MANUFACTURERS TO RELEASE DETAILS TO WRITE HOME DRIVERS, THERE ARE NOW 13 YEAR OLD KIDS, AND TERRORISTS, AND 13 YEAR OLD WANNABE TERRORISTS ALL BUILDING NUKES IN THIER BACK YARDS
dont be a fucktard. yes, open source is cool and stuff, but when you take it to the extreme like how you did, you just make the open source community ashamed to be associated by, and represented by dumbfucks like yourself
yes, you are the consumer, and you pay their wages. however, you buy what they sell. they sell hardware with closed source drivers. you have the right to not buy their products if you so choose. forcing them to reveal the trade secrets that they spent billions of dollars and thousands of hours developing, is just stupid. it wont solve anything. it will just make all the companies that have worked hard to bring you working hardware and working closed-source drivers say 'fuck this, we can't survive with this bullshit legislation' and close down.
of course, since you have all their trade secrets, you can build your own hardware!!! and even improve on their stuff!!! of course you wont make any money out of it, because no-ones gonna buy it, cos everyone who would have, can now build their own stuff themselves.
anyways, yeah. i'm glad you want the entire world to be open source and open-spec'd. its not. it will never be. deal with it, because if you dont, you'll continue to make an utter moron of yourself
This is a tired old argument and is inconsistent with observed facts. The laws of physics are essentially Open Source, so if it is not physically impossible for someone to build a weapon, we must assume they can -- it is possible that they might find out how to do it independently of anyone else's knowledge or attempt to keep it secret.
Although anybody could build a weapon of mass destruction from first principles, most of the ordnance used by third-world troublemakers is of first-world origin. So the obvious way to prevent this is for 'acme nuclear rockets inc - supplier to the us defence force' just not to make the nuclear rockets in the first place. If the terrorists haven't bothered making their own weapons from scratch up to now, why should they suddenly start? Maybe if the Western world weren't so paranoid that everyone else is out to get them, other nations would not feel so threatened, and would not be spending money that should be going on education and healthcare on weapons.
And your assertion that companies would not make money if they could not keep secrets is laughable. The world is not run just so that companies can make money. Maybe a few companies going out of business would be no bad thing, after all, how are the poor going to get richer unless the rich get poorer?
The truth is most people are just too lazy to build their own hardware, even if they had the knowledge and equipment. Or they don't have access to the kit they need, even if they have the plans and the motivation. Or their skills lie in other areas, even if they could afford the equipment. Those conditions are the makings of a market. With Mandatory Full Declaration, there would still be an opportunity to hold information to ransom -- but the level of that ransom would be determined by the cost of independently discovering the same information, and not set by the company with the information.
By your logic there would be no market for ready-made sandwiches. After all, sandwiches are an enforced open source product -- the packet must legally say what the contents are, and you can buy a range of bread, spreads, meat, pate, salads and so forth at any supermarket. It isn't even hard to make a sandwich -- the only tool you need is a knife. But sometimes people haven't the inclination or the time to make their own sandwiches, and are prepared to pay money for the convenience of having one ready-made.
I could hardly disagree with you more. I for one actively avoid closed source products as far as practicable, I make no secret of my antipathy towards the very concept, and encourage as many people as possible to follow suit. And the tide is turning, slowly but surely. Open source alternatives to proprietary solutions are emerging. I don't think a technology can be said truly to have been invented until it becomes open source. The open source movement is apparently playing catch-up, for sure, but it's not aiming simply to catch up with the closed-source world, but to push the very boundaries of possibility. And our motivation is purer: we aim for true perfection, not simply to be just enough better than the current state of the art so we can still make a profit. The whole closed-source model of security through obscurity is a house of cards. One flash of genius outside that system is all it's going to take; some bright kid gives away an idea, or some old hippy wins the lottery and invests in an idea, and suddenly there are a dozen or more Oriental, Eastern European and Latin American outfits supplying fully-open specced kit better
Je fume. Tu fumes. Nous fûmes!
IANAL, etc.
If I understand the GPL correctly, it doesn't say anywhere "I will give you the source", only "you must give the next guy the source". So, if I give you a binary, and say you have a license under the GPL, all it means is that if you give a copy to your friend, you must give your friend the source. Don't have the source? Too bad, I guess you can't give your friend a copy then.