Oracle/Google jury finds Google infringed SSO but hangs on fair use
groklaw.net
groklaw.net
The rangeCheck method in TimSort.java and ComparableTimSort.Java YES, infringing....
This sort of trial should be conducted in the modern style of civil law countries, but that would require a constitutional amendment.
That's what the lawyers are there for: to present the evidence and make the case (based on the testimony of experts) to a jury who doesn't get it.
I think there are arguments to be made in support of changing how we use juries in the courts, but this isn't one of them. I mean, this argument applies to just about every case that uses a jury, and it's simply not feasible to expect that jurors be knowledgeable in all the areas that a given case touches upon.
None of this applies to programming, which bears only the most tenuous of relationships to anything most people will learn or use in their lives.
What is harder to grasp is that programming is an intersection of math with cooking. And cookbook recipes are copyrightable, while math is not.
And so the burden lies on the lawyer to describe the relationship between an algorithm and the math behind it. That isn't necessarily hard, but requires creativity and time, plus you have to take into account the short attention span of most people, so you've got to pick your battles. And I guess Google's lawyer did a bad job here.
Are you sure about that?
http://www.copyright.gov/fls/fl122.html
The parts which make it a recipe are not copyrightable. That is analogous to comments in source code, I think...
private static void rangeCheck(int arrayLen, int fromIndex, int toIndex) {
if (fromIndex > toIndex)
throw new IllegalArgumentException("fromIndex(" + fromIndex +
") > toIndex(" + toIndex+")");
if (fromIndex < 0)
throw new ArrayIndexOutOfBoundsException(fromIndex);
if (toIndex > arrayLen)
throw new ArrayIndexOutOfBoundsException(toIndex);
}
From Google:private static void rangeCheck(int arrayLen, int fromIndex, int toIndex) {
if (fromIndex > toIndex)
throw new IllegalArgumentException("fromIndex(" + fromIndex +
") > toIndex(" + toIndex+")");
if (fromIndex < 0)
throw new ArrayIndexOutOfBoundsException(fromIndex);
if (toIndex > arrayLen)
throw new ArrayIndexOutOfBoundsException(toIndex);
}
}Open and shut case. /s
Q. The rangecheck function: Did you copy the Sun code while working on Android?
A. I did that while working on Timsort, and it was during the period I was employed at Google, but not for Google. It was something I wrote on my own for OpenJDK.
[I had not heard of Timsort before; it's (apparently) a very efficient sort written by Tim Peters for Python (see Wikipedia), and ported by Bloch to Java.]
[Timsort will come up again later. I'm somewhat appalled by how much fuss is being made over the trivial "rangecheck" function.]
Q. Why did you copy the rangecheck function for Timsort?
A. It's good engineering to reuse the same function if possible [The context here was that he expected to fold Timsort into a public version of Java, and at that point it would make sense to call the existing rangecheck function from the new code rather than writing a different one.]
The takeaway is write it yourself - don't copy it without permission, even if it's so obvious. (And if it's so obvious then there really is hardly a reason to even copy it in the first place.)
(ignoring that the guy seems to have said he copy-pasted here.)
The OpenJDK is GPL'd after all, and well, an argument could be made that Google are infringing by distributing GPLd rangeCheck with the Apache license, Oracle aren't doing that afaik.
This is all pretty fucked up, but that's what the law is.
http://hg.openjdk.java.net/jdk7/jdk7/jdk/annotate/37a05a11f2...
It also states that Josh Bloch is one of the authors. You maybe right that he may have done this as not a work for hire, or even that he may still own copyrights for this code (I don't know what the contributors agreement said at that time), but Google didn't even contest it in court.