Claimed Proof That UNIX Code Was Copied Into Linux
walterbyrd writes "SCO's ex-CEO's brother, a lawyer named Kevin McBride, has finally revealed some of the UNIX code that SCO claimed was copied into Linux. Scroll down to the comments where it reads: 'SCO submitted a very material amount of literal copying from UNIX to Linux in the SCO v. IBM case. For example, see the following excerpts from SCO's evidence submission in Dec. 2005 in the SCO v. IBM case:' There are a number of links to PDF files containing UNIX code that SCO claimed was copied into Linux (until they lost the battle by losing ownership of UNIX)." Many of the snippets I looked at are pretty generic. Others, like this one (PDF), would require an extremely liberal view of the term "copy and paste."
Yeah, because open-source developers can just see and copy the proprietary closed-source code - oh wait...
Nah it's a joke. The only thing highlighted were the function / subroutine definitions and not even across the board. Just because 2 programs have hooks or functions called "ReadX" does not mean there was any copying involved. They even highlighted include statements and data structures. It's almost like suing an author for starting with "Once upon a time". I guess they just figured no judge would be able to clue in on this kind of stuff and they would be able to sift through junk like this for decades. Hell they could use the same reasoning against pretty much any software and win if that is all the proof he needed. I guess Unix was truly the precursor to all the code ever written so Novell can truly say "all your base are belong to us".
A loop, by its nature, continues. If that didn't make sense, start reading this sentence again.
More news about imaginary property. How much time and money does our society waste on propping up this outdated concept that you can own an idea? "#include " constitutes copy and pasting? I guess every program on earth violates the copyright of the guy who first wrote "int main(", and whoever started the convention of naming C++ files cpp or cxx should be hiring a lawyer about now. Money is to be made.
Great Intellect...
How do you kill that which is already dead?
this fiaSCO has been running on for nearly 8 years - what the hell is up with the courts that they keep this bullshit alive. /dev/null
Kill -9 all | sort >
Pain is merely failure leaving the body
Ho-hum.
I'm not a coder. I couldn't create a kernel if my life depended on it. I couldn't code a hungry cat to catch a mouse. 1/2 or more of what I read in code is gibberish to me.
But, one thing is pretty sure. Linus Torvalds wrote Linux, and his programming background came directly from Unix. OF COURSE he is going to write the same commands he has used a thousand times in the same way. OF COURSE there are going to be lines that look very much the same, sometimes even identical.
Now, open any dozen books that are 50,000 words in length. Search for strings that are duplicated between the books. Entire sentences, or phrases, it hardly matters. Just do the search. Anyone who is used to playing with databases can probably search those dozen books, and find numerous instances of phrases that were copy/pasted from one author's book to another. In fact, I'll bet that technical and factual books will have a higher incidence of matching phrases and sentences than works of fiction - but fiction will have it's share as well.
And, before we do this data base mining, we need to set up some method of assigning a variable string for proper names. In the wife's romance novels, we would be looking for " $ kissed $ ". It will be repeated so often that you can't help seeing the plegiarism. One author after another rips it from his predecessors.
50 instances are claimed for "copying". Out of how many lines of code? Good grief. I guess it should have been mandatory that Linus write any code not only in a different programming language, but in a different language than English. Then, he MIGHT have been safe. Maybe. Not likely though, because SCO can probably read Chinese, or hire some scumbag lawyer who can.
"Windows is like the faint smell of piss in a subway: it's there, and there's nothing you can do about it." - Charlie Br
No one cares whether it's a public spec or not (it may be, I do not know). It's a OS header file. The functions have to be named the same way in order for end-user programs to be source-compatible. If you've been programming for 20 years, this shouldn't be too hard to grasp.
If SCO were allowed to claim copyright over this, then it would be simply impossible for Linux to provide a compatible libelf. This means you'd essentially prevent anyone from ever making compatible OS libraries, as they'd be infringing on the original author's copyright. That would be ridiculous. Public function names and prototypes (documented or not, standardized or not) are not considered copyrightable.
Another example: is Wine, according to you, a humongous violation of Microsoft's copyrights? After all, it implements the Windows API with identical function names and prototypes, undocumented features and all (which is nowhere near a published standard of any sort).
Interface names needed for interoperability are fair game. Interfaces once published are public domain. The specific document is not.
Software is copyrightable but it is not a work of fiction where more protection is given. Writing a book on physics protects the specific wording in that book but it doesn't keep others from using the word "relativity" with the same meaning or your specific name for the speed of light -c- to explain the same exact phenomenon your original book described.
Guess what? Wine contains a function named MessageBoxW and I can't remember the parameter types, but I assure you they are the same as in Windows source. That Microsoft hasn't done anything about it, should tell you how much legal standing a suit on struct member names or function behavior would have.
"until they lost the battle by losing ownership of UNIX" Those are all the words you needed to read. You cannot loose ownership of that which you never did own. SCOs gambit was to gain ownership by bamboozling everyone. You know when one party is blowing smoke in these issues when they refuse to point to the infringing code outside of court. If the quote included is to be believed, they lost on appeal and now that they have filed yet another appeal they are suddenly going to show us all the holy grail of "infringing" code. In each case where they've brought up "infringing" code, it was either released by themselves, or was code they didn't own in the first place.
Umm, no. This is only logical. If he had the documentation to data types, or even if he reverse engineered them, they would be identical. I have done some trampolining of functions to/from code which i only have binary access. If I am handling a struct, I would examine the structure in memory and make my struct identical so I could copy it with simple memcpy(to, fro, sizeof(struct)), or replace references by just changing the pointer to different place.
Bot Assisted Blogging
Except that gcom didn't ship Caldera's STREAMS implementation. They shipped a loadable module (driver) that intercepted calls made by legacy apps to the STREAMS api and translated them to calls that linux could fulfill. In other words, no STREAMS code necessary in either the LiS product or in linux, and not even code to emulate STREAMS - just translate the call and forward it.
Since we have to rely on this PDF , and there is no way to prove that that code was actually in UNIX at the moment ( as it's closed , there's no way to check ) .
I am left to conclude that it's much easier to copy from Linux (which is open ) , than from UNIX ( which is closed ).
In other words , using this PDF , i could also claim to SCO stole from Linux , and then implemented it in their commercial product , thus violating the GPL .
Slipping shoelaces ?
Header files are public - but they seldom contains any advanced functionality. They are just a definition of the calls available, defined data types and constants.
If the header files didn't contain the same (or very similar) definitions then the API wouldn't work. I expect the same header definitions to reappear in many other operating systems with minor differences - many even in Windows (Which do have a Posix API)
But of course - a lawyer wouldn't understand that, it's just a question of money.
If builders built buildings the way programmers wrote programs, then the first woodpecker would destroy civilization.
This was the first time I had a chance to see any of their "evidence". How exactly did this make it all the way to court?
Especially given that "original" files appear to have been altered to contain comments to the effect that a USL copyright statement somehow proves that the information is "UNPUBLISHED PROPRIETARY SOURCE CODE" together with a meaningless statement about the existance of a copyright statement not implying publication.
It looks as though they have "mailmerged" part of their claims into their supposed evidence. Shouldn't this have resulted in the judge throwing this out as null and void?
I'm all for strict ethical standards, and I won't claim to have gone through more than a half dozen of these PDF's checking them.
That said - the six or so files I looked at were exclusively issues about some fairly well established naming conventions, the repetition of which is about as unlikely as finding an elm street and sycamore street 'coincidentally' close to each other in both our home towns and calling it 'evidence' the city planner of one stole the plans of the city planner of the other.
I've heard people claim in several posts that "Well, if you looked at the PDF's that weren't cherry picked for ridiculousness ..." there are 'obvious' copying of code. That may be, but I'd like someone to actually link to a pdf with this obvious copying of code - burying the evidence in bullshit data is what you do when the evidence is against you and you *don't* want the other side to find it, not when it's in your favor and you're trying to make your case.
At a minimum, the fact that he has buried his 'evidence' in with other bs data doesn't make it very clear he knows what actual evidence of copying would look like.
Pug
An Invisible Entity of Vast Power whose existence must be taken on faith alone: Liberal Media
I did see the code - and the filenames, but the majority of that was header files that are containing definitions that have to be identical for portability reasons.
And the few code snippets that did contain actual functions didn't contain any real and obvious surprises. The working code was hardly something that you can call "advanced" by itself.
And then there is the issue of which way some code actually did go. From Unix to Linux or the opposite way.
If builders built buildings the way programmers wrote programs, then the first woodpecker would destroy civilization.
They both had a common parent which was public with those structures. Remember these were public APIs, no one is disputing that the structures were similar. The question is whether the implementations were copyright violations.
"it was certainly a matter of one window with unix source to read from, the other window with linux source to write"
Hell no. That's a bullshit accusation.
Here we likely have a programmer who has never seen the SCO code (was it even released publicly back then?) but knows that applications can call functionY from libraryX from the interface documentation. If he creates a new libraryX containing a compatible functionY he isn't violating copyright. It is established that creating code with a compatible API interface isn't a copyright violation unless you actually do copy the code.
Indeed it appears this is exactly what is happening in the linked elflib files. The filenames are the same because they have to be (note both the redhat_libelf.h and SCO_libelf.h are actually referred to by just libelf.h in code and elflib.h is what applications need to link to) and the functions are the same because they have to be or else applications will be calling functions that don't exist.
This also happens with the WINE project. People there are creating the same header filenames and inside those headers the exact same function names. They aren't working off a split screen setup and blatantly copying Microsofts closed source code. They are merely recreating the functions that applications can call in Windows.
A similar thing happened years ago with Compaqs IBM compatible BIOS. Compaq re-created the IBM BIOS to get around having to buy the IBM BIOS. Both BIOSes responded to the same application calls in the same way with the same return values and messages. Despite this Compaq didn't break copyright because they still re-wrote the code. In fact Compaq hired engineers specifically for the fact they had never seen IBM BIOS code. This way it could be easily established that they didn't copy the code but instead just wrote the same code that performed the same task.
OK show me something that is not a header, non obvious, and not found in an open common variant such as BSD. post should be modded ignorant.
Because in FORTRAN, variable names beginning with letters I through N meant integers, and all other meant floating-point. For those with some FORTRAN experience, naming the first 6 loop counters "i,j,k,l,m,n" is automatic.
So use a REAL tab character in your code like $DIETY intended, and set your editor to "show tab character". We have wide screens now - there's NO excuse for using anything except a real tab any more.
Actually, there are several huge reasons for not using real tab.
1) Tab means different things to different people. Even when you spell it out, people interpret it differently. In the original sense (i.e. old Underwood typewriters, and the like), tab meant to release the carriage and let it move thanks to the spring, until it was stopped by a tab stop. This means that if you set your tab stop at position 5, and 60, and you pressed tab when positioned anywhere from position 1 to 4, it skipped to 5. Pressing tab when positioned at 5 through 59 (in this example) skipped you to position 60. So, in it's original sense, tab relied on tab stops (literally tiny "tabs" on the top of the typewriter). However, there are few standard document formats (especially for source code) that define the tab stops. You don't see a line in an ASCII or Unicode source code file that says "the tabs for this document are at position 5 and 60". There's no common convention for this.
So people invented arbitrary tab stop conventions. Like "tab stops are every 4 characters" or "tab stops are every 8 characters". But a small difference like this can change the meaning of your document! If you line up code and comments with "real tab characters" every 4 characters, and then someone opens your document with tab stops every eight characters, then the issue is NOT just that things are moved right. The issue is that things do not line up! If I create a nice comment section with a table explaining something, and use tab characters counting on a tab stop every 4 characters, and you open it with tab stops every 8 characters, the MEANING of the comments may change.
Example:
/* Here is a table of all the fields and whether they are changed by this function:
[tab][tab]Passed to function[tab]Returned from function[tab]Changed by function
[tab][tab]------------------[tab]----------------------[tab]-------------------
A[tab][tab][space][space][space]Yes[tab][tab][tab][space][space][space]Yes
longer[tab][tab][space][space][space]Yes
*/
These comments will mean different things depending on the tab stop assumptions!
2) The designers of some editors mis-understood how tab-stops worked, and instead, some made tabs equivalent to a fixed number of spaces. For instance, for some editors a tab is instantly interpreted as 4 spaces. But in the original definition of tabs, it was a "variable" amount of spacing, which took you to a predictable column. These are two vastly different concepts.
3) Those who are smart enough to realize that there is confusion are really annoyed by those who are clueless and inserting real tab characters without knowing that there's an issue.