IP Theft in the Linux Kernel
"They just took my code and filed off the copyright" said Søren. "This is clearest with the two header files hptraid.h and pdcraid.h. Compare these with FreeBSD's ata-raid.h, and just look at the similarities." And it's true that these two header files certainly look like a chopped up copy of the FreeBSD header, after a quick search-and-replace. "The reading of the RAID config from the disks is their own code, but is clearly "inspired" from our code," said Søren, "but that's encouraged by the license. It's the verbatim use of the other code without retaining the copyright that's the problem."
ata-raid.h, and the other files, are copyright Søren, and released under the three clause BSD license, which includes the restriction "Redistributions of source code must retain the above copyright notice". So using these files, or significant portions of them, in your own code, without retaining the copyright information, as has happened here, is prohibited.
You may be thinking "This is only a couple of header files, what's the big deal?". As Søren says "The problem here is that the structures in the headers is the whole story. That info tells how you read the proprietary struct off the disks, and was reverse engineered and documented by me after a lot of effort." Søren's intellectual property is tied up in those files.
Right now, Søren is in discussions with the authors of the Linux ATA drivers (employed by RedHat) to ensure that his copyright notice is returned to these and other files, and to ensure that this situation does not recur. And it is hoped that an amicable solution can be reached.
And yet, if it had been incorporated into WinXP, nobody would ever have been the wiser. Who would this guy be whining to then?
Seriously, though, if someone used the code, it must be used under the correct license. Same as if someone uses the linux kernel. They gotta use the GPL.
Again, copyright (and licensing) is a double-edged sword.
Jesus was all right but his disciples were thick and ordinary. -John Lennon
-Legion
Granted, I think most of us expect code to be stolen from GPL products and stuck into proprietary products. It struck me as odd that BSD code would actually be put into a GPL program improperly, considering the only requirement to my knowledge is the copyright notice they discussed.
It was mentioned that the authors of the Linux kernel code worked for Red Hat. We can't be certain but I speculate that they didn't want to appear "lazy" by "stealing" anyone elses code, regardless that it was completely free. Perhaps it was just an oversight. I hope we see an update in a slashback in the future.
"The universe seems neither benign nor hostile, merely indifferent." --Carl Sagan
Even though the license was violated by other free software developers, I'm glad to see him pursuing this. If we ever want to see the various free software licenses accepted by the general community, we need to show them that we take them seriously, even if that means going after some of our own.
Of course, I wouldn't propose that we allow violations of open source liscenses to continue unchecked, just that the opportunity for good faith resolutions be allowed before crying "Boycott!".
Developers give all kinds of reasons for developing free software -- noble spirit, peer respect, etc. -- but one of the big ones is all the shit you don't have to deal with.
... but the odds are with it.
... easy. Yay!
Case in point: there is every reason to think that this author's name will be included with his code in the next release of the Linux kernel source. Think how vastly different this situation would be if this were about theft of proprietary code. Here, nobody's company is at stake, and nobody stands to lose by doing the right thing -- so there are no stupid lawsuits and no hard feelings. At least, I hope it plays out this way
Forget all this paranoia about the venemous GPL. Proprietary code has a really, really high cost of ownership; at a certain point, it's just not worth it. Free is just so
Bravo to Soren: he wants credit for the hard work he did. I 100% agree that it should have been done and is deplorable that it wasn't.
I would like to point out though that there is a strong argument that it was precisely that hard work rather than intellectual property that was stolen. Bear with me, and no knee-jerk mods please:
(1) A structure is just that: a structure. If there is intellectual property there it is in the original designer of the structure.
If this was a structure in nature (such as the human genome or what have you) then there are plenty of people who disagree with it being anyone's IP at all. Unfortunately, in the wisdom of capitalist democracy some people think that they *own* all of our tomatoes.
But this isn't nature, and someone did plan and write these structures and deserves credit. And Soren deserves plenty too for figuring it out and giving it to the world.
(2) You could say that his comments are IP, and that's a pretty strong argument. So perhaps there is more than just good old hard work here. However, it's possible these are just titles of the data structure elements, and titles aren't exactly covered by the same IP standards as other IP.
Oh well. I don't want to take away from the important work, and certainly nothing from Soren's credit. Just some food for thought.
IP is important. Copyright is important. Licensing is important. Unfortuantely defenders of all these things are often cast in a bad light because of a perceived association with other groups who misuse these tools.
Just my 2c
RFC2119
Yeah, I hate it when I accidentally search and replace a bunch of variable names in a block of code and then forget to leave out the BSD license notice.
No, not really. At the end of my post is the BSD license template from opensource.org. Basically, you can use the code in any program you like, under any license you like, just so long as you and anyone who distributes the code includes a simple copyright statement. Some MS tools have been known to include this (especially from Windows NT), and I'm sure some other /.ers can point you to strange places that BSD copyright statements come up.
Since the license is so short, might as well include it right here for people too lazy to click:
Here is the license template:
Copyright (c) ,
All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
Neither the name of the nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
"The universe seems neither benign nor hostile, merely indifferent." --Carl Sagan
Why was this guy looking into the Linux source code in the first place? Was he, say, stealing ideas?
Stop the flames. Of course he wasn't. What got lost in this story is one of the best aspects of open source programs: complete transparency. Microsoft may be using pieces of the Linux kernel inside its own programs and we'll never know. Ever.
If it was really a copy (we're talking about device drivers and it's very difficult to create original software to describe the same struct) then notice will be given that it was his software.
And another good aspect: this guys is a programmer that has created open source device drivers for FreeBSD. And he was looking into the Linux kernel sources. Probably looking for his own code (which would make him proud) or looking for the chance to help out fellow programmers or just to compare solutions and learn with it.
I'm sorry it happened but we should focus on what's good about this story:
Truth shall set you free.
Here is the location at RedHat where you can get the code and patch. Link found on The Linux IDE Project Site
I want to delete my account but Slashdot doesn't allow it.
I write and run the Idocs Guide to HTML which contains a lot of JavaScript. I give away the JavaScripts for free, asking only that the copyright notice be kept in place. The copyright notices are in the JavaScript comments, so there's no effect on the user-interface. Nevertheless, I have seen many places where my scripts are used but the copyright gone.
One person even asked for help on using a script while blatantly refering me to a page where the copyright was gone. Sheesh.
Miko O'Sullivan
Okay, so Søren reverse engineers the proprietary data structures developed at great cost by corporations, and then bitches when his work is ripped off by one of his fellow Open Source travelers. Give me a break!
First, what Soren did was not plagiarism (claiming another's work as his own) nor theft (stealing another's property). He just made a part that works as a replacement for a factory part, much like the thriving parts industry in the auto world.
What Red Hat's developers did wasn't "theft", since they were not required to have permission to use or modify and re-release the code. It was plagiarism -- essentially they took some of Soren's parts (which were free for the taking), filed off the serial numbers, then stamped their own on.
It's not illegal to sell someone else's parts if you acquired them legally, but it is illegal to claim them as your own make without permission, regardless of how they were acquired.
The only place Soren might have problems is if the driver algorithms were patented, and even there drivers exist in a world of murky law apart from applications. I seem to remember some abortive efforts by sound and video card manufacturers to squash third-party open-source drivers that got such negative press reaction that they were abandoned.
-- Old Man Kensey
I just said that we don't know the full story.
Any number of things could have happened that led the developer to ultimately violate the BSD license without being aware of it.
Ruling out the possibility is completely naive. Somehow I don't think stealing BSD code to include into Linux is all that foolproof of a devious plan -- leading me to believe that it's much more likely an accident. What possible motive could he have had?
Do you really think the developer said to himself "It is clearly worth risking my reputation by violating the easy-to-comply-with BSD license for my own personal gain of giving code away for free!"?
So yes, 10:1 that this was an accident. I'm not ruling out the possibility of malice, just that it's a lot less plausible.
Suppose Bob writes an open source program. Then along comes John and examines Bob's program, and learns crucial things from it. Such as how the frobulator encoder works. John then writes his own program which has a frobulator encoder, whose concepts are influenced heavily from what he learned by studying Bob's work.
At what point is John stealing Bob's work?
This is a loaded question. (Just like: When does life begin, at conception or birth, or where inbetween.) Except our question here isn't quite as emotionally charged. (Well, maybe it is for us.)
Back in 1979, I would help other students with their programs. Sometimes after making sure they understood the algorithm, and were writing the code, we would end up with what basically amounts to my design. Should I just make sure that I use different variable names? Should I introduce frivolous structural changes to the program so the instructor doesn't think someone is cheating? (Of course, I became so notorious with my instructors that this problem never came up -- they knew me well enough.) And the other student did end up actually accomplishing the learning.
Returning to my above example. Should John make sure to rename the members of the structure? Alter it stylistically? After all, Bob did the hard gruntwork. In some sense Bob should get credit. What if Bob doesn't want to license or give any permission? Can Bob withhold the know how of how the frobulator encoder works -- especially if it is embedded within open source?
Cearly, the ideal thing would be for John to contact Bob. But this takes time and effort. If John had simply renamed identifiers and altered the style, would an issue ever be raised on Slashdot in the future? (Even if Bob someday examined John's code and noticed the similarity, of concepts, if not actual cut&paste lines?)
And as I first stated, I haven't examined the sources, and this may be a very clear case of cut&past without any credit given. These questions are intended to be hypothetical. Any resemblance to actual persons or events is purely cooincidental and unintentional.
Those who would give up liberty in exchange for security and DRM should switch to Microsoft Palladium!
Au contraire. Compare the following two snippets of code, taken arbitrarily from one of the other raid header files in the kernel:
struct m {
int a;
int b;
kdev_t c;
int d;
* State bits:
*/
int e;
int f;
int g;
int h;
};
And:
struct mirror_info {
int number;
int raid_disk;
kdev_t dev;
int head_position;
* State bits:
*/
int operational;
int write_only;
int spare;
int used_slot;
};
Those are the same exact structure, no? Exact same data types and everything. I even left in the comments. Now, which of those would you rather have to program with? A structure is *not* just a structure; different source codes for the same structure can be of radically different usefulness. There's definitely intellectual property there.
http://uwsg.iu.edu/hypermail/linux/kernel/0012.3/0 538.html
> I've read everything that I can find regarding support of the Highpoint
> controllers RAID functionality under Linux, and I understand what the issues
> have been. The one promising bit of information that I dug up in this process is
> that the 'pseudo' RAID functionality of the Highpoint and Promise IDE RAID
> controllers is now supported in FreeBSD (4.2-RELEASE and 5.0-CURRENT). My
> question is, can the new BSD code be leveraged to add support for these
> controllers to the Linux kernel, and could we reasonably expect to see such
> support in the near future?
>
> (I think that most all of the relevant/important bits are in ata-raid.c and/or
> ata-raid.h. In
> any event, the IDE/ATA guy over on the FreeBSD side is Soren Schmidt
> (sos@freebsd.org), and he
> wrote all of the stuff for this.
While it is no excuse for omitting the license/copyright text on the headerfile. However this issue has already been resolved within minutes after Søren notified me of the omission, to the satisfaction of Søren. Unfortionatly, Slasdhot only reports the first half of this, even though the second half of the story has been available for some time. In no way was or is it my intent to not give credit where credit is due.
Søren is from Denmark (so am I) and we have these three funny looking charactes:
æ ø å
"æ" is like the "ea" in "dead"
"å" is close to the "o" in "holy",
but the "ø" is a bit tricky to pronounce. It's kinda like the "ou" in "mourn", but with more bass.
So Sørens name is pronounced:
S + mourn + honest + n
= Søren! On top of that there is an expression in Danish, which goes "av for Søren", which means "auch for Søren" and you say that when you hurt. And there's another one "Det var Sørens!" which means "I'll be damned!".
It's a common name.... and I need to get a life.
-Kraft
Live and let live
It seems likely to be that header file structure definitions are a functional description of how a piece of hardware works. And if that's the case, that information is no more copyrightable than the telephone book. And if it's not copyrightable, it's perfectly legal to remove the credits and license and redistribute however you want. Not right, mind you, but legal.
Looks to me like he's screaming about copyright infringement and/or license violations without understanding the limited scope of copyright.
314-15-9265
After a few grim moments of comtemplating actually buying and installing Visual C++, it occured to me that these things are probably defined somewhere in the mingw stuff. Sure enough, I found them all in various headers within the mingw package. I copied all these (and a bunch of other little win32 kludges) into a win32stuff.h file that I started including in the various .cpp files.
So did I cross the line? I copied a few dozen lines from various header files in the mingw package (I didn't mention in the file that I got them from the mingw project, but I probably should before I release the port to anyone). Did the the mingw guys copy this stuff from somewhere in all the stuff included by #include <windows.h> ??
Ok, I'll admit that a bit struct that represents the on-disk format of something that was reverse engineered is a bit more substantial than a bunch of constants... but calling it "IP Theft" seems to be leaping to some strong conclusions. Even if both programmers did their reverse engineering independently, aside from using different names, there's not a lot of different ways the struct could look. Even if the linux developer did look at the BSD header file to learn the data formats, how different could one expect his code to possibly be ?? If it's an algorithm with some creative implementation, I can see the accusation, but over a header file that simply documents simple facts seems a bit much. Sure, it can be hard work to get those facts by reverse engineering, but still, the "IP Theft" is simple facts (not really protected by copyright, in my limited understanding of copyright law... IANAL).
And finally, if Søren really does hope "an amicable solution can be reached", why's he turning this into a bunch of bad PR for linux and redhat ?? It's sounds to me like a case of getting mad and posting flames instead of cooling off for a day and thinking it through more carefully.
As far as my porting work for Nullsoft's really cool (SuperPiMP) installer, I hit a big block of very win32 specific code, CEXEBuild::do_add_file at the end of script.cpp. Unlike many of the other bits that I ifdef'd out, this is the one that actually puts the files into the install image, so I can't just chop it off. I will need to completely rewrite this using unix/posix APIs, probably using C library regex patterns instead of whatever wildcard matching win32's FindFirstFile does. I'll probably get back to porting NSIS in a week or two... I might even try rebooting and running it in windows a few times! And, I'm not going to lose any sleep over copying a few dozen constants out of someone else's header files.
PJRC: Electronic Projects, 8051 Microcontroller Tools
Just post anything at all about the situation as an AC and get modded really high.
Where are the backups to your statements?
This reminds me of when there was the large Exodus outage, and in the explanaion story an AC claimed to be some chick who was abuse my Taco (funny since Taco is in Michigan, Exodus cage is very not in Michigan, etc).
Moderators: don't mod up stuff unless there is PROOF or this person has put a real name behind their statements. Posts like this are just trolls meant no spread disinformation.
--
Internet Explorer (n): Another bug -- that is, a feature that can't be turned off -- in Windows.
He probably just hit M-x accidentally-remove-copyright-header in emacs.
Happens to me all the time. Or was it diff --remove-copyright-header.
Check out the very first revisions of the Linux compatibility module in FreeBSD. It looks quite a lot like the NetBSD Linux compatibility module of the same vintage, which was written by Frank van der Linden and committed to the NetBSD source tree (which was the first public release of that code) -- yet all the files say Soren Schmidt at the top.. Amazing!
-- Jason R. Thorpe, NetBSD and FreSSH developer
The Linux-IDE site has already been mentioned, but I thought it interesting to point out a particular part of it that hasn't been mentioned. This also follows up some of the "don't download 2.4.10 until proper credit is given" whiners.
;)
check out patch-to-2.4.10
Try these few lines:
+++ linux2410/drivers/ide/hptraid.h Mon Sep 24 10:35:39 2001
@@ -1,4 +1,32 @@
-
+/*-
+ * Copyright (c) 2000,2001 Søren Schmidt
+ * All rights reserved.
...and also...
+++ linux2410/drivers/ide/pdcraid.c Mon Sep 24 10:37:13 2001
@@ -12,9 +12,7 @@
Authors: Arjan van de Ven
-
-
-
+ Based on work done by Søren Schmidt for FreeBSD
That's good enough for me, plus, the timestamp on the patch file is Sept 24.
Does anyone read patch files anymore?
TiFox
-- I'd say your post was about 3 monkeys, 18 minutes.