Search This Blog

Wednesday, April 25, 2012

Oracle, Java and "Don't Be Evil"

I've been following the Oracle/Google trial over the Java implementation Google used in its Android software: Dalvik.

Basically the trial boils down to this: Google decided that in order to build Android it needed Java.  There were issues with licensing Java from Sun to Google decided to build its own Java implementation.  Subsequently Larry Elison's Oracle purchased Sun and sued Google for stealing its intellectual property.

So there are a couple of tricky aspects to this.

First, what does "build your own Java" mean?

Java is a language defined by specifications and API's.  An API describes the what's typically called a class or package.  Say I have a class describing geometric objects.  They might have attributes like height and width.

Now I might use those geometric objects on a screen and when I do it means something to set the height or width to a new value, e.g., the object's size changes in some way.

The details of how that actually works are implemented by code inside the class and not visible outside the API or interface.

So if you want to make your own class for geometric objects you can look at the Java API and create your own implementation of how that class works.

Now Oracle's lawyer is asking an interesting question:  Does Google think that the API itself - the description of the class - is a publicly available resource, i.e., not the property of Oracle.

Typically computer languages have some sort of manual or BNF (syntax description) that describes the language and what its statements mean.  So for example you might see this:

   IF Statement

       'if' '(' expression ')' 'then' statement [ 'else' statement ]

What this says is the for an "if" statement you have an if followed by an expression.  Typically the expression evaluates to a "True" or "False" value and subsequently the statement after either the "then" or "else" is executed.

Now in general computer languages are considered to be, at least by geeks, in the "public domain" in the sense that someone can pick up the manual and create their own implementation of that language.

The reason of this is that while the manual containing the description of the language is protected by a copyright the implementation of a program to process that language written by someone looking at the manual is not so long as they don't use copywritten material in the program they write.

This last underlined part is important.

Now many computer languages of the past are basically just like this in terms of their description.

But Java is a bit different.

In addition to the parts describing the language itself there is also a notion of classes that are "part" of Java - in other words Java is more than just a language - it also includes classes to do specific things.

An example of a Java class might be:

  public class ExampleClass {

    private String fred;

    public void setfred(String s) {
      fred = s;
    }
  }

Now this code doesn't do much but it shows how to define a class, in this case ExampleClass.

If you go to Oracle's site (here for example) you will see a fantastically complex set of classes to support Java.  Now each of these classes has specific class names, routines, and so on.

Now at the trial Google freely admits that it used the names of Oracle's classes in its version of Java - not Oracle's Java implementation - but its class names.

Now at the bottom of each and every Java documentation page on Oracle's site you see this:

Copyright © 2009-2011, Oracle Corporation and/or its affiliates. All Rights Reserved.

Seems pretty plain that Oracle thinks this stuff is its property and that its covered by a copyright.

In addition there is a License link right next to the copyright notice.  The first thing that it says is this:

License for Evaluation Purposes. Sun hereby grants you a 
fully-paid, non-exclusive, non-transferable, worldwide, limited
license (without the right to sublicense), under Sun's 
applicable intellectual property rights to view, download, use and
reproduce the Specification only for the purpose of internal evaluation.
 
(The underline is mine.)

Seems pretty clear that you cannot use this specification to write your own Java and distribute it around the world in your Android cellphone software package.

Now at the trial according to this Wired story the follow exchange occurred:

... 

Schmidt said that Google had planned to use Java from the start of the Android project, but he also said that he didn’t agree with the vocabulary Boies used in describing the Java programming language and platform.

An interface is a specification. A name,” Schmidt said curtly. “There’s a collection of those names that forms the standard that Java uses. We, Google, implemented those interfaces in our own way.”

“Just to be clear,” Boies responded, “you copied the 37 Sun Java API specifications?”

“We used the interface names, which is how one does this, and then did our own implementation of those services,” Schmidt said.

“Are you saying is that the only thing you copied was the names?” Boies asked. And Schmidt said “yes.”


...

Here Google's Eric Schmidt admits that Google took the various class names (routines, classes, and so on) - presumably from Oracle's copywritten web pages - and created their own virtual Java machine Davlik.

Now to my mind this is like copying a story from a book, changing just the names of all the characters, and claiming its not a copy of the original story but your own original story.

The very essence of Java is this class library.  Now Google did not create a new, equivalent class library of their own making with original names and original classes.

And I think Google might have a problem here.

While Google did not use any proprietary Oracle property they did, apparently, copy all of the class names and so forth which are covered by copyright.

Normally in the world of computer geeks its a complement that someone likes the computer language you designed so much that they copy it.  But these days, and particularly with Oracle, copyright is more in vogue than the "coolness" of creating a language everybody wants to use.

Of course this will all come down to a jury decision - which will likely be an non-technical decision because most juries are not technical folks.

But I think Google may have run afoul of Oracle here and I don't see how they can claim otherwise.

But who knows...

This is why I personally don't like Eric Schmidt or the way Google does things.  Its "don't be evil" policy does not seem to require anyone to be careful and dot all their i's and cross all their t's before launching a major cellphone platform for the whole world to use using someone else's intellectual property.


No comments:

Post a Comment