

Oracle loses on fair use; Only rangeCheck left (w/o new trial) - fpgeek
http://www.theverge.com/android/2012/5/9/3010404/judge-denies-oracles-motion-for-ruling-on-fair-use-says-new-trial

======
lbrandy
These infamous lines are certain to get copied quite a bit more. In case you
haven't seen them:

    
    
      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);
      }

~~~
BlackAura
Just a bit of background:

Those lines of code are from OpenJDK's TimSort implementation. It was written
by Joshua Bloch, who was actually working for Google at the time, and
contributed to OpenJDK. He later re-used the same code for Android's
implementation of this same function.

In order for this to be a copyright violation, Bloch would have had to assign
exclusive ownership over the code to Oracle.

Quoting from the relevant section of the Oracle Contributor Agreement:

"You hereby assign to us joint ownership", and "grant to us a perpetual,
irrevocable, non-exclusive, worldwide, no-charge, royalty-free, unrestricted
license to exercise all rights under those copyrights". However, "each of us
can do all things in relation to your contribution as if each of us were the
sole owners".

So, Bloch still owns this the copyright in this code, and is free to do
whatever he wants with it. All he did was grant Oracle the same rights to that
code that he has, so that Oracle can do whatever they want with it as well.

So, _not_ copyright infringement. Oracle's own contributor agreement makes
that very clear.

Edit: Added references

List of signatories of the Oracle Contributor Agreement (Google cache, because
the main site is down at the moment):

[http://webcache.googleusercontent.com/search?q=cache:6zsMkHa...](http://webcache.googleusercontent.com/search?q=cache:6zsMkHaeV9kJ:sca.java.net/CA_signatories.htm+&cd=1&hl=en&ct=clnk&client=firefox-a)

<http://sca.java.net/CA_signatories.htm>

Oracle Contributor Agreement:

<http://www.oracle.com/technetwork/oca-405177.pdf>

~~~
peeters
I don't think you have the facts right (and your citations only back up your
logic, not your premises). If it were true, you don't think the lawyers would
have maybe mentioned this in court?

Bloch _used_ the function in the course of implementing TimSort, but copied it
directly from Sun's version of the Arrays class (it existed long before Bloch
worked for Google). And the reason he did that was because he thought TimSort
was going to be contributed and added to Arrays, where it would have direct
access (and the copying would at that point be removed). That never happened,
which lead to this count of infringement.

It's absolutely ridiculous though. Even though they infringed the damages for
that infringement should be about $100, which is the maximum amount you'd have
to spend to reproduce that in a clean room. Reimplementations of that method
would look pretty much byte-code identical so Oracle really has no basis for
seeking anything more than trivial damages.

~~~
BlackAura
I just went and did some more digging around. Looks like you're right - the
method in question was present in OpenJDK's java.util.Arrays first, and seems
to have been copied into the TimSort implementation.

------
gvb
Very important note that tends to be overlooked:

"[Judge Alsup] has yet to decide on the overall copyrightability of the
structure, sequence, and organization of the 37 Java APIs themselves. Ruling
that the APIs are not covered would render today's decision entirely
meaningless, essentially throwing away the jury's earlier finding of
infringement on the SSO issue."

The judge instructed the jury to assume the API is copyrightable when they
determined whether Google violated that (assumed) copyright. The actual ruling
whether the API is copyrightable will be decided by the judge as a matter of
law.

~~~
Tobu
I disagree with that analysis. The Judge asked the jury to decide fair use
assuming API copyrightability because he had them at hand, and it was an
opportunity to make his eventual ruling more appeal-proof. Finding APIs
copyrightable rather than purely functional would create new barriers to
interoperability, which would be a little more important than having part of a
jury's verdict moot.

------
SlipperySlope
I hope that Judge Alsup rules that APIs are not subject to copyright, as the
EU has already ruled.

It certainly would be in the public interest to do so!!

But supposing that the Judge rules that APIs are subject to copyright, I
expect that a developer boycott of Oracle would soon follow, together with a
push to get the US Congress to change copyright law.

~~~
guelo
Only Hollywood gets to change copyright law,

~~~
fpgeek
This may have already been decided (in the direction of APIs not being
copyrighted) by Lotus v Borland:

[http://madisonian.net/2012/05/09/oracle-v-google-digging-
dee...](http://madisonian.net/2012/05/09/oracle-v-google-digging-deeper/)

Note that this a blog post by a _very_ respected IP law expert (cited by the
Supreme Court in recent decisions). One detail I find particularly interesting
is that, unlike most common summaries which focus on the UI issues, he points
out that there was also an API issue at stake in Lotus v Borland: the menu
structure was effectively part of the macro programming API.

------
tzs
It's not accurate to say Oracle lost on fair use. What they lost on was their
motion to have the judge rule on fair use as a matter of law.

~~~
guelo
Oh, that makes more sense I couldn't parse the article. So without a ruling
then it has to be retried by a jury.

~~~
Natsu
Alternatively, the judge can rule that APIs are not copyrightable, making the
issue of fair use moot. I personally believe that this is what will happen,
but it remains to be seen.

------
elithrar
Also, for some context (via
<http://www.groklaw.net/article.php?story=2012050909451990>)

> Google has filed a motion [PDF] for a new trial on both question 1a and 1b,
> arguing that they are indivisible and that Google has rights under the
> Seventh Amendment for a new trial on both sides of that same coin:

>> "Under settled Supreme Court and Ninth Circuit law, the jury's failure to
reach a verdict concerning both halves of this indivisible question requires a
new trial concerning both questions. To accept the infringement verdict as
binding on the parties and retry only fair use would violate both the
unanimity requirement and the Reexamination Clause of the Seventh Amendment."

~~~
fpgeek
Good point. We know that a retrial is necessary to find any infringement
beyond rangeCheck. We don't know what the parameters of that possible retrial
would be.

