SCO Complaint Filed -- Including Code Samples
btempleton writes "The folks at Groklaw have posted a story including a preliminary copy of Caldera/SCO's amended complaint, including lines of code they allege were improperly included in Linux. The PDF can be found at this story The file lists unix filenames with line numbers and filenames and line numbers from the Linux 2.2 and 2.4 kernels, so folks can now go into real depth."
Looks like they're pointing out the JFS, EVMA and RCU stuff which everyone knows IBM contributed and probably did modify from IBM's/Dynix's own code. The dispute is about whether SCO has any rights to that code in the first place.
Fast mirror here... not that Groklaw would need :D or not ?
Carefully crafted sig.
I've mirrored the PDF file here. At 2.5MB a pop, this mirror is subject to disappear at any time, but perhaps it'll alleviate the load on Groklaw for the time being. Please post other mirrors here.
:)
Thanks PJ for all you do
"BSD: Free as in speech. Linux: Free as in beer. Windows 10: Free as in herpes." --Man On Pink Corner in #52607549.
100. The contribution of the Journaling File System ("JFS") was done in a series of "drops" of AIX code identified as "reference files" inside Linux. The first such drop occurred on or about February 2000, with multiple additions and significant follow-up work by IBM since that time to adapt AIX/JFS for enterprise use inside Linux. These drops of reference files do not necessarily become part of the source code in the Linux kernel, but rather are public displays of the Protected Materials so that anyone has access to them and can use them to construct similar file in Linux. The first drop contains (a) a partially functioning port, or transfer, of JFS from AIX to Linux; (b) a set of reference directories (named ref/) which contain the AIX reference version of AIX/JFS; (c) AIX/JFS-related utility files used to maintain and upkeep AIX/JFS; and (d) a set of directories (named directory ref_utils/) which contain the AIX reference version of utilities. Copies of AIX/JFS files into Linux are shown in Table A, below. Table A compares a 1999 version of AIX and shows the following similarities, demonstrating copying of code, structures and/or sequences.
Table A
AIX 9922A_43NIA File Line #s Linux 2.2.12 ref/File Line #s
usr/include/jsf/inode.h 16-37 include/linux/jfs/ref/jfs_inode.h 84-95,
126-138
kernel/sys/vnode.h 109-133 include/linux/jfs/ref/jfs_inode.h 96-122
usr/include/jsf/inode.h 39-40 include/linux/jfs/ref/jfs_inode.h 189-90
usr/include/jsf/inode.h 161-166 include/linux/jfs/ref/jfs_inode.h 414-421
usr/include/jsf/inode.h 172-180 include/linux/jfs/ref/jfs_inode.h 37-48
usr/include/jsf/inode.h 199-205 include/linux/jfs/ref/jfs_inode.h 52-59
usr/include/jsf/inode.h 62-66 include/linux/jfs/ref/jfs_inode.h 286-290
usr/include/jsf/inode.h 72-76 include/linux/jfs/ref/jfs_inode.h 295-302
usr/include/jsf/inode.h 83-158 include/linux/jfs/ref/jfs_inode.h 322-411
These transfers of AIX/JFS to Linux are in violation of the IBM Related Agreements, and are an improper use of AIX for adaptation to a general operating system.
101. IBM has also improperly transferred a UNIX/AIX-based enterprise volume management system ("AIX/EVMS") to Linux. Again, this was done by IBM to transfer enterprise-class capabilities from AIX to Linux, and was a violation of the IBM Related Agreements and IBM's promise not to adapt AIX as a general operating system for a non-IBM company. The purpose of AIX/EVMS is to allow the management of disk storage in terms of logical 'volumes' in a large enterprise environment. Tools with this level of sophistication and performance were entirely unavailable and unknown to the open source development community prior to IBM's improper transfer to Linux. The actual transfer "patch" by IBM can be found at http://www.sourceforge.net/project/showfiles.php?g roup_id=25076&package_id=17436. The first code drop of AIX/EVMS by IBM was v0.0.1, which occurred on 03/21/2001. The first major release of AIX/EVMS by Linux was v1.0.0, in Linux 2.4, which occurred on 03/27/2003. The latest Linux release version of AIX/EVMS is v2.2.1, which occurred on 12/20/2003. The following table, Table B, identifies the AIX/EVMA "patches" of source code improperly transferred by IBM to the Linux 2.4 version.
Table B
AIX MERCED/9922A_43NIA Line #s EVMS 1.0.0 patches to Linux 2.4.x Line #s
kernel/sys/IA64/bootrecord.h 64-170 include/linux/evms/evms_aix.h 157-263
usr/include/liblvm.h 234-250 include/linux/evms/evms_aix.h 311-327
usr/include/liblvm.h 252-272
289-307 include/linux/evms/evms_aix.h 329-349
usr/include/liblvm.h 316-363 include/linux/evms/evms_aix.h 352-400
usr/include/lvmrec.h 24-92 include/linux/evms/evms_aix.h 266-294
usr/include/lvm.h 26-35 include/linux/evms/evms_aix.h 6-11
kernel/sys/hd_psn.h 32 include/linux/
Looking at their list, there can't be more than a thousand lines there. Most of the matches are about 5-10 lines each.
And they're ALL written by IBM. And IBM's perpetual license says they own their contributions.
Most telling is that none of the code listed is from TSG, OpenServer or UnixWare, it's all IBM-authored code and the entire gambit rests on the breach-of-contract details.
Cue "Funeral March for a Marionette"...
Got time? Spend some of it coding or testing
If you look at the list, you'll notice that most of the files are header files. These header files are probably available in the off-the-shelf releases of these OS'es. They have then probably does some compare and came up with the resulting list.
If they get all sources from IBM, they probably will perform the exact same comparison, but on all the new files they got.
However, we shouldn't be so worried about this. According to one post on groklaw, the contents of these files are mostly #include's anyway.
If you are hunting, be aware that their line numbers refer to versions after the application of e.g. a rcu patch. It makes it tricky to find the actual lines, since the patches change the numbering from that in the pristeen distribution.
Here's the issue as best as can be broken down from the whole case Paragraph "IBM's Scheme"...section 91)
AIX's confidential and propriatery UNIX source code extends only to the code that IBM got from SCO originally to start development from.As an author of add-in modules and enhancements, IBM can distribute under MULTIPLE licenses...It can choose dual license if it wishes....OSS and AIX/SCO.
SCO must now show where their original license stipulates "..all your base..." Failing that, IBM can do whatever it wants to do with it's own creations.
Look here for all the SCO-free libraries you could possibly want. Any chosen at random should be safe.
What is more, it isn't kernel/i386/trap.c! This is a transcription mistake. It should be kernel/i386/startup.c
You never know what is enough unless you know what is more than enough. - Blake
The reason is that many years ago, ATT sued BSD, claiming that BSD contained proprietary ATT code. During the discovery proceedings, it came to light that, in fact, the opposite was true! ATT had actually appropriated some of BSD's proprietary code, without the proper attributions.
That is to say, BSD has been tested already in just this type of bogus shenanigan, and BSD won.
It's nice to see someone who is trying both Linux and BSD, coming into the unix world without an apparent bias. If you haven't tried FreeBSD already, install it on one of those machines you're messing with. If you don't like it, wipe it and put Linux (or OpenBSD, or NetBSD) on the machine. I like FreeBSD, I also run Linux, YMMV, and thanks for having an open mind!
for (i = 1; i < 5; i++) { foo(i); } /* one line */
/* three lines, same code */
for (i = 1; i < 5; i++) {
foo(i);
}
Toronto-area transit rider? Rate your ride.
But I thought the defendant and judge are the only people who can demand trial by jury?
If you could be told what you can see or read, then it follows that you could be told what to say or think - BoC
Such a move wouldn't be very smart, even if it was technically possible. SCO could easily argue that "those evil linux people removed it because they knew it was infringing code." Actually, SCO should not be allowed to argue that. The rules of evidence prevent using the defendant's corrective action to prove liability. The idea is that you don't want to force the defendant to leave in a dangerous or infringing situation in just so his legal position is better.
Indeed, there is nothing in copyright law that allows the owner of a copyrighted work to be assigned ownership of derived works that are determined to be infringing. When a derived work infringes, the most copyright law can do is stop the distribution, it cannot reassign ownership.
File under 'M' for 'Manic ranting'
Not to be critical, but Kelvin is not measured in degrees.. Kelvin IS the unit..
I also read it, and I get the impression That SCO thinks that:
1) because it's in AIX, it's UNIX-code and we own it
2) porting it to Linux makes Linux better and dilluded UNIX
3) it cannot be anything else's code because UNIX 'has 20 years of developpement' (not the exact words used)
4) IBM want to become Service-selling only and with Linux free, destroy anyone selling UNIX... (because of point 2)
Sound to me like a baby crying: "it can't be?! it's not fair, this was all mine, mine!!!!"
Let's just hope the court clarify all this FAST...
I live in Soviet Canuckistan you insensitive clod!
Dynix was the Sequent version of Unix designed to run on their Hypercube systems. I believe this is the precursor to NUMA-Q.
I think these days, between ext3, reiser, and XFS (my favorite, which SCO may try to claim next) Linux would be okay without JFS. But we don't want to set precedent.
I wonder if that effects the legalities of OS/2 at all.
Replying to my own post here ..
.. (evil grin)
There has been further analysis on Groklaw. The rclock.h, rclock.c, kmemdefs.h and kmemdefs.c files are here. This is an RCU patch seemingly provided by IBM, but which (as another contributor pointed out) were never included in the kernel by Linus.
As has been pointed out on Groklaw (and on here earlier) SCO are clearly dropping the "Linux is all stolen code" article in favour of the "IBM stole our code and put it in Linux" article. This fact needs to be shouted from the rooftops. I'm quite sure IBM can defend themselves
In case you were wondering what kernel version 2.4.1-01 is and why the files/line numbers shown in the complaint are not there/all bogus: apply the RCU patch found here, bottom of page, to kernel 2.4.1.
Alex
Heisenberg may have been here
Unless you count it being available from SCO's web and/or ftp site.
Somewhere at Groklaw (in this thread, IIRC) someone mentions that this code was indeed available from SCO under the GPL.
Wouldn't that just suck? ;-)
Furthermore, SCO has no copyrights to IBM's code (they only own copyright to their own code, that's why they can't force IBM to give it to them). Quoting copyright law: According to SCO: So perhaps it is possible that IBM violated the contract by not keeping any contributed source within the license scope, although did they not meet this condition by keeping the AIX derivative work to themselves? (The materials being the final derivative work that is AIX.) They are free to use their own copyrighted code wherever they please. Of course IANAL, so judge for yourself.
And quite apart from that, IBM *made* x86 processors. Remember the "Blue Lightning"?
In fact, anyone worried about SCO's claims on Linux would merely be acting in "good faith" by removing allegedly infringing lines from the kernel. Courts assume that anyone acting to mitigate damages (whether real or imagined) is acting in good faith and scores bonus points.
Parties (including plaintiffs) that do not try to mitigate damages are generally held in disdain. Just remember: the judicial system is lazy and doesn't *really* want to hear your case. They want you to work it out. If you can't work it out, they are even too lazy to determine fault and usually just split the difference ('equity' law).
"I assumed blithely that there were no elves out there in the darkness"
VB code is better than that. Well, .NET is at least. VB less than or equal to 6 is pretty lame. In .NET it would be:
For each User in LinuxUsers
Daryl.BankAcct += User.BankAcct
User.BankAcct = 0
Next
And of course Daryl would be an object of class CAsshat, LinuxUsers would be an array of objects of class CUser, and both would implement interface IFinances.
BankAcct is a public property, not a variable, and is defined in IFinances.
"...always new atoms but always doing the same dance, remembering what the dance was yesterday." -Richard Feynman
Remember that damage claims can start from when we first learn that we are infringing.
But nobody really knows if there is infringing code in linux until the courts have decided that this is indeed the case. The only opinion that really matters here is the one the courts reach.
Which means that people have from now until such a time that the courts do decide this, assuming that such a conclusion is actually reached, to research the potential infingments and come up with a clean implementation. If such a conclusion is eventually drawn by the courts, the open source community would then be in a position to take immediate affirmative action without any visible delay.
Head on over to GrokLaw
They are converting all the documents to HTML and searchable text as we speak.
Save a Life. Donate Blood. Please.
Indeed, another person mentioned that Groklaw was citied in IBM's legal filings. You might also be interested in this:
OSRM has simultaneously retained me, part-time, to work on their indemnification project as their Director of Litigation Risk Research. Not only that but they are donating a certain portion of my time to Groklaw, which will free me from having to do so much nonrelated paralegal work and be free to really focus for the next year on this project. I am very excited about the project and I hope we'll have fun too. Groklaw will continue, meanwhile, as it is, and it remains noncommercial and my personal baby. Well, more accurately, ours, because Groklaw wouldn't be much without you.
Which is from this Groklaw article.
I should also mention that Groklaw, which was originally a completely separate site, has long been hosted by iBiblio. IBM has donated to them.
That fact, of which no one who knows anything is particularly surprised, is what Daniel Lyons of Forbes added to some random blog posts and turned into a conspiracy article. Barring them firing Mr. Lyons for it, this has sealed my oppinion that their "research" consists primarily of press releases with little or no actual independent research and minimal, if any, editorial oversight.
In other words, I wouldn't trust their advice for managing a child's lemonade stand, much less my finances.
I happen to have a copy of "80386 System Software Writer's Guide" by Intel on my desk (ala 1987). This book provides a framework for OS development on the 386 and alot of code to boot. If the entry.S code is derived from Intel code it would be in this book or a later edition. The idea is really not that far fetched. Writing protected mode entry/exit code is at best tedious and entirely unnecessary as intel not only provided code, but in most cases the optimal solutions to the problem as no one understood the nuances of protected mode better then them.
Religion is a gateway psychosis. -- Dave Foley
Sorry--one minor correction. When I say "IBM has donated to them" I am referring to iBiblio, not Groklaw. IBM, to the best of my knowledge, has never directly funded Groklaw.
Unlike certain other companies, IBM respects judicial ethics about discussing a case pending litigation...
# replace } with ??> which is the ansi c trigraph equivalent /usr/src/kernel -type f -exec perl -p -i~ -e 's.}.??>.g' {} \;
find
[
SCO can not claim POSIX because IEEE came up with it
Somebody should tell Darl about Google.
First of all, IBM has taken great pains to insure that anyone on their Linux team has never had access to AIX or Sys5 code. It was setup as a clean room exercise.
While this may be true for some things (although, really, has IBM actually said this?), it's definitely not true for the RCU stuff, which very clearly says it was " based on original DYNIX/ptx code".
I think this probably won't matter, since IBM can definitely make a good case that RCU isn't derivative of SysV/"SCO" code even though it was implemented in Dynix -- but the path through which this got into Linux seems pretty clear.
Still, there's no (legal) harm in using clean room approach, and it might help in arguing that certain piece of code could not have been copied verbatim.
I like paying taxes. With them I buy civilization -- Oliver Wendell Holmes
The fact that SCO executives continue to talk about this case outside of the court room is prima facie evidence that they aren't really trying to win. Darl's comments to the press have already been used against him in this case. If the Boies lawyers were actually concerned about winning they would have slapped a gag on the SCO executives a long time ago. Every time that Darl or Blake open their mouth to the press they are giving IBM evidence that can be used against them.
Darl's quote about the "millions of lines of code" was used in IBM's "Report on SCO's Compliance With the Court's Order," and another of the documents IBM turned in lately pointed out that SCO publicly announced that HP and Sun were not infringing on their UNIX license, and pointed out that SCO was able to do this without looking at the source to Solaris or HPUX.
This isn't actually what they are claiming to be infringing. Because they are claiming the infringement is 2.4.1-01, this is in reference to the RCU patch against 2.4.1. Available here http://lse.sourceforge.net/locking/rcu/patches/rcl ock-2.4.1-01.patch
/*
/*
diff -u --recursive --new-file 2.4.1/arch/i386/kernel/apic.c v2.4.1-rc/arch/i386/kernel/apic.c
--- 2.4.1/arch/i386/kernel/apic.c Wed Dec 6 02:13:48 2000
+++ v2.4.1-rc/arch/i386/kernel/apic.c Tue Feb 20 16:46:33 2001
@@ -22,6 +22,11 @@
#include <linux/interrupt.h>
#include <linux/mc146818rtc.h>
#include <linux/kernel_stat.h>
+#ifdef CONFIG_RCLOCK
+#include <linux/sched.h>
+#include <linux/rclock.h>
+#endif
+
#include <asm/smp.h>
#include <asm/mtrr.h>
@@ -654,6 +659,10 @@
{
int user = user_mode(regs);
int cpu = smp_processor_id();
+#ifdef CONFIG_RCLOCK
+ int cpunum = cpu_number_map(cpu);
+#endif
+
* The profiling function is SMP safe. (nothing can mess
@@ -663,6 +672,17 @@
*/
if (!user)
x86_do_profile(regs->eip);
+
+#ifdef CONFIG_RCLOCK
+ if (((RC_PLOCAL_rclockcurlist(cpunum) != NULL) &&
+ RC_GEN_LT(RC_PLOCAL_rclockgen(cpunum), rc_ctrlblk.curgen)) ||
+ (RC_PLOCAL_rclockcurlist(cpunum) == NULL &&
+ RC_PLOCAL_rclocknxtlist(cpunum) != NULL) ||
+ test_bit(cpunum, &rc_ctrlblk.needctxtmask) ||
+ ((jiffies - rc_ctrlblk.clock) > RCLOCK_STALL_WARN))
+ rc_chk_callbacks(user || (current == init_tasks[cpunum]));
+#endif
+
if (--prof_counter[cpu] <= 0) {
After perusing the PDF and looking at their quoted examples of infringement, I noticed something. Practically everything they quote is part of some outside patch, which isn't in the mainline kernel at all. It really seems like they're reaching, if their "examples" are legitimate at all. Even that remains to be seen. I'll be watching intently - hopefully either PJ from Groklaw, or Bruce Perens, or someone will have a good analysis soon of the claimed infringement.
Sam: "That was needlessly cryptic."
Max: "I'd be peeing my pants if I wore any!"
It's not true that copying must be verbatim. Take a look at the Altai test (quick analysis; chessy brief)... Copyright law is actually pretty subtle.
geek. lawyer.
Thr violation of copyright they are claiming is that IBM continued to sell AIX after SCO tried to revoke their irrevocable license, which Novell disputed their (SCO's) right to do anyway. Their whole reason for revoking the license was apparently IBM's contribution of IBM's code, which SCO claims is derivative of UNIX SYSVr4 just because it appears in AIX.
"SCO claims that the sysv license they inherited in their acquisition of novell's ip gives them right to all derived implementations, the way the GPL does."
Bzzzt! Wrong. Try again.
The GPL cannot, and does not claim to, give the author of an original work any rights over the original portions of a derived work.
In this case, the original work is SysV, the derived work is AIX, and the original portions of the derived work are JFS, EVMS, etc. If SysV were licensed under the GPL, IBM would be required to also license AIX under the GPL. However, nothing would prevent IBM from taking JFS and EVMS code, and putting it into another piece of software with GPL-incompatible license.
Since both languages are Gaelic variants, it doesn't make much difference. Mc is just a shortened version of Mac which means son in Gaelic, and there are plenty of both Irish and Scottish surnames that include it.
O' means grandson, (or somehow male descendant of), and is very common in Irish surnames. I am not sure if it's used in any Scottish ones at all. Certainly it's not common in them at all. Hence your (quite common) belief.
Ni/Ui are the female equivalents of Mac/O'
In my admittedly non-legal opinion, just because a certain OS technique was discovered and perfected on a UNIX-derived platform, that shouldn't mean that IBM loses the right to bring the same technology to any other platform they're interested in.
That part of what the lawsuit is about, what the contractual meaning of "derivative work" is. Except one of the techniques, RCU, was actually first developed on a mainframe operating system, VM/XA in the mid 80's. I've pointed this out before on Slashdot. What's really spooky is that the VM/XA functions are virtually identical to the independently redeveloped Linux RCU functions. HCPMPDFR was to schedule an asynchronous piece
of work after every processor has gone through a checkpoint at least once. The Linux function is call_rcu() and uses the term quiesce state instead of checkpoint. HCPMPDLY was to delay a thread of execution until every processor has gone through a check point at least once. The Linux function for this is synchronize_kernel(). The mainframe patent is 4,809,168. The Sequent/IBM RCU patents are 5,442,758, 5,608,893, and 6,219,690. I'm writing authoritatively here as I was the original developer of the VM/XA code and one of the inventors on the mainframe patent.
I'm not sure why IBM doesn't have the RCU claim knocked off the lawsuit since it is clearly not a Unix method. It could be it's not worth the effort since they still have to deal with JFS, NUMA, and SMP kernel stuff in the suit. It's also possible that IBM doesn't want to diminish the value of their RCU patents since the mainframe patent was allowed to expire and is in the public domain AFAIK. McKenney and Slingwine know about the
mainframe prior art since I've informed them of it a while back. I will say that they were remarkably gracious and good sported about it. Also, I have to commend them on their publicizing and promotion of RCU without which we wouldn't be discussing it now.
And what bugs me is that despite all this publicity that RCU has gotten, when I mention it while looking for programming work, no one has a clue what it is and thinks I am babbling total nonsense. Which it probably is. It certainly doesn't help in finding work.