« | Home | Recent Comments | Categories | »

Oracle’s Java API code protected by copyright, appeals court rules

Posted on May 10th, 2014 at 15:48 by John Sinteur in category: Intellectual Property -- Write a comment

[Quote]:

A federal appeals court on Friday reversed a federal judge’s ruling that Oracle’s Java API’s were not protected by copyright.

The debacle started when Google copied certain elements—names, declaration, and header lines—of the Java APIs in Android, and Oracle sued. A judge largely sided with Google in 2012, saying that the code in question could not be copyrighted.

“Because we conclude that the declaring code and the structure, sequence, and organization of the API packages are entitled to copyright protection, we reverse the district court’s copyrightability determination with instructions to reinstate the jury’s infringement finding as to the 37 Java packages,” the US Appeals Court for the Federal Circuit ruled Friday.

Google, which said it was exploring its legal options, decried Friday’s ruling. The Mountain View, CA-based media giant said the decision “sets a damaging precedent for computer science and software development.”

If this ruling stands, it will significantly damage the ability to develop software in the US and any country that honors US copyrights.

For starters, reverse engineering as a practice is dead. Any clean-room reimplementation is no longer possible since the interfaces themselves are copyrighted. Alternative implementations, drop-in replacements, etc., are gone without the express consent of the API copyright holder.

Developing software is about to get impossible.

  1. From the ruling:

    To use the district court’s example, one of the Java API packages at issue is “java.lang.” Within that package is a class called “math,” and within “math” there are several methods, including one that is designed to find the larger of two numbers: “max.” The declaration for the “max” method, as defined for integers, is: “public static int max(int x, int y),” where the word “public” means that the method is generally accessible, “static” means that no specific instance of the class is needed to call the method, the first “int” indicates that the method returns an inte- ger, and “int x” and “int y” are the two numbers (inputs) being compared.

    [..]

    Using the district court’s “java.lang.Math.max” example, Oracle explains that the developers could have called it any number of things, including “Math.maximum” or “Arith.larger.”

    So all you programmers who ever wrote a max() function, stop infringing on Oracle’s rights, you bastards!

  2. “…any country that honors US copyrights.”

    Where would that be?

  3. At some point, other countries will just have to say fu to the US. Looks like Russia is already there.

  4. That’s a fascinating situation.

    Ideally the whole software development community would just walk away from Java (and more lucrative Oracle products) to send a message that we’re not going to tolerate this. But the investment in Java code is so enormous that that’ll never happen.

    But I’m having trouble convincing myself that under current law as it stands, this is an incorrect outcome. (Undesirable, but legally correct.) Code is copyrightable. Headers are code. I don’t know what EULA comes with the JDK but I wouldn’t be surprised if it allows use of the headers for application development and forbids use for development of new runtimes.

  5. Indeed, desiato – it may be the correct outcome with current law.

    That’s probably part of the problem, right there.

  6. What’s the underlying issue here in your mind? That it should never be possible to have corporate ownership of a language and its implementation, forbidding alternate implementations?

  7. Ah, yes, that is the interesting question, right?

    Should it be possible to create a drop-in replacement for a piece of software. I’d say yes, generally speaking.

    Example. Replacing a MySQL server with a MariaDB server without having to write a single client bit is a bit win for the world in general. More specifically in this case, being able to run a java program on a virtual machine not written by Oracle is a big win for the world.

    Both exampes above would be impossible if the API is copyright protected. If it was possible for MySQL to say “you cannot connect to a network port and do X, Y and Z without breaking my copyright”

    All analysis I’ve seen so far indicates this lawsuit would have made it impossible to clean-room the IBM rom and clone the PC.

    The IBM PC roms itself are, rightfully in my opinion, protected by copyright. But I don’t think it is breaking that copyright to write software that does the exact same thing in the exact same way, if it was done by somebody who had only seen the specs, not the implementation.

    So, given a java specification, I think everybody should be free to write software that takes any program written to that specification and run it – regardless of it being a compiler, virtual machine, interpreter, or a hungarian dance group.

    That last example may seem contrived, but if that same dance group would be able to “run” a java program with their dance, they would be breaking Oracle copyright, and that’s just wrong.

    There is plenty of examples that fall somewhere between outright copying and a clean room implementation, of course, but in this case I think Oracle is in the wrong. Writing your own VM to run software that follows the java spec should in no way be a copyright infringement, even when that means having to implement a fairly large ‘standard library’.

  8. the big problem being of course to seperate “specification” from “implementation”…

  9. By the way, my read is that the Appeals Court sent the case back to Alsup to evaluate whether Google should get a pass under Fair Use, and given Alsup’s earlier ruling it seems possible that he’ll give it to them.

    But anyway. The IBM PC ROMs were an issue of binary compatibility. I don’t think there are implications here for binary compatibility, are there? The whole issue is the design of the human-readable API?

    I’m not sure about the MySQL example. (Ignoring that SQL wasn’t invented by the MySQL project or by Oracle.) If you implemented a query processor without publishing its API but just pointed to the MySQL doc and said “we implement that over there”, would that actually infringe the copyright? Presumably (too lazy to check) the issue here is that Google was distributing header files with the copyrighted API in them.

    Again, agreed on what’s desirable. As a community, we should learn our lesson. And I guess those who stick to FOSS mostly have.

  10. I don’t think there are implications here for binary compatibility, are there?

    You mean like the ability to run a (binary) .war file?

    If you implemented a query processor without publishing its API

    What is the difference between connecting to a network port, and sending SQL queries and having effect on the contents of a database, and taking a .war file and having effect on, say, the contents of a database?

  11. And I guess those who stick to FOSS mostly have

    And people say richard stallman is too extreme. I’m not so sure.

  12. And people say richard stallman is too extreme. I’m not so sure.

    It’s not that Stallman is wrong, it’s just that his stance is a costly one in terms of effort and convenience and most people aren’t convinced that it’s worth it. Even with this. I mean, how many big enterprise shops are going to conclude that having Oracle potentially monopolize the JVM space is a risk big enough to warrant switching all their custom apps to a different platform? Or even retraining their devs to do all future development in some other language?

    I think it’s funny that the one justification I can see to allow protection of APIs is to prevent splintering of that API. (See Sun vs. Msft’s embrace-n-extend in the early days.) And here the judgment is against Google because they copied too literally and are told they just have done their own thing. And why did they copy the APIs? Because the negotiations between Google and Sun/Oracle over a Java license had broken down over EXACTLY the issue of Google refusing to promise to maintain compatibility. As they say, “That’s fucked up.”

    [Binary compatibility] You mean like the ability to run a (binary) .war file? (…) What is the difference between connecting to a network port, and sending SQL queries and having effect on the contents of a database, and taking a .war file and having effect on, say, the contents of a database?

    In the MySQL case, if you implemented the (My)SQL query language without republishing it, could you possibly be violating copyright? It’s not the MariaDB people who are connecting to sockets and sending SQL commands–that’s the end user. And surely sending the commands constitutes fair use?

    The issue here is that each and every copy of Android is said to contain header files with the infringing code. That seems a bit different. MariaDB implements a parser for SQL. Android ships with copyrighted text material as part of the distribution.

previous post: Net Neutrality

next post: Taking the LA Clippers for a Spin