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."
Copy and paste is how all open source developers "create" code isn't it? Stealing from hard working commercial developers
Also, we find out more about streams, and how SCOsource was bogus.
Looks like the 5 page pdf (last link) is just a slightly rearranged with comments peppered in. This is pretty obviously identical code to me?
Sopssa is a fucking worthless troll. Remember it moderators!
Peace out!
How dare they copy/paste those blank lines!
So finally they revealed the lines with the comments "copied" into Linux.... //check this later...
Like:
"In a blog post dated July 10th, 2010, Kevin McBride has leaked almost 50 of the code comparisons that were submitted in evidence in SCO vs Novell. You can download the archive.
Read on to view individual files if you don't want to download the whole thing.
Linux STREAMS
We also learned that the whole STREAMS fuss was not about linux, but about a product distributed by gcom, a provider of legacy solutions.
Their Linux STREAMS (LiS) product provides a couple of loadable drivers that would intercept calls to the old streams api and convert them. In other words, far from the allegations that the linux kernel contained code that infringed streams, it's evident from the need of an add-on loadable module that the linux kernel does not contain any STREAMS code.
Of particular note, and probably a source of much consternation to SCO and their proponents, is that LiS itself doesn't implement streams either, just does protocol translation. So neither linux nor LiS contains infringing code.
The whole end-user $699 license was a scam
So according to Kevin McBride, one of the lawyers who worked on the case, there was no reason for end users to take out a license. It's logical to conclude that SCOsource was a protection scam. So what happened? To me, it looks like SCO lawyer-shopped until they found attorneys who were willing to go along with the scheme for a price - everyone has their price, and in this case, it was $30,000,000.00.
The Appeal of SCO's loss to Novell - Novell will probably win.
So it's pretty much as we suspected all along.
I'm a bit curious what the result would be if you fed both into one of the cheat detectors a lot of college's and universities use to detect plagiarism. If anyone has access to one they should give it a go, for science.
I find it rather funny that the Linux code is well commented but the SVR4 code has little to no comments at all. Just because the function names are the same doesn't mean it was copied. It just means that the coders implemented functions with the same names (and I bet that the Linux versions worked rather differently than the original SVR4 code).
I'm really sorry, but there was some code that was already written that was just too good to pass up for the project I was on:
#include
int main(int argc, char* argv[])
{
printf("Hello World!\n");
return 0;
}
Now that I'm using Java, it won't happen again.
Seriously, is that him? Or some troll? It seems bizarre that he would make public comments like that.
Also, remember that a lot of the code was declared "Public Domain" many decades ago, because of pre-1968 copyright registration errors.
Die, Monster, Die!
Just because you have a PDF doesnt mean anything. If you have 2 declarations that basically do the same thing on two systems, and two different programmers just happen to be using the same "case" (ieCamel,Caps, lower, first letter etc) --- what are the chances that they will name them the same thing? my RPG struct Attributes { int str; int intel; int agi; }; so how many rpg's out there use strength agility and intelligence stats?
I actually find it ironic that libelf was picked as an example of infringement. I can tell you first hand that the (more standard) UNIX/Solaris libelf is NOT compatible with the Linux/libc libelf. And I can also tell you that after pointing this out to Ulrich Drepper he really didn't give a shit... (I think his approximate words were "It's been like that for a while, too late, I won't change it").
Their only mistake was actually naming it "libelf"... since it is most definitely NOT the same library...
Knowing Tom Hudson's trolling history (trolltalk.com anyone?) that URL will soon be replaced with goatse or something similar after he gets modded up to 5. Stick it on a reliable server if you want modpoints.
Computer programs pose unique problems for the application of the "idea/expression distinction" that determines the extent of copyright protection. To the extent that there are many possible ways of accomplishing a given task or fulfilling a particular market demand, the programmer's choice of program structure and design may be highly creative and idiosyncratic. However, computer programs are, in essence, utilitarian articles -- articles that accomplish tasks. As such, they contain many logical, structural, and visual display elements that are dictated by external factors such as compatibility requirements and industry demands... In some circumstances, even the exact set of commands used by the programmer is deemed functional rather than creative for the purposes of copyright. When specific instructions, even though previously copyrighted, are the only and essential means of accomplishing a given task, their later use by another will not amount to infringement.
It is nearly impossible to win a copyright suit over a header file. The only chance you would have would be if it was a straight copy-and-paste which this was clearly not. The reason for this is that there is just not much room for creative expression in header files. Likewise, you can't copyright a word or a short sentence.
There are a very limited number of ways to declare functions. If someone was allowed to copyright certain function declarations then they would have control over a large segment of the software industry. Likewise, if someone was allowed to copyright particular words, they would have control over a segment of the publishing industry.
We don't see the world as it is, we see it as we are.
-- Anais Nin
I went and looked through a handful of the pdfs, most of what he's claiming are just variable declarations with intuitive naming (as they well should be). Really? What's next, someone claiming copyright infringement based on using the letter i as a temporary variable? Thank god for copyright law, or else people might just get away with such atrocious fraud... Furthermore, if it takes that many red lines to elucidate the copy&pasting, surely that's visual indication enough that you're clutching at straws.
I see nothing of proprietary value here... It's just a whole bunch of references to functions and type definitions .. in a stupid header file.
Give us the diffs.
Giving us a pdf with red bold lines marked all over it will probably look a lot more incriminating than if there is a diff file removing all the lines in the original file and adding all the lines in the file in question.
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...
karma's a bitch, huh?
When God goes to war, He drops big bangs.
Comparing a variable named elf_t_arname to one names elf_c_arname is not very convincing. The suffix is generic, the prefix is activity specific, and the middle letter is presumably some datatype indicator.
Where it gets dicey is when there are structs and every variable in the struct has a somewhat similarly named variable in the other one. This does arouse suspicion. even if you forget the variable names for a moment, any pattern like bool,real,real, *real, int, *char,*char,*bool,.... that is identical between two structs would be an improbable occurence. and when you see it in back to back structs it becomes nearly impossible to happen by chance.
The key question then is if there is some structural reason why the two might share an identical stuct? for example, is there an elf spec that defines a protocol for communication or the way a record on disk is serialized (i.e. packed)? if so then of course these will occur like this. Or perhaps both are derived from a common BSD ancestor so both vary only slightly.
if the answer is no, there was no reference implementation and no ancestor then I'd say that for examples like 251, Mcbride has some evidence.
However for most of the ones he cites there is no there, there.
Some drink at the fountain of knowledge. Others just gargle.
We all know Linux is nothing but a rip off of other people's work.
What do all the fanbois like to say about Microsoft? Oh... yeah.... Where's the innovation?
You know it is true.
oops I meant document 331 not 251. (251 is an example of McBride seeing things). 331 is much more interesting.
Some drink at the fountain of knowledge. Others just gargle.
Towards end of the PDFs (like 412 on), the examples do show actual lifting of code fragments. It's still all in the libelf code, so it could have been fixed in 25 minutes of rewriting. That would assume good faith on SCO's part.
Isn't this completely moot since SCO released a LINUX based UNIX? Once they distributed the GNU work, they implicitly sanctioned the copying.
I've never done that (replaced a url with another) in my life - nice try. Next time, try to be at least a bit more credible by not posting as a lying A.C.
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
This code was the last big unknown in this long sorry saga. Even if SCO owned the copyrights, (and hadn't distributed it under the GPL, and hadn't signed the UnitedLinux agreement, etc.) it is now crystal clear that SCO's Microsoft-funded anti-Linux campaign was based on a stack of frivolous law suits.
I think Darl's brother is scrambling to cover his backside so that when the disbarments and criminal charges come down, he has a chance to escape.
Groklaw (of course) has IBM's response to SCO's claims that these paltry examples are worth BILLIONS of dollars in copyright damages. None of the code they offered is protectable under copyright law. Some of it is BSD code that everyone is free to use however they want (if they include the copyright notice). A lot of it is header files that were not copy-and-pasted which are nearly impossible to protect under copyright law. Then they have some snippets of generic code. Given the size of the source code for Linux, it would be astounding if there weren't some similar snippets. The idea that this is proof that Linux violated any Unix copyrights is totally absurd. The idea that these generic snippets are what made Linux enterprise-ready is beyond insane.
The recent SCO v. Novell case decided that SCO never even owned the copyrights it was suing about. And then instead of the millions of lines of code they claimed were infringing, they presented this meager collection of totally unprotectable snippets. I sure hope SCO's lawyers get severely punished for perpetrating this fraud on the court for the past seven years.
We don't see the world as it is, we see it as we are.
-- Anais Nin
I haven't really been following this of late, but is all that SCO has, or do they have anything that actually amounts to real evidence of copying (i.e.: two source code files that are the same aside from non-code elements like comments, whitespace, etc.)? The example shown isn't even a reach, it's just ridiculous.
"Only two things are infinite, the universe and human stupidity, and I'm not sure about the former." --Albert Einstein
... duke nukem forever will be released. Seriously? They are still at this?
Straight from the horse's ass.
5. Software should not be “free.” In this new day and age of corporate control of the world, IP rights are an important barrier of protection that help the little guy. Big companies mostly don’t need IP rights, because they can get their way through force and market power. Small companies and individual developers need strong IP rights so the fruits of their labor are not commoditized by big companies.
The Dead Parrot Sketch was presented by talented people, and it was funny. This is more like listening to Rod Stewart.
Acoounts for less real problems Errors. Future I = 36440 FreeBSD fastest-growing GAY
I've seen cases where me and another person are working on code independently, and when it came time to merge, we had both ended up creating the same variable names, and pretty much the same code.
About the only difference was in indentation - mine is "always put the opening brace on the same line, one true tab, else in same column as if, no braces for any single-line condition to a control structure (for, if, else, while, etc)". Even the comments were pretty much the same.
In this case, though, some of the code is from BSD - which is perfectly fine.
It is total BS, has been debunked completely here and on Groklaw for almost a decade now. Give it a rest.
And here, see? They're both using inline comments. Inline comments are an innovation by us. This is a rip-off!
What a nonsense.
ELF which is a file format, and is pretty stright forward to implement, and also have some functions and names directly embeded in the standard specification. It is not any proof.
FUD again.
Seriously, whoever made that pdf, it's unreadable. How about using different colors so I can tell the lines apart? I would actually read it if you had done so.... Like this it's just illegible.
"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.
We've suffered this case for how many years and this is their evidence? Someone tell me that they actually had a software engineer with extensive multi-generation and cross platform software development experience testify. Code like "if (foo->bar == 0) return 0; return foo->bar;" simply DOES NOT qualify as duplicated code. This is their evidence? Come on.
Even with the specific allegations being invalid, it's a valid point that you could do that.
Would you mind satisfying my curiosity as to why you're using your sig to post the link rather than putting it in comment text?
Just because Linux and Unix have some of the same lines of code, does NOT mean that linux copied the code from unix.
The code could have come from BSD for example and in fact there are several instances where linux and Unix share (or shared) the same BSD code.
The code could also have come from implementing the Posix Standard. The PDF linked to seems to be an implementation of errno.h which I believe is part of the POSIX standard.
So again just because the code appears in Unix, does NOT mean that Unix had copyright ownership of that code.
To prove its case SCO would have had to prove that:
a) Linux had lines of code that were substantially similar to Unix. (some minor examples provided but even that was not definitive)
In fact the judge who supervised the discovery kept asking for details and at the end of the multi year discovery process, said, "Is this all you've got?"
b) Unix had copyrights to the code in question (again not proven)
c) SCO owned the Unix copyrights (again not proven)
d) SCO never granted the rights to use that code in any way. In fact Caldera (aka SCO) distributed a version of Linux under the GPL which in effect granted GPL license to any of their code that happened to be in Linux.
So even if all of a, b, and c were true,
they STILL did not have a case for infringement.
I almost wish that SCO had owned the UNIX copyrights, because then this whole issue would have been resolved by now, instead of relying on Novell.
softcoder.
I learned perl from someone who named all his variables with variations on "foo" and "bar". Back in those days, if I was writing something short and simple enough, it was hard for me to break the habit of naming things $foo, $bar, $boo, $far, $foofoo, etc. I'll bet a lot of our code looked like it was from the same person :)
The CB App. What's your 20?
1. break down the plaintiff’s program into its constituent structural parts (“abstraction”);
2. examine each part for incorporated “ideas,” elements taken from the public domain, methods of operation, processes or procedures, or otherwise unprotected material (“filtration”); and
3. compare the remaining kernel of creative expression, if any, to the work alleged to infringe at each level of abstraction (“comparison”).
They further explain:
The scenes à faire doctrine is often applied in software cases because it is frequently impossible to write a program in a particular computing environment without employing certain standard programming techniques and design elements. This is because certain functions, data elements, and the order of operation of a program can be dictated by such things as the type of computer on which the program will run, the programming language used, the operating system environment, governmental requirements, industry demands and standards, and widely accepted programming practices.
I suspect the reason SCO didn't filter this code is because if they did, there would be nothing at all left to present to the court as their fig leaf to avoid being charged with perpetrating a fraud on the court.
We don't see the world as it is, we see it as we are.
-- Anais Nin
There are plenty of things I could do ... doesn't mean I would.
I changed my mouse a few days ago and it's causing me nothing but grief - including random clicks where they don't belong, back/forward browser motion at random, and cut-n-paste when and where I don't want it. The link got eaten by one of those - it's happened many times today - most of the time I catch it. This time I didn't - which is why I reposted with both the link and more info - such as McBride's comments about STREAMS and SCO losing the next appeal.
I'm going to be cleaning off the sensors on the old mouse and hoping it works okay because this is just not working (though it works fine as a second mouse with my laptop ... go figure).
Must have been the cocaine, booze, illegal and perscription drugs, and wild Gay orgies on the Riveria that did it! Right! Err..... No!
They just did not have the brain cells, intelliect, understanding, training, intelliectual capacity for communicating in the English Language.
This case and the linked cases can be referred to as, Dumb and Dumber!
We also learned that the whole STREAMS fuss was not about linux
In other news: fire is hot, and bears shit in the woods.
It's well known that Caldera programmers attempted to get STREAMS accepted into the kernel mainline, and the linux devs (most notably Alan Cox) said "no fscking way."
The news isn't that it's not about Linux, but that Kevin McBride is a raving psychotic who claims that because someone else (Gcom) shipped Caldera's GPLed STREAMS implementation, that means that "Linux infringes SCO[X]'s copyrights."
I think the patent system is the greatest achievement of the human race.
i can put it on look.at.datfukkendog.com
I spent several years as a Unix kernel hacker, working extensively with AT&T source code. I also went to law school and was one bad case of writer's block away from becoming a copyright lawyer. Thus I found those code snippets quite interesting, both from my Unix kernel hacker persepective and my almost-became-a-copyright-laywer perspective.
My conclusion, from the half dozen or so of his samples that I looked at? They show nothing remotely resembling copyright violation.
Copyright covers expression, not ideas. What that means when dealing with functional works, such as computer programs, is that things that anyone implementing that functionality will have to do are unlikely to be covered by copyright.
All of the functions I saw that were allegedly copied were very simple functions. All they did was check arguments to make sure they were legal, return the expected error code if not, or return some very simply value otherwise.
Even if the corresponding functions in Linux were exact matches to the SCO code, it would probably not be enough to support an inference of copying, because there just aren't a lot of ways to reasonably express such simple functions. And they were not exact matches. One would check for a null pointer by comparing to NULL, one would use if(!p), for instance.
The header files are more similar, so copying is more believable there. The problem with SCO's case there is that the elements in the header files I looked at are entirely dictated by compatibility requirements. There's no copyrightable expression in them.
To summarize, SCO's claims appear to fall into two groups. First, things where the implementation is so simple that it is not possible to infer copying from similarity since the similarity is imposed by the nature of the function. Second, things where there may have been copying--of things that aren't protected by copyright.
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.
man....if that's the case, they can go after ANY software company that used/uses C++....even Microsoft.
seriously, that's like saying someone copied your letter because they started their letter with a "Dear Sir".
Plus, wasn't there some sort of law/precedent that exempted data structures from it? (aka the "struct", etc.) especially if it's for interoperability.
And some of those lines seem to reference (link) to external library functions too.
Claiming that as infringement is similar to Coca-Cola claiming that Pepsi-Cola is infringing because they use the word "Cola."
man...why won't SCO just shrivel up and disappear already? they are worse than crabs and I don't mean seafood!
All that PDF shows is that McBride violated Adobe's copyright.
In Gates v Bando the Tenth Circuit established the abstraction-filtration-comparison test that would become the standard in software copyright infringement. Specifically in the filtration step, all elements which are not protected by copyright must be removed from consideration. In this case, most of the code falls under scenes a faire: "expressions that are standard, stock, or common to a particular topic or that necessarily follow from a common theme or setting . .these external factors may include: hardware standards and mechanical specifications." Most of the code were simply declarations needed for compatibility and cannot be copyrighted.
Well, there's spam egg sausage and spam, that's not got much spam in it.
If they worked for IBM or SGI, two large contributers to the Linux kernel, they could. SGI at one point contributed UNIX derived code.
There are some actual similarities beyond API necessities. This PDF contains a striking example of that:
http://www.mcbride-law.com/wp-content/uploads/2010/07/Tab-247.pdf
But there's a reason why the copyright headers are missing in that PDF---they say that this code is under University of California copyright, so both System V and GNU/Linux copied it.
mine is "always put the opening brace on the same line, one true tab, else in same column as if, no braces for any single-line condition to a control structure (for, if, else, while, etc)"
Coding style like this makes me cringe, particularly the thing about no braces for single-line conditionals -- it makes it far too easy to make mistakes because you indent code and forget that indentation doesn't mean it's part of the conditional (unless you are using python, of course).
Ask me about repetitive DNA
while (horse = "dead")
{
beat (horse);
}
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.
Linus Torvalds started linux; out of the current code he authored a few percent. Linux is now massive, and this is a pretty large amount of it for one guy to have written, but his main job these days is on managing code submissions from others. This case is really unrelated to Torvalds; if submitted code was plagiarized he wouldn't have been responsible or known about it, and it's really fairly unrelated to Linux; if SCO were to have succeeded Linux wouldn't disappear, but certain companies like IBM, SGI, etc, would have needed to pay some cash and redo some code.
Torvalds is not on trial here.
Also, as a guy who had his own code plagiarized, I am very wary of special pleading to try and excuse such behavior. We need to look at the facts of the case; we can still use Linux (I do) and at the same time be completely, absolutely opposed to it being tainted with plagiarized code.
The truth is that code was reused (if not copied, exactly, in the same way you don't submit a copied essay which you've taken from a classmate) from a UNIX derivative, which is now (somewhat disputably) owned by SCO.
That is understandable (even if illegal and arguably inethical); there's a dying version of UNIX which no-one seems to be the definite owner of, why not reuse useful snippets from it for the sake of compatibility and efficiency? Well this whole mess is exactly why; when in doubt write your own goddamn code, always.
We should be just as mad at SGI and IBM for being lazy and careless as we are annoyed that a company like SCO exists only to litigate and not do anything useful.
But please do not try and excuse or downplay this behavior. Linux is not going away, and we want justice to always be done because next time it'll be some other company using code from Linux (or one of your projects).
These are not small words like "kissing" that are under dispute, this is not about reusing some very common routines that everyone uses, that's just silly. Rather it's about companies wanting to maintain compatibility with legacy versions of UNIX and doing so by referring directly to the legacy UNIX at best, and plagiarizing their code at worst.
Trying to imply that this is some nonsense that should be dismissed just because you like Linux is like playing down and ridiculing the evidence of the murder of Hans Reiser's wife because you like ReiserFS. It's even sillier in some ways because Linux isn't at stake in the case like ReiserFS was. (An extreme analogy I know, but valid).
Always support justice, always maintain strict ethics when using your code as you would expect others to for your own code. If everyone did that companies like SCO couldn't exist, and more money would go to coders and less to lawyers.
// MD_Update(&m,buf,j);
Darl deliberately drove the company he was supposed to be running into the brick wall that is IBM and funneled money out of the company into his brothers pocket. Linux was just the "angle" of this two man scam.
There was also a lot of stock pumping and dumping going on.
And heres the Magic. Linus learned his style by closely reading Andrew Tanenbaum's books, and reading the Minix code. Which of course is what your supposed to do with Minix. So have most OS coders who had their education back then.
The end result of course is that everyones code ends up looking like Tanenbaums , which is not a bad thing, the guy is up there with the gods in terms of importance to O/S theory.
Excuse the Unicode crap in my posts. That's an apostrophe, and slashdot is busted.
I think Darl's brother is scrambling to cover his backside so that when the disbarments and criminal charges come down, he has a chance to escape.
He posted this info in response to a response to an off-topic response to an interesting and informative blog post. I hardly think that CYA action... It was more like adding important, original source material to a discussion that seems to be marked from both sides by mud-slinging and vague, emotionally charged assertions.
I wanted to reply to several of Mr. Mcbride's responses just to say how glad I was that he wasn't falling for some of the flame-bait a couple people managed to get in the replies. I'm tired of the immature way people on the Linux side have been prone to approaching this whole thing. We get it. SCO is wrong. Mcbride is, by extension wrong. By yelling at him and calling him names, we gain nothing. He has seen the evidence and believes it points toward SCO being right. However, engaging in real, calm discussion, we gain a lot. We got to see (some) of SCO's evidence, and he (and we) got to point out (somewhere in one of the replies) how some code he (and SCO) thought was SCO's was actually BSD originally. It sounds like he's going to actually look into it, and we may have been able to change someone (sorta-kinda-not-really-important-but-could-cause-some-great-thanksgiving-day-table-conversation) else's mind.
And all it took was treating another intelligent person as an intelligent person, instead of hearing "SCO" and immediately turning into an ass.
/rant
Nice of them to skip over the (c) on that file in glibc. Let me paste its beginning here: /*
* Copyright (c) 1982, 1986, 1988, 1993
* The Regents of the University of California. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
(etc)
Sure, they copied all those those blank lines, and in at least one case (tab 247) they also copied the BSD copyright header. Shocking! Funnily enough SCOX removed those lines on both sides. Kind of them.
They also copied strn?casecmp definition (tab 241). For quite astonishing values of "copied":
-SCOX
+RedHat glibc
-38: int strcasecmp();
-39: int strncasecmp();
+53: /* Compare S1 and S2, ignoring case. */ /* Compare no more than N chars of S1 and S2, ignoring case. */
+54: extern int strcasecmp (__const char *__s1, __const char *__s2)
+55: __THROW __attribute_pure__;
+57:
+58: extern int strncasecmp (__const char *__s1, __const char *__s2, size_t __n)
+59: __THROW __attribute_pure__;
This is clearly an extremely grave violation. However, it is interesting to note that SCOX did not complain about the definitions of all the other string functions. Maybe because the header of their file specifies
In addition, portions of such source code were derived from Berkeley
4.3 BSD under license from the Regents of the University of
California.
Presumably the other string functions came from BSD, and ignoring character case was a UNIX improvement that BSD couldn't have thought of by themselves. Right? Right??
Actually, at the time Linus was writing Linux, there was a fully printed generic Minix implementation in the back of a text that was used for teaching purposes on Unix, and it included most if not all of a Unix kernel. On one hand, Linus was admittedly at the same university where it was used and could have obtained it if he wanted, on the other, the author of that source has stated that he didn't copy it and there is no formal accusation, and Linus denies ever seeing the code. There was a grey document several years back that discussed this accusation and there are refutations. I've read through them and I was not convinced either way. The most damning evidence was that Linus cranked out the kernel in a relatively short period of time producing the same interfaces that you see in the Minix book, while the author of the "Unix" blue book took many years to write it. I am NOT saying that Linus didn't write it - in the worst case, he probably saw the example code in the text under academic circumstances and then went home and wrote his own perceptions of what it should do. In the best case, he was unaware of it entirely and brilliantly cranked out a kernel in a short period of time (I have a tough time accepting it, but it is possible). The truth is somewhere in between and we will never know what really happened.
Further reading:
http://www.cs.vu.nl/~ast/brown/
Yes, foo, bar, baz, are the traditional metavariables. Now tell me why we use i,j,k... so often.
...Chuck McBride, a Texas beef farmer and brother to the SCO CEO, has made claims that Linux is responsible for the still-births of two of his calves this year...
Gentoo Linux - another day, another USE flag.
OK, the file called Tab 409, is basically given by SCO in their ELF documentation, they cannot possibly claim that this is illegal copying since all the defines and structs are given by the documentation which scream out: Please implement me!
Anyone who implements ELF will write those lines of code.
"Civis Europaeus sum!"
In a country with fair laws, since .h defines interfaces, and interfaces sould be ok-territory (it sould be OK to create a program with the same interface a different program, and make it exempt from any intelectual property law), then this snip is ok. If your country has horrible laws, and is against the law to have the saem interface (shocket).. but that would be stupid, Imagine if every electric machine use a different interface to take the electricity it need.
So, to me, this means nothing. Show me some .c, and we are walking.
-Woof woof woof!
Too many similarities - some of those tabs *all* variable names are identical, and no new variables, and none removed,. Technically could be coincidence in one our two header files, but not it dozens.
Loop counters, duh.
Wait, was that a trick question?
Every sinle one I looked at the copied values were variable names. It makes no sense to just copy the variable names unless you're providing a compatible public interface. Since this is part of the elf library I imagine this is what they're doing. If so they had no choice but to do it in exactly the same way.
Another file was the header for a kenrel implementation of the strings library. This is based of the ANSI specification.
Every copied line I saw was one of the following:
SCO was blowing smoke.
Why i,j,k and not a,b,c?
Since SCO had a distribution of Linux at one time, I'm more concerned with who put the code in Linux as much as wondering how much is in it. Remember Open Linux 2.3? I still have a copy. This is pre lawsuit. I've been keeping the boxed copy as a buffer against legal challanges. I bought the infringing code from them before they became trolls.
http://linux.omnipotent.net/article.php?article_id=4448
The truth shall set you free!
Foobar is a WW2 acronym for F*%&'d up beyond all recognition. (Typically referring to the military situation (See "The Longest Day").
Now get off my lawn.
Sent from my ASR33 using ASCII
What are you talking about? Look at Jack Thompson. Look at the list of disbarments on the wiki article.
http://en.wikipedia.org/wiki/Disbarment
Presenting a case to the last legal straw has never resulted in a disbarment. He has in fact fulfilled his duty to the justice system by leaving no stone unturned.
Hope isn't going to do it. Say hello to democracy and get involved in changing legislation if you want to ever see that.
I will recommend you switch to using braces for single-line conditions/structures, at least if you're using C. You have no guarantee that any preprocessor macro expansion will remain on one logical line or otherwise not futz the scope of it if you do not explicitly brace it.
This is not an issue in other languages which use parsers made after the 1970s ;)
The truth is that code was reused from a UNIX derivative, which is now (somewhat disputably) owned by SCO.
Did I miss a verdict here?
As far as I know, it is right now only a claim, not yet proven.
And using the terms "truth" and "SCO" in one sentence... well, it just feels wrong.
POSIX (pronounced /pzks/ POZ-iks) or "Portable Operating System Interface [for Unix]" is the name of a family of related standards specified by the IEEE
Its a public standard for operating systems as published by the American Institute for Electrical and Electronic Engineers. Linux is and has for a long time
mentioned that its a POSIX compliant operating system. So when buddy says "see, its kinda similar to Unix n stuff", what he means is that POSIX compliant
operating systems are somewhat similar. ...go figure. When I was in university, I had a Computer Science prof. accuse several students of plagarism. The
program requirements were very small, and the programming language was assembly. They asked "is it possible that there is more than one correct solution
(in mathematical terms, they are asking if the possibility of a tautology exists). He replied, No, there is only one correct solution. He then dropped his complaint. Hello SCO
You SCO guys are as brilliant as a sack of hammers!
...can we not sue Kevin McBride because, as Darl's brother, some of Darl's genetic code was copied into him without our permission?
Or send him a "With Deepest Sympathy" card or something?
Gentoo Linux - another day, another USE flag.
fubar.
snafu. (situation normal, all effed up.)
I'll save you a place on the porch at the old folks home, for when you get here.
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
OF COURSE he is going to write the same commands he has used a thousand times in the same way
I'm sure this is one of the reasons it's best to call the system GNU: Linus didn't write any of the "commands". Linus wrote a kernel and GNU ended up adopting it. The GNU project wrote the system "commands".
Just do the search.
Trivia: Actually, the people at exbiblio found that there is very little repetition of text in literature. Any four or five word sequence in a common magazine article is likely to appear in very few or no other texts. That fact is foundational to their technology.
Presumably this is a holdover from when coding was dominated by applications of linear algebra (I'm thinking here of von Neumann). I imagine the first code for a loop through each element of a matrix was preceded by a thought along the lines of:
"In the direction of i, from 1 to n; in the direction of j, from 1 to m"
Because i used to stand for "incremental".
I clicked on the "damning" evidence linked to.
Once I'd scrolled past the #defines, the prototypes for required API calls, the typedefs for certain structs, etc. I then found nothing else.
Seriously, the submitter should learn how to code and what it means to reimplement existing, public, standard, API's, and then they should have the difference between an *interface* and actual *code* explained to them.
I've looked through the pdfs, and scary red lines which prove nothing aside (OMG, their header files have identically-named functions?? Think about it.), I just don't see plagarism there.
Clicking on these I find a lot of .h files implementing POSIX and BSD standards (here is a choice one that is such an absurd claim of copyright violation that I can't believe they did it: http://www.mcbride-law.com/wp-content/uploads/2010/07/Tab-2421.pdf) Most of the others are not quite that bad.
So you don't waste your time, after quite a lot of clicking I finally found some actual code: http://www.mcbride-law.com/wp-content/uploads/2010/07/Tab-415.pdf
Here we see that they both used the name "elf" to name a pointer to the ELF structure! Why the chances of two programmers deciding to do that must be astronomical!
I stared at this thing for quite awhile trying to match up the code as it certainly is different. Finally figured it out: the Unix code goes to the i'th field in the structure and returns it if and only if the "index" field in it is equal to i. The Linux code instead searches and returns the first field with the index field equal to i, whether or not it is at i. Umm, this seems to be a pretty significant difference!
This is such a load of bullshit that mr Mc Bride should be ashamed.
On another subject, some years back now there was a Slashdot Interview where we were requested to submit questions to SCO. Strangely I don't recall seeing answers to them. I had one regarding the awarding of stock options to several people on the board two days prior to the announcement of the lawsuit. Since they're still dredging all this shit up, I don't suppose they could dredge up their response to those questions and send them along? I'm sure it'd be good for a chuckle...
I'm trying to teach myself to set people on fire with my mind... Is it hot in here?
"I'm not a coder. I couldn't create a kernel if my life depended on it."
Huh?! Do what most armchair kernel programmers do here at /., lie about that fact.
Because in mathematics, i, j and k are traditional notation for, e.g. summations. I can't do formula embedding here but think of the big Sigma: sum for all i, integer i ranges from 0 to infinity, that sort of thing. Fortran is FORmula TRANslation language.
The thing that makes me angriest about this is that SCO's lawyers probably used GNU diff to analyze all that code.
Still, all they came up with were a few single-function definitions that probably couldn't be written any other way. Instead of rejoicing in compatibility and interoperability like any normal F/OSS programmer, the capitalists frown upon it; in their minds nothing can improve upon their "perfect" [30+ year old] code.
That's another thing that's bothering me about this; that code is so very very old that the amount of software rot is almost unthinkable. Can they even truly call it a "product" that they "own" if the damn thing won't even compile? If it won't run, well... then it's just a bunch of meaningless code.
"Ubuntu" - an African word meaning "Slackware is too hard for me."
You only missed a verdict if you haven't looked up for seven years! Recently a jury in Utah confirmed what a judge found in a bench trial: Caldera (later SCO Group) did not get, and was not entitled to get, the UNIX copyrights in the 1995 deal they did with Novell. Unless you think that the jury was unreasonable in that finding (and guess what, SCOG and its lawyers do), SCOG does not 'own' UNIX in any useful sense.
Decompiling binary cannot be copyright violation because they have different copyrights. If you haven't seen the source code with its copyright, but only the derived binary, then you can't infringe the copyright by decompiling to source, even if it happens to come out to identical code.
Much like if you work out the words or chords or guitar tabs, etc of a song you have a copy of you have not committed copyright infringement, but if you copy the released words, chords, guitar tabs, etc, you have.
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.
Please, if you don't have a grasp of the history, don't post stuff that just confuses the issue. Novell bought the entirety of UNIX from AT&T. Caldera did a deal to acquire the UNIX licensing business from Novell. Caldera changed its name to SCO. The courts have decided that the UNIX copyrights still belong to Novell.
I think that this is part of the ELF code. See analysis here: http://www.groklaw.net/articlebasic.php?story=20040722135616439
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.
Actually, that's not true. There is some evidence to suggest you only need a remarkably short string of words to uniquely identify a piece of English prose - it's this kind of thing that cheating-detection algorithms rely on.
But we're talking about a structured programming language - with far more structure and rules than the English language - and the things that are at issue are by and large implementations of existing standards. The final link in TFS is a comparison of ELF utility header files, FFS. They've got to look fairly similar or they won't be any use for dealing with ELF executables! Even then they're sufficiently different that it would probably have been easier to write from scratch than it would be to execute the "copy/paste/obfuscate" cycle that is being alleged.
Yup, this is the right answer. God I feel old today...
IMPLICIT DOUBLE PRECISION (A-H,O-Z)
SCO must really hate *nix to run it into the ground like this. Are we sure they're not somehow a subterfuge branch of MS, or Apple? I smell, well, not necessarily a conspiracy, but certainly a reasonable line of questioning as to their motive. It doesn't seem like genuine patent trolling to me....
These are not small words like "kissing" that are under dispute, this is not about reusing some very common routines that everyone uses, that's just silly. Rather it's about companies wanting to maintain compatibility with legacy versions of UNIX and doing so by referring directly to the legacy UNIX at best, and plagiarizing their code at worst.
Except it's not about that at all. It's about implementing standard interfaces that are defined by POSIX. POSIX defines things down to the variable type so it's natural that the resulting header files will look similar. In fact, some of the differences I'm seeing in these files are from SCO not implementing POSIX properly ex return type int where it should be size_t.
You also need to keep in mind that SCO's predecessor (AT&T) was itself caught copying code from Berkely.
There was exactly one case where there was copying shown between SCO and Linux. In that case the code was from Berkely (licensed open source) copied into SCO and copied into Linux by SGI as one of their internal filesystem driver headers. The code was determined to be non infringing due to it's history but deleted because it was old and reimplemented in a better way elsewhere.
From working with the Linux kernel maintainers I know they take copyright very seriously and investigate even the possibility that code was copied and you owe them an huge apology for that uninformed set of accusations.
Okay. Now I'm really confused. What does Sarah Palin have to do with SCO???
An even better question would be: What does Sarah Palin really have to do with the "tea party" movement?
(Besides the fact that she wants as much air time as possible, I mean...)
("Tea Party Express" sort-of has something to do with the "tea party" movement, but not strongly. Largely, it's a degenerate Republican cheer squad. The rest of the movement embraces fiscal responsibility, not blind adherence to a political party.)
I won't join Slashcott. OTOH, If Beta goes live, I just won't be back until it's fixed. Sorry Dice.
Is that so? Let's see if we take a phrase from your own comment: "a higher incidence of matching phrases". One hit. Not bothering with linking to them all, but how about "rips it from his predecessors"? One hit. "strings that are duplicated between the books"? One hit. "his programming background came directly from Unix"? One hit. "open any dozen books"? One.
I have, of course, duplicated them in this comment, meaning there will be two hits very soon. BTW, these are all the strings I searched for, giving your comment a 100% originality rating (admittedly, I didn't search for "I'm not a coder", which I expect would show up several times).
Duplication of whole sentences in ordinary human language is actually quite uncommon for all but the most trivial declarations and stock phrases ("Just do the search" gives 3 million hits; "Just do the twist" gives 105 000).
For those not logged in who don't see the download url in my sig
Or those who are logged in and block sigs, of course.
It's official. Most of you are morons.
I was under the impression that header files where not copyrightable since they only describe an interface.
where != were
ex:
"Where were you going?"
"The mints were where the toffees were."
In the pdf document, code snippets are compared. But it doesn't make clear in which direction they were copied, if they are copies. The linux snippets have useful comments, the unix snippets don't. In a copying process, isn't it more likely that comments are stripped, rather than have them magically appear?
no, I don't have a sig
As long as the comments going with the code are not copied verbatim, I don't really see an issue.
Atari rules... ermm... ruled.
That's the kind of analogy that Hitler would have made.
If you were blocking sigs, you wouldn't have to read this.
I hate you, so, so much. Please never touch a compiler/interpreter again.
No it didn't.
Variables starting with I through N (INt) were integers in FORTRAN.
If you don't know the answer, keep your mouth shut.
E
I hope they took the other person's then.
Never mix tabs and spaces.
That was probably the only good thing in his coding style...
That's why you use automatic grammar-parsing indentation, allowing you to see with a glance the block structure of the code.
Forget magic. Any technology distinguishable from divine power is insufficiently advanced.
From http://email.gcom.com/home/linux/lis/
Of course LiS does protocol translation - that's what STREAMS is, a framework for doing protocol translation.
As to whether LiS is infringing I couldn't say - I've never seen the SVR4 code to STREAMS.
Watch this Heartland Institute video
You're an idiot and I hate people like you.
So essentially Darl McBride took over a failing company, employed his brother as counsel. Then proceeded to embark on a huge programme of litigation until the company was dead. Thus transferring assets from SCO to his family.
To what extent is this legitimate?
SURELY NOT!!!!!
Interesting. I just figured that it was because i was short for iterator, and if you needed more than one you went with the next letter. Maybe thats part of it as well. I've just always done it since the example code I first looked at when I learned my first language did it that way.
Posted by a Debian GNU/Linux user
It does come across as incredibly desperate, and I'm surprised they even released it. Anyone who's done even a little coding will doubtless look at this and thing variations on the theme of "meh". Maybe it's the kind of thing you can use in court to try and fudge the opinions of judge and jury (although a reasonably competent technical expert would shoot it down in short order), but releasing it to the general public is just going to expose their desperation on a much wider scale (although maybe at this point they feel there's nothing to lose).
typical of the open sores hippies to copy other peoples work
No-one is saying this should just be dismissed because it's Linux. Check out the linked PDF - they are claiming than something is 'copied' that's part of the ELF file format. Most of it is ifdefs and constant declarations, no actual algorithmic code. Calling that copying is like saying one dictionary is copied from another because it contains the same words, whilst ignoring that the definitions are different.
>But we're talking about a structured programming language - with far more structure and rules than the English language
Not to mention a far smaller vocabulary, the complete absense of abstract forms of speech (no metaphors, similes)and in fact of even fundemental sentences.
The vast majority of sentences in a programming language are verb(subject); THAT'S it, a rare few have an "object" (e.g. substr(S1,S2)) but at heart, that's 99% of the lines in a program. Simple commands. There are identifiers, control concepts (loops and conditionals) and structural stuff (classes, functions and the like) but these make up very little of the bulk. The implementation section consists of commands and variables for them to act on.
Thus for the same algorythmic task, barring minor changes in indentation and identifier naming (which will be minor because both are matters on whic standards exist and within organisations some or other standard is usually enforced) the statistical likelihood of two programmers writing and identical solution to the problem is very high. After all, programming is maths and there is only so many ways you can calculate the same equation - which is basically all any algorithm does.
You need a lot more than a few functions with identical structures to prove copyright violation when the scope for individual change is that much more limited. Creativity in programming is VERY rarely coming up with a NEW algorythm for an old task. Nearly always it lies in how we combine algorythms with one another to solve the bigger problems. The bits and pieces of code are like nuts and bolts, every engine has a million of them and they all look pretty much the same.
Unicode killed the ASCII-art *
>In other news: fire is hot, and bears shit in the woods.
Stay tuned for the 11-o-clock news however when there won't be any bears left, or woods for them to shit in.
This is news, it only has to be true till the end of the show.
Unicode killed the ASCII-art *
Because i,j,k, were integers by default in fortran, and IIRC a,b,c were floating point. By using the defaults, you didn't have to explicitly declare them. There were lazy coders in the 60-80's, too.
About libelf - 6 years ago Groklaw closed this "issue": http://www.groklaw.net/articlebasic.php?story=20040722135616439 The varable names are the same in both headers, because they correspond to Tool Interface Standard (TIS) 1.1 (Oct 1993). http://webster.cs.ucr.edu/Page_TechDocs/pfmt11.pdf
And using the terms "truth" and "SCO" in one sentence... well, it just feels wrong.
The why did you do it?
.sig withheld by request
I read the part in Groklaw about discovery in SCO v. IBM. They spent a year in discovery to see if there was similar code and once the infringing code was revealed, the response from the judge was "Is that all ya got?" After some pretty detailed analysis and dissection of the code in court, I think the result amounted to 230 lines of code out of several million.
Since they couldn't find examples of literal copying, SCO really wanted to go after methods and concepts as if that was protected by copyright. And they might have done it if they had been more forthcoming. But they were always late, delaying discovery as much as possible out of fear that any code revealed would be code removed from Linux. In a sense, they wanted a permanent tax on Linux without revealing the code so that it couldn't be removed.
Since you write code and you appear to have greater ethics than SCO, you wouldn't do what SCO did in order to recoup your investment in your code. What SCO did was try to reach something far beyond copyright enforcement in any reasonable sense of what the law actually says. And that was without owning the copyrights.
Having said all that, I can say that I am too, opposed to plagiarism in Linux. But I am also fairly confident that plagiarism isn't a problem in Linux since the code is open for anyone to see, and vetted by hundreds if not thousands of other programmers.
The far more compelling case of copyright infringement will come out in the counterclaims that IBM has against SCO. Right now, that giant is sleeping, but when it wakes, it's going to keep Boise Schiller very busy.
The diversity and expression of human opinion is essential to human survival.
Do lambda functions not count as metaphors?
When our name is on the back of your car, we're behind you all the way!
In other news: fire is hot, and bears shit in the woods.
No no! The Pope shits in the woods, and bears are Catholic!
That's simple enough to fix - put an extra pair of parenthesis around your macros definitions.
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.
It's certainly not copy-paste if the diff is larger than either version.
If ELF is a standard format, it is going to have many "scenes a fair", standard functions, and standard names for calling things. It's as if they declared that using standard English grammar was a violation of their copyrights.
Except that Linus claims never to have seen original Unix code (presumably the copyrighted stuff we are talking about). Tough to copy what you've never seen.
If SCOX really thought it had a case, it would have traced the lines of code back to contributors and diposed them. Or at least a few of them. Or at least Linus.
The fact they didn't is telling.
My favorite example is the RS-232 port, or maybe it should be a USB port now ... how many different ways can you write the explanation of what each pin does, and still write comprehensible English?
The truth is that code was reused (if not copied, exactly, in the same way you don't submit a copied essay which you've taken from a classmate) from a UNIX derivative, which is now (somewhat disputably) owned by SCO.
No, this is not the truth - it is pretty much the exact opposite of "truth".
The truth is that code was reused (if not copied, exactly, in the same way you don't submit a copied essay which you've taken from a classmate) from a UNIX derivative, which is now (somewhat disputably) owned by SCO.
The truth is that SCO does not own the copyrights to UNIX code, as ruled by a judge, a jury and a second judge in Utah.
Beyond that, SCO already turned over all their evidence to IBM several years ago, where it was analyzed by an expert named Dr. Brian W. Kernighan (if the name doesn't ring a bell, you're not qualifed to be commenting on this topic), and he examined the comparisons and came to the conclusion that no illegal copying had taken place. Note, that's not "no copying", but "no illegal copying". UNIX is based on a number of sources. Most famously, they stole (and I use that word advisedly, since they removed copyright notices, which was illegal) from BSD. They also contributed parts of UNIX to public standards, including the ELF standard which is one of the examples shown here.
The problem is that you seem to think there's a single copyright to UNIX. There isn't. The three biggest stakeholders are Novell (inherited from AT&T), the University of Cal. regents (all the BSD code in UNIX), and Sun, but IBM and SGI also own largish chunks. The people you're accusing of being "lazy and careless" actually own parts of the code you're claiming they illegally copied. Do you know who actually owns the parts in question? I don't, but no evidence of illegal copying has been shown in court!
Releasing this thoroughly debunked information at this late date can only be a desperate attempt to spread FUD. Don't fall for it. I'm sorry that you once had your code plagiarized, but this case is nothing like yours.
You also need to keep in mind that SCO's predecessor (AT&T) was itself caught copying code from Berkely.
There was exactly one case where there was copying shown between SCO and Linux. In that case the code was from Berkely (licensed open source) copied into SCO and copied into Linux by SGI as one of their internal filesystem driver headers. The code was determined to be non infringing due to it's history but deleted because it was old and reimplemented in a better way elsewhere.
Hold it, either the code was copied or it wasn't. Unless the file contained the required BSD license and probably at that point advertisement clause it was infringing. If it was copied, then there is no exclusion for history, possibly a lack of responsibility, but definitely not a lack of infringement.
The truth is that code was reused (if not copied, exactly, in the same way you don't submit a copied essay which you've taken from a classmate) from a UNIX derivative, which is now (somewhat disputably) owned by SCO.
Um, citation needed? Nothing in TFA suggests to me any code reuse.
Don't mistake writing for the same API as "code reuse". You seem to have no clue that APIs are not a subject of copyright protection -- either you're badly underinformed, or you're a troll.
If you write for given API, where variable/parameter/function/field names are either part of the API or are a de-facto standard, there is no helping creating structures that look the same, creating same function declarations that look the same, etc.
Again, let there be no mistake: in my opinion, there is no code "reuse" or "plagiarism" in any of the samples TFA refers to. So most of your rant is a waste of steam. The fact that Linux-is-a-UNIX makes certain things look similar, but that's simply because to be a UNIX, you must implement a bunch of APIs, and by necessity functions and structs will have same signatures, and there will be a bunch of C macros that are same as well, perhaps to the letter. When it comes to C macros, sometimes there is only one way to write them correctly, save for whitespace, and function dictates form, to the letter. This does not imply any reuse of code, merely implementing same thing.
What code of yours was plagiarized, again?
A successful API design takes a mixture of software design and pedagogy.
All the essence of SCO's claims can be expressed as http://omploader.org/vNHdubw ;)
Wow... sounds like a really efficient code shop...
You've no idea what you're talking about. The variable names in the PDFs posted sometimes are the same, but when they are the variable names are almost always short (usually one-word) and typically are heavily implied by the use (e.g. Elf *elf. What else would you call it?). Any variable seen in an argument list can be presumed to be an API variable an is likely to be 100% identical to other implementation that referred to the same spec.
I want my Cowboyneal
"Given the size of the source code for Linux, it would be astounding if there weren't some similar snippets."
The amount of source code is completely and utterly irrelevant, its naive to say otherwise.
The comparison must only be made in functionally equivalent modules, libraries.
My thoughts on the SCO fuster cluck at this point:
"If they blew him up, put his head in a blender, and mailed the rest of the pieces to Norway, he'd still return from the grave."
dragonhawk@iname.microsoft.com
I do not like Microsoft. Remove them from my email address.
For some reason I'm imagining a flame carrying a turd between trees.
Confucius say, "Find worm in apple - bad. Find half a worm - worse."
Well, the military acronym is FUBAR, which morphed into FooBar in programming because F00 is a hexadecimal number. There are a lot of military acronyms like that; the B-52 is nicknamed the BUF, short for "Big Ugly Fucker". FUBAR is "fucked up beyond all recognition", and usually these acronyms can be cleaned up; "fouled up beyong all recognition" and "Big Ugly Fellow", for instance.
For a better movie mentioning FUBAR, Saving Private Ryan, where FUBAR is mentioned several times and the guy who speaks French and German thinks "Foo Bar" is a German word he can't find in his dictionary, until someone spells it out for him.
Free Martian Whores!
Thank you for the clarification - I'd thought that Gcom shipped an actual STREAMS implementation, not just an API translator.
Still, just makes my point even further - Kevin claiming that Linux infringes SCOX's copyrights because it "included" STREAMS is just batshit insane.
No, bears are blue. It's the sky that's a Catholic.
Confucius say, "Find worm in apple - bad. Find half a worm - worse."
which is now (somewhat disputably) owned by SCO.
It was just proved yet again to *not* be owned by SCO at all, despite their claims to the contrary.
Basically, SCO tried to plagiarize then entire Unix operating system. I would hope that your are "completely, absolutely opposed" to that behavior.
You appear to have a typo in your article title. As far as I can tell, it should read "Claimed proof that all McBrides are morons".
Obviously, these douche bags have never heard of an interface. That's what a header file is for. It is very generic, and the implementations can vary significantly. This IS NOT proof. Accept fate, SCO - you are DOA!
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.
Well, maybe (uh, Minux), but he pwns it now. Your description reminds me of when John Fogerty's record company unsuccessfully sued him after he left and released more albums. They based the suit on how, allegedly, he sounded similar on his subsequent records to how he sounded on the records owned by his previous record company. They were suing him because his new music sounded too much like John Fogerty.
The Admin and the Engineer
The shock! Here are a couple of lines of code that were BLATANTLY copied from Unix into Linux:
Here's one shocking example:
#include
and another:
return(0);
I can't believe the audacity of Linux developers to just shamelessly steal this code from Unix.
And using the terms "truth" and "SCO" in one sentence... well, it just feels wrong.
Not so. Consider the following counterexample:
"Do not expect any truth from SCO"
Actually, there is an exclusion for history due to the fact that the BSD code is licensed to be Open Source for all, for free. Therefore that code is allowed to be copied due to it's history of being free for use.
http://en.wikibooks.org/wiki/Fortran/Fortran_variables
Because variables beginning with i..n are in teger variables in FORTRAN.
the preceding comment is my own and in no way reflects the opinion of the Joint Chiefs of Staff
God is real, unless you declare it to be an integer.
"OO" stands for "Up"? Close, but no cigar.
FUBAR is the acronym you're looking for.
The origins of FOO are murky at best, but may also have been related to the military.
It's reasonable to assume that FOOBAR is a corruption / combination of the two.
You know - for SCO over the course of this case it was the best of times, it was the worst of times but for the life of me, I can't see your point.
I personally use something like "cc" or "index" for a counting variable (depending on the language). I hate it when programmers use single letters because they're hard to search for.
Slashdot: Where people pretend to be twice as smart as they really are by behaving like children.
Secondly, a lot of code in Linux is created to follow POSIX standards. There is code in SCO Unix and Linux which looks very similar, but the source for the material is the IEEE Posix standard, not SCO Unix source code.
Actually it is even simpler than that. The code in the PDF I saw for for ELF. .h files where. You could tell exactly what each variable in the type def did. It also looked like a lot of my own code when I am having a good day. .h files! they are not functional code blocks just definitions. Of course the definitions for the typedefs of a well documented file format will look a lot alike!
They where all typedefs. Elf is a well documented format and not of the code that shows copying was actual functional code.
As I was reading the code I was thinking just how trivial the example was but also how well written both
Also these are
It is a huge duh but an attorney that knows nothing about programing might not understand that.
If this was an example of the infringement I would say the court did a great job when they tossed it out.
See my blog http://ilovecookes.blogspot.com/ for light hearted technical information.
Ah, that's why COBOL programming examples also use i as counting variable?
Yes and for some reason most programing teachers of a certain age seemed to be old Fortran coders.
My first programing language was Pascal and I took it in 82/83. My teacher was gung ho about structured programing and using long descriptive variable names.
However he learned Fortran back in college so every for loop he showed was used i as the index.
I now write in Java, C++, PHP, Perl, and Objective C... and my loops use i for the index variable even though I know that is bad form.
Habits are hard to break.
See my blog http://ilovecookes.blogspot.com/ for light hearted technical information.
I've got news for ya... DNF contains SCO code.
the preceding comment is my own and in no way reflects the opinion of the Joint Chiefs of Staff
These code samples are ridiculous, obviously. Pointing to the protective #ifdef at the top of a header file? This had to be generated by a diff tool. At that level of granularity any two coders are going to write some matching code when doing similar things, especially when there are standards and protocols they're both following.
But more than that, this demonstrates nicely why I've said before, and will say again, that I don't believe copyright is a good fit for computer code.
1) The information is very functional (as opposed to expressive) in nature. I question whether programs should be considered "works of authorship" within the meaning of U.S.C. Title 17, Chapter 1, Sec 102; it certainly doesn't seem to fit in. (Yes, I'm aware that the law specifically mentions computer programs in its current form; I'm questioning not whether it does, but whether it should.)
2) Arguably entire lines of code are really like words or even just characters in actual English (or other natural-language) works.
Taken together, this seems no different than if, say, GPS manufacturers were to claim copyright infringement over phrases like "in 2 miles", "turn left", "keep right", etc.
To the extent that the resulting program is expressive, you might argue differently... typically we might be talking about games with a cinematic element. Characters and distinct images may be trademarked, the game mechanics are AFAIK nigh on impossible to protect, and if anything the story behind the game could be under copyright.
Comment removed based on user account deletion
Because I, J, K, L, M, or variable names beginnning with them, are integers in Fortran
I am afraid the tradition is much older than that. "i", "j", and "k" are standard subscript variables in math and physics, almost as common as "x", "y", and "z".
"some of the differences I'm seeing in these files are from SCO not implementing POSIX properly"
You really think SCO wrote any of that code?
Get a better programming environment. In VS.Net, you can right click, "Find all References". Which will give you a nice list of every use of a specific variable, or function. There should be not need to do a search for variable names, especially ones with such a small scope such as loop counters.
Anthropic principle: We see the universe the way it is because if it were different we would not be here to see it.
"the people at exbiblio found that there is very little repetition of text in literature"
And in that particular GP is almost certainly wrong, but in spirit what GP is saying is still valid.
There are more constraints making one piece of code look like another, than there are making one piece of literature look like another. (Maybe I'm trying to say there are more things that can vary more freely in literature; I'm kind of struggling for the right word or phrase.)
1) A coder might be trying to conform to patterns, style guidelines, standards, protocols, and (obviously) the basic syntax of the language. Some forms of literature have conventions they follow, but generally an author is motivated to be creative and original in respects that would render software useless.
2) Literature is written in natural languages with massive vocabularies and complex gramaatical structures with countless variations. Computer programs are written in made-up languages most of which consider it a virtue to be compact in their vocabulary and structural rules. (Insert your favorite joke about how huge modern programming languages are getting here, but then reflect on the size of those language compared to English.)
Foobar is a WW2 acronym for F*%&'d up beyond all recognition.
Bull crap.
I was already laughing after reading this 3 word introduction "SCO's ex-CEO's brother, ..."
Because in Fortran IV variable names beginning with i-n (I think) were by default integer values, the rest were by default float. And it wasn't originally standard to declare all of your variables. That came in with Algol.
I think we've pushed this "anyone can grow up to be president" thing too far.
Is it because "i" stands for "integer" and the others follow on from that?
Michael Reed, freelance tech writer.
That's the kind of analogy that Hitler would have made.
"My strength is as the strength of ten men, for I am wired to the eyeballs on espresso."
YES!!
*BOTH* Santa Cruz Operations and Caldera had decent coders, and much of what Caldera coded did end up in Linux. It was licensed under the GPL. (I'm not sure about Santa Cruz Operations. It's code would have been Unix, and possibly BSD licensed, though I'm not sure. But they wrote very good code.)
It's only in the last seven years that SCOx has become a destructive parasite. (Mind you, Caldera was failing because, though they had a business mind set, they didn't understand the FOSS community...to the point where they tried to sell their version of Linux with a per-seat license.)
I think we've pushed this "anyone can grow up to be president" thing too far.
although he did use minix in the early days, he actually did most of his coding based on Design of the Unix Operating System by Maurice Bach.
FUBAR is a WW2 acronym. Foobar is an adaptation.
Did SCO really set out to make themselves look like idiots or did they actually define the strings.h headers and invent the test for null pointers. I would be more surprised if two implementations of the same spec had different return values and function names since at least one would almost certainly not be implementing the spec
I prefer aa, bb, cc, and xx, yy, zz. Easy to search for, and more easily to distinguish visually than i,j,k,l at high resolutions.
For gods' sake--never use tabs ever!
Copying code is not automatically and universally infringing. When the history of the code in question indicates that the code was placed in the public domain, there most certainly is a reason the history of the code is important in determining whether or not there was infringement.
And the particular code that SGI placed in the kernel, that the post you are responding to was talking about, was apparently placed in the public domain:
"Notably, it appears that most or all of the System V code fragments we found had previously been placed in the public domain, meaning it is very doubtful that the SCO Group has any proprietary claim to these code fragments in any case." - http://oss.sgi.com/letter_100103.txt
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.
The code was first copied, correctly.
The copyright notices in the comments, etc were then replaced with AT&T ones, replacing the Berkeley ones (also replacing the earlier AT&T ones, btw.) I can vouch for this personally, having worked on the "vi" source code both at Purdue (original BSD 4.3 code) and at AT&T (System Vr4 code) -- all of the BSD copyrights, as well as the (bad) poetry, had been removed from the comments in the vi sources.
The Folks from the UCB law school took advantage of this in the counter suit, since the AT&T folks, having changed the copyright notices in the troff sources, ended up doing this this then in the printed manuals. So while AT&T was suing about vague things like including code derived from code derived from code they wrote; UC Berkeley countersued about printed, published, paper manuals, where AT&T was clearly publishing them without the UCB copyright and license info. Clear, obvious, game-set-match, paper copyright violations.
So rather than have to find and "Destroy all Copies" of SystemVr4 manuals (including those published in turn by licencees like HP, IBM, etc.) AT&T agreed to drop their initial suit and make the countersuit go away.
- "History shows again and again how nature points out the folly of men" -- Blue Oyster Cult, 'Godzilla'
Usually, the system is using the same structure when it builds the packet. That's why it matches the actual packet. In a technical sense you could put the structure members in whatever order you wanted, but then you'd need to go write code that put them into the order that's in the actual packet ... and that code would be all overhead. It's much simpler to just have the structure match the packet and build it in the right order to begin with.
Scoxq.pk was trading for about $0.03 a share last week, and not it's trading for about $0.09 a share.
http://finance.yahoo.com/echarts?s=SCOXQ.PK+Interactive#chart1:symbol=scoxq.pk;range=5d;indicator=volume;charttype=line;crosshair=on;ohlcvalues=0;logscale=on;source=undefined
That's like the car Hitler's analogy would have driven.
-
- - You can't take something off the Internet! That's like trying to take pee out of a swimming pool.
First a judge declared that scox does not own the code. So scox insisted on jury trial. After a few years, scox got their second bite at the apple, but the jury also ruled against scox. Now scox is appealing the jury's decision.
Assuming you can believe what you read on-line I just learned something, thanks (and shows I don't know FORTRAN nearly as well as I likely should).
Anyway, I always assumed (i)cnremental and j/k neatly followed in the alphabet.
whois gawk date unzip strip find touch finger mount join nice man top fsck grep eject more yes exit umount sleep dump
Hi Godwin :)
Now tell me why we use i,j,k... so often.
I use i for iteration, and the letters after that in alphabet are one logical way to do nested iteration loops.
Except I hardly ever use single letters (sometimes x and y but that's about it), because it's a pain to grep for, and to search-replace. For non-nested loop I usually use ii, and for nested loops it's usually i1, i2, i3...
Ask anyone who was forced to maintain and support those systems even before this SCO vs Novel and SCO vs IBM started.
But what else you could expect from a product (Xenix) created by Microsoft and its later mongoose cousing SCO UNIX.
Anyway, I always assumed (i)cnremental and j/k neatly followed in the alphabet.
That's probably far more common reason than some archaic Fortran convention. Also it could just mean "integer loop variable" without any relation to Fortran, or whatever an individual programmer was thinking when using it. It's just a co-incidence that "integer", "incrementing" and "iteration" start with same letter, and it's not very unlikely co-incidence that many people used it and applied same alphabetical logic to related variables.
For the same reason that we use m and n for matrix row and column indices; x, y, and z for coordinates; p and q for predicates; etc. Formal computer science education traditionally entails a fair bit of mathematics, and mathematicians have been using particular symbols for particular roles for eons. Intent is best communicated when people don't have to pay quite so much attention to the meaning of each and every symbol, and it turns out that these sorts of conventions work equally well for computer scientists as they do for mathematicians.
The question isn't whether they wrote any code, or whether they wrote good code; the question is whether they wrote that code.
I'm questioning the belief that they did, because they claim the infringement is from code they bought rights to (except according to the courts they didn't).
He didn't use foo, bar, baz, qux, quux, quuux, quuuux? I rarely use more than $foo, but old-school hacker types often used those. Those were explicitly taught to me in CS 101, too -- but, luckily, I never made a habit of using them. I prefer annoyinglyLongAndExtremelyVerboseVarialbeNamesEndingWithDataTypeSuchAsString.
God is real, unless explicitly declared as integer.
I've seen cases where me and another person are working on code independently, and when it came time to merge, we had both ended up creating the same variable names, and pretty much the same code.
I took a lot of college classes with my best friend, Aaron. We worked on a lot of projects together and evolved a similar coding style. On one particular assignment, we had to simulate a number of telephones connecting to a switchboard with a number of incoming lines answered by a given number of operators. If you've done a CompSci degree, you've probably done the same project somewhere along the way. We worked independently, although we bounced ideas off each other (which was explicitly allowed as long as we didn't actually share code): "I was thinking about doing $X. How about you?" "Well, that would work, but I think $Y is a better fit." "Oh, good point!"
When it came time to turn in our assignments, we submitted identical code. Same variable names. Same algorithms. Same formatting. Same comments. And we had never looked at each other's work, not even at a glance.
Fortunately, our teacher knew us well enough to believe our explanation, and we were both able to independently explain exactly how our identical implementations worked and why we made the design decisions that we did.
I imagine that a lot of kernel and OS programming is just like that. Given two programmers who've been working on the same common codebases and used to the same formatting, bracket placement, variable naming standards, etc., it's very easy to imagine them producing line-for-line identical implementations without even knowing that each other's work existed.
Dewey, what part of this looks like authorities should be involved?
"You can either cut their heads off, or burn 'em. They go up pretty easy..." -- _The Original Night of the Living Dead_
- "History shows again and again how nature points out the folly of men" -- Blue Oyster Cult, 'Godzilla'
I C
"The idea that this is proof that Linux violated any Unix copyrights is totally absurd."
Since we're dealing with SCO here, I think instead of "totally absurd" you meant to say "patently ridiculous".
FTFY!
http://www.groklaw.net/article.php?story=20100627122353935
http://www.groklaw.net/pdf/iowa/www.iowaconsumercase.org/011607/8000/PX08593.pdf
But now, thanks to a volunteer working on doing the exhibits in the Comes v. Microsoft antitrust litigation as text, we find an email thread in Exhibit 8953 [PDF] where Microsoft employees, including the managing director of Microsoft in India at the time, mention SCO in a discussion about heading off the Linux threat in India. The emails are dated September 11, 2002. Given the date, I believe this opens up the question of Microsoft's involvement once again.
This is why the statement:
is my friend. :-)
I still write new Fortran 77 code on occasion, and I tend to use things like LOOOP or LOOP1, LOOP2, etc. for loop counters. Or something like COUNT. Or PAGE. Or something else meaningful.
I, J, K, etc., are good for use in DEFINE statements and such, tho. :-)
Mainframe/UNIX Bit Twiddler and long time Windows/Linux Hobbyist.
The Theorem Theorem: If If, Then Then.
"God is real - unless declared integer" - following the FORTRAN naming rule.
You do know that v 0.01 of Linux was about 10,000 lines right?
That should be about a three to six month project for a CS major.
Work bio at MMWD
Foo predates WWII by a few years, but the military certainly took it and ran. The British radar operators referred to false returns as "Foo Fighters." While i knew that, i did not know that the night fighter squadrons would refer to UFO's as foo fighters as well. (UFO in it's specific definition, not implying flying saucers.) FooBAR then is a backronym for F'd Beyond All Recognition.
Thus sayeth the wikipedia.
If brevity is the soul of wit, then how does one explain Twitter?
In grad school, I took a class from a professor who couldn't keep his is and js straight, it was pretty much a disaster in class. We listened to his explanations but wouldn't use any formulae unless we looked them up in a book first.
..far too late to be doing this...
But LiS doesn't contain STREAMS code - STREAMS code wouldn't work directly under linux.
I now write in Java, C++, PHP, Perl, and Objective C... and my loops use i for the index variable even though I know that is bad form.
No it isn't. Everybody (by which I mean all programmers) knows that i is the standard loop iterator. It would be more confusing not to use i.
All I want is a secure system where it's easy to do anything I want. Is that too much to ask ~~ Randall Munroe
That's what IMPLICIT NONE is for.
Of course not - what do you think "one true tab" means?
Using spaces for indents is a mess - especially when you go to cut-n-paste code.
Of course it's insane. We've had 7 years of insanity - why should it suddenly stop now?
The latest speculation is that insiders suspect SCO will be in Chapter 7, and it's time to start making with the "plausible deniability" game because the creditors will be getting a closer look at SCO's internals.
There are many that do not agree with you. If for no other reason that it is hard to search for a single char and not get a bunch of bad useless hits.
But then again I still use it way too often.
See my blog http://ilovecookes.blogspot.com/ for light hearted technical information.
When I took typing class (back in the days of manual Underwoods with typewriter ribbons, etc) we were taught that proper tabstops were fixed every 8 spaces, margins were at 8 and 72, you started an inch from the top, and ended an inch from the bottom. Anything else got you a "do it over again."
Later on, electric typewriters like the IBM Selectric let you set and clear individual tab stops, but mostly nobody bothered except for tables. Still later, text and code editors that were WordStar-compatible maintained the "tab-stop every 8 columns" rule. It's only when people started drag-n-dropping their code that tabs got all weird. Why? Because people wanted to treat code editors like Word.
A real tab character is not n spaces, where n=enough spaces to get to the next tabstop. If people are implementing a "soft tab" as the equivalent of a keyboard macro that spaces n spaces, regardless of distance, they don't know what they're doing. It's not a tab.
A tab is a specific character in the ASCII set = #9. An ASCII 9 followed by an ASCII 8 should by definition put you in the same column you started from. That only works for real tabs, not "set tab=n spaces".
Using leading tabs also makes it easier to write tools to parse code - and code that writes code is the happiest code in the world :-)
Braces where needed, but not necessarily braces, and tabs because a tab is a tab is a tab. The code is visually much cleaner, and takes up less vertical space.
I,J,K also work pretty good as array indexes because they are the unit vectors for X,Y,Z. So physicists were mostly ok with leaving them as is.
I through N were chosen for integer variables in FORTRAN precisely because they are the first letters of integer, which made them easy to remember. Also, FORTRAN source back in the day was on 80-column punched cards, so short variable names were a necessity. It wasn't like COBOL with MINIMUMCUSTOMERBALANCE. In FORTRAN that would be MCB or some such. That said, there were no professional programmers when FORTRAN appeared. Many people writing it had a math background, so i/j matrix notation was common knowledge.
Intron: the portion of DNA which expresses nothing useful.
LiS is (or was, when the project was still alive) a full STREAMS implementation, including STREAMS head, pushable modules and multiplexers, and STREAMS drivers. So the GP is wrong. Being one of the major contributers to LiS, I should know.
And we were quite surprised to find out that Caldera started distributing LiS as part of their Linux distribution, as we had never heard from them. But they published the sources as the license demanded, so we could see what changes they had made. And it turned out that they took an old version of LiS, and fixed a number of bugs that we had already fixed. So they could have saved a lot of work if they had simply contacted the community instead of taking an old version of the code and fixing bugs that were already fixed. None of their changes made it back into the official release, as they were all bugs that were already fixed.
Caldera needed STREAMS in the Linux kernel because of their port of Netware 3 to Linux (Netware is/was based on STREAMS) and the port needed a full STREAMS implementation.
Some time later the kernel syscall numbers changed, which made the old LiS incompatible with the new Linux kernel. This was fixed in the community in a matter of days. But Caldera was about to drop their Netware port because of the problem. At that time I worked for a Novell Gold Authorised reseller, who really believed in this Netware port. So we contacted Caldera, offering them to fix their problem free of charge, and informing them that we could do this without needing access to any proprietary code. Caldera never bothered to even reply, and shortly after they dropped both their Netware port and LiS.
Being a contributer to the LiS project I have written major parts of the code, including most of the DPLI, TLI, autopush and auto-load code. And I have never seen the source for another STREAMS implementation. This is no problem, because all STREAMS interfaces are specified in detail in publicly available sources.
So just like almost all the other "evidence" of infringement shown here, their "evidence" for copyright infringement from Linux STREAMS are similarities arising from the publicly available standards saying that things must be done in a certain way.
Which led to the old joke...
GOD is real...unless declared integer.
You know Slashdot has a sig field right? So why don't you use it? Everyone else is smart enough.
A real tab character is not n spaces, where n=enough spaces to get to the next tabstop. If people are implementing a "soft tab" as the equivalent of a keyboard macro that spaces n spaces, regardless of distance, they don't know what they're doing. It's not a tab.
There are in fact editors that convert tabs immediately to spaces. I can think of two different conventions here, and I've seen them both. One editor converts tabs to n spaces immediately moving you to the next tab stop. The other converts tab to n spaces where n is a fixed number (configurable, defaulting to 4 or 8, I forget).
The third method, which you allude to as your preferred method is to insert ASCII 9. That's all fine, but you still have the issue of how to display it. And either one of the two options above could be chosen (personally, I think that jumping to a tab-stop makes the most sense, and when I saw the other behavior - jumping ahead a fixed number of spaces, it seemed very non-intuitive.)
I have also seen the concept where an ASCII 9 is inserted, but then if backspace is entered, it will back you up only one space. So tab-tab-tab-backspace would take you one space to the left of the 3rd tab stop. This is actually the behavior that emulates an old typewriter, and is useful for "decimal tab stops" and "right justification tab stops". So, while it seems like odd behavior when considering how the file is stored, it actually best emulates the original tab intent. (The way this is implemented is that tab-tab-tab-backspace with tab stops every 8 positions would be stored as ASCII 9, ASCII 9, SPACE, SPACE, SPACE, SPACE, SPACE, SPACE, SPACE. The last tab is converted when you press backspace to be the right number of spaces, and then one is removed.)
Life would be simpler if a committee decided on one convention, but that's not how things are. There are many editors out there, and you can't guarantee what editor will be used to open your source code. The safest answer then is to avoid tabs!
Those editors, by definition, are wrong. Pressing a tab should insert a char(8) at the current position. Anything else is, by definition, not inserting a tab.
scumbag lawyer? ... I believe they are more commonly known as "Bloodsucking Lawyers". :)
Yeah, cc is common for me. I use "index" in ruby and javascript, because it describes exactly what the variable is. In C, though, I will use 'cc' or 'xx'.
Slashdot: Where people pretend to be twice as smart as they really are by behaving like children.
)
found this in your backyard
I'm not trying to dissociate her from the tea party movement because I'm a lefty who believes she has "killed [and] eaten... babies [and] loved ones". Rather, I'm a republican* who wishes to avoid the tarnish her ilk bring to the party. A "vacuous" political figure isn't harmless, but is a puppet (at best). Her seemingly desirable qualities do not include the abilities to lead nor to be taken seriously.
*(only because it is the least bad choice available to me)
I won't join Slashcott. OTOH, If Beta goes live, I just won't be back until it's fixed. Sorry Dice.
Wasn't this crap settled already?
Can't we get a C & D on these buggers who keep dredging this crap up?
Of course LiS doesn't contain STREAMS code - LiS is STREAMS. its writers claim it doesn't contain AT&T code, and I believe them - but there is no technical reason LiS couldn't be a copy of the SYSV code, it's just that nobody but a fool would bother - STREAMS is rather simple and quite well documented.
Watch this Heartland Institute video
In an environment where there is not an enforced indentation style, people don't all use the same ones (which, as you described things, was your case), so someone will use spaces.
So if you merge your code into that codebase, it should use spaces as well, so as not to mix tabs and spaces.
The fact that you think that your code is self-contained and a bit apart from the rest is irrelevant, because someone is eventually going to edit your code.
On the contrary - since others are going to use it (and everyone who doesn't use a hard tab to indent has their own display preferences), it's preferable to use only hard tabs in code that others are going to edit. Most editors can be configured to display hard tabs as "n" spaces, without losing the hard tab in the actual file, so people who want 4-space indents get it, ditto those who want 2, or 5, or whatever - onscreen.
The worst are the people who insist on listing all their parameters, one on a line, and they all have to line up under the first - this is totally retarded when I see code with 15 lines for parameters, all indented around column 90. Fix your damn code. First, there's no excuse to be that deeply indented. Second, there's no excuse to need that many parameters. Never. Again, fix your damn code.
Second-worst are those who insist that everything has to line up nicely in a certain column and that's why it has to be exactly "n" spaces for a tab, so they force 4 spaces on people who want 2, or 8, or vice versa. Use hard tabs, let the individual coder set his screen preferences, but don't worry if your #defines don't all line up nicely - the compiler doesn't care, and if it's that important to you, make each #define into 2 lines - one for the #define foo \ with the backslash line continuation character, the second with the actual define, and as many tabs as you want to satisfy your inner child.
Third-worse are the K&R gang - even 20 years ago it was stupid, ugly, and a waste of keystrokes.
And then there's the java weiners - because their code usually has methodNamesThatAreTooLongForAnyoneToFitEverythingOnOneLineIfWeUseHardTabs, instead of fixing the language, they use 2 or 4 tabs to fit it on the available screen real estate.
Hard tabs also make it easy to write code that generates code, or manipulates generated code.
It's not a case of "get off my lawn", but overall simplicity, flexibility, and efficiency. Hard tabs win on all 3 counts.
Why are they still trying to sue the main people around Linux? It just costs them money, with nothing in return...
I am not devoid of humor.
Fucked OOp Beyond All Recognition?
> Because I, J, K, L, M, or variable names beginnning with them, are integers in Fortran. Otherwise variables are floating point,
This is the fortran default. The programmer is free to declare his/her variable names and their types butin the end, loop index variables don't
always need long_self_documenting_names
My Heart Is A Flower
McBride?
What makes this guy 'expert' on this? Nothing as far as I can see, just more of the same bogus stories his brother stated repeatedly. And the courts disagree, end of story. Groklaw? Please.. We are not so dumb as we look. You on the other hand post a different appearance....
Go away, do something productive, have a nice life. Your 1/2 second of fame is up.
PK
Actually a claim, mostly disproven. The court pruned the list of potentially-infringing code down to a few hundred lines, but didn't issue a final ruling in the IBM case yet. The Novell case, however, established that SCO doesn't own the copyrights, and that their claims against IBM are waived.
So:
-SCO doesn't own any of the code
-Even if they did own the code, at most a few hundred lines are infringed
-Even if they owned the code and some lines of it were infringed, all claims against IBM are waived by Novell and the Court has affirmed their right to do so.
FUBAR F***ed Up Beyond All Recognition
You know Slashdot has a sig field right? So why don't you use it? Everyone else is smart enough.
Okay, what the hell I'll bite. You mean the .sig field currently holding my, ah, signature? That .sig field?
or some other .sig field follies?
Pug
An Invisible Entity of Vast Power whose existence must be taken on faith alone: Liberal Media
As AC points out, I WAS talking in my first reply about whether or not SCOG could be said to own the code, not on the fact of copying or derivation from anywhere.
I'd add another point to your list of So:
-Even if they owned the code and even if some lines of it were infringed and even if Novell's waiver doesn't hold, SCOG went on distributing *the same code* under the GPL for years after they started suing folk (IBM, Novell, Autozone, RedHat...).
I've got a licence for the Linux kernel from Caldera/SCOG already. As SCOG's lawyer said in his summing up for the jury trial in Utah, SCOSource is gone and it can't be resurrected.
http://www.groklaw.net/article.php?story=20100326184700459
You create your first variable to increment something, is it odd to use the first letter of the word increment? You then create another variable to do the same thing, would it be odd that your NEXT variable would use the NEXT letter in the alphabet and so on?
I think that everything in your comment indicates that the GP is actually invalid in spirit. That post indicated a belief that code is commonly copied and pasted.
If programmers try to conform to patterns (etc.) you'll see more instances where they write similar looking code but do not copy and paste.
If programmers try to accomplish similar tasks using compact vocabularies and operators, again, they're more likely to write similar looking code without copying and pasting.
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.
Linus Torvalds started linux; out of the current code he authored a few percent. Linux is now massive, and this is a pretty large amount of it for one guy to have written, but his main job these days is on managing code submissions from others. This case is really unrelated to Torvalds; if submitted code was plagiarized he wouldn't have been responsible or known about it, and it's really fairly unrelated to Linux; if SCO were to have succeeded Linux wouldn't disappear, but certain companies like IBM, SGI, etc, would have needed to pay some cash and redo some code.
Torvalds is not on trial here.
Also, as a guy who had his own code plagiarized, I am very wary of special pleading to try and excuse such behavior. We need to look at the facts of the case; we can still use Linux (I do) and at the same time be completely, absolutely opposed to it being tainted with plagiarized code.
The truth is that code was reused (if not copied, exactly, in the same way you don't submit a copied essay which you've taken from a classmate) from a UNIX derivative, which is now (somewhat disputably) owned by SCO.
That is understandable (even if illegal and arguably inethical); there's a dying version of UNIX which no-one seems to be the definite owner of, why not reuse useful snippets from it for the sake of compatibility and efficiency? Well this whole mess is exactly why; when in doubt write your own goddamn code, always.
We should be just as mad at SGI and IBM for being lazy and careless as we are annoyed that a company like SCO exists only to litigate and not do anything useful.
But please do not try and excuse or downplay this behavior. Linux is not going away, and we want justice to always be done because next time it'll be some other company using code from Linux (or one of your projects).
These are not small words like "kissing" that are under dispute, this is not about reusing some very common routines that everyone uses, that's just silly. Rather it's about companies wanting to maintain compatibility with legacy versions of UNIX and doing so by referring directly to the legacy UNIX at best, and plagiarizing their code at worst.
Trying to imply that this is some nonsense that should be dismissed just because you like Linux is like playing down and ridiculing the evidence of the murder of Hans Reiser's wife because you like ReiserFS. It's even sillier in some ways because Linux isn't at stake in the case like ReiserFS was. (An extreme analogy I know, but valid).
Always support justice, always maintain strict ethics when using your code as you would expect others to for your own code. If everyone did that companies like SCO couldn't exist, and more money would go to coders and less to lawyers.
I'm afraid this isn't the strong case you're making it out to be. I can see from somebody who isn't familiar with standards how similar comments and identical function names could perhaps be considered copying. However, much of the code here is either directly taken from BSD or the headers are shared/copied on person for the sake of a standardized ELF implementation. Read more on ELF, but the gist is that IBM and a bunch of other UNIX vendors openly wanted a standard binary format to be shared across platforms so that it could be understood and linked in a conventional way. Now of course McBride is making some silly argument about how ELF wasn't IBM's to open for council, but there's a pretty le
gah, that's supposed to say "on purpose" not "on person".
Personally, I thought 'i' stood for 'index', but 'I' guess it doesn't really matter...
The CB App. What's your 20?
I'd use those variables in LISP if I had to. I always wanted to know the cdddddaddr of quuuuuux.
The CB App. What's your 20?