Oracle v Google could Chill Software Development

Unless you’ve completely unplugged from the news, you probably are aware that the long-running feud between Oracle and Google had a new court decision this week. An appeal court found that Google’s excuse of fair use wasn’t acceptable and that they did infringe on Oracle’s copyrights to Java. Oracle has asked for about $9 billion in damages, although the actual amount is yet to be decided. In addition, it is pretty likely Google will take it up to the Supreme Court before any actual judgment is levied.

The news is aimed at normal people, so it is pretty glossy about what exactly happened. We set out to try to make sense of it all. We found a pretty good article from [Michaela Barry] about what the courts previously found.  There were three main parts:

  • There were 37 API (Application Programming Interface) declarations taken verbatim from Java. This would be like a C header file if you aren’t familiar with Java.
  • Google decompiled 8 security files and used them.
  • The rangeCheck function — 9 lines of Java code — were exactly the same in Oracle’s Java and Android.

Google’s argument was that this is fair use, which has a specific legal definition. Here at Hackaday, we aren’t lawyers, so we’ll let you look up that definition yourself. However, paraphrasing [Judge Potter Stewart], “we may not be able to define fair use, but we know it when we see it.”

Decompiling the security files does seem to be a bit much. There might be some case to be made there. However, the idea that creating an API that conforms to another API is an infringement is pretty scary. Linux, for example, offers a similar API to Unix (or POSIX). There is a long history of APIs per se not being intellectual property.

As for the rangeCheck function, it is true that it appears to be a copy. However, if you look at the code, it is pretty laughable to think it is stealing anyone’s secrets:

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

We could think of other names for arrayLen, fromIndex, and toIndex, but the implementation is pretty obvious, don’t you think?

This hasn’t been a simple case. One court finds for Google then the next finds for Oracle. We suppose you could take the opposite tack. If you spent years building a super API for some purpose, why can’t you protect it? Somehow, though, that just doesn’t seem right. Maybe it is like the [Potter Stewart] quote. If you copyright your API to take an array and multiply it by 10, that seems like you shouldn’t be able to protect it. But we could imagine some intricate and logical API that we might feel could be intellectual property. We can’t think of any off hand, but we could imagine it.

In a further twist, the original case had a patent component that was successfully refuted. However, the court that made this week’s ruling normally would not hear a copyright case and only heard this one because of the patent component that was no longer under contention.

Incidentally, at least some of the Java code was covered by the GNU Public License. However, Google’s code — at least parts of it — fell under an Apache Open License which is apparently more permissive and incompatible. The $9 billion figure stems from Oracle’s assertion that Google killed demand for their Java mobile product.

We expect a lot of comments on this. Are your APIs your intellectual property? Or are they like mathematical formulae or algorithms and inherently not subject to copyright? If they are, how do you stop big companies (or small companies with legal resources) from gobbling up the software landscape with endless trivial APIs and killing everyone with lawsuits?

95 thoughts on “Oracle v Google could Chill Software Development

  1. I don’t know, it looks like Google screwed up pretty badly here. You can dance around the implementation of “rangeCheck” as much as you want, there’s only so many ways to skin a cat after all. But it seems Google even admits they copied the 8 files verbatim, and that’s the real problem.

    Reading the linked article, it even looks like the 37 API declarations are debatable, as originally the court found they couldn’t be copyrighted only to have the Federal court reverse that decision. Personally I think that’s the biggest deal in this case. If you copy a file and reuse it, then yeah obviously that’s shady. But if it’s found to be infringement to use the same declarations (I.E. trying to create an open library that would seamlessly replace a closed/proprietary one), then that could be a dangerous precedent.

    1. Oracle doesn’t understand the rise of C# and Python was almost directly correlated with the decline of Java in new systems. If I recall, the cloned files were mostly in-line comments about the API itself, and Google initially assumed that stubs were not copyright-able given similar legal precedents in reverse engineering.

      In my opinion, the DMCA driven copyright advisors were emboldened with the idea that society should subsidize some billionaires’ squabble. Since both parties dodge taxes, than why allow their lawyers to even use the bathroom at the courthouse? If Oracle succeeds in this appeal, than they should be publicly pwned hard with antitrust litigation.

      1. Oracle really doesn’t care about what you or anyone else thinks. Believe it or not, they are also sentient humans, capable of thinking through their actions, and they have decided to screw you and everyone else for whatever reason.

        Your talk about antitrust is a real laugh, what monopoly must be broken up? You destroy your own argument when you point out that C# and Python are taking market share from java.

        The rich people like Larry Ellison who run the world are out to make even more money, not “subsidize squabbles”, and they assume that they already own the courthouse, and who are you to stop them?

        1. Even a Larry Ellison is not immortal. Push the small guy hard enough and everyone who you pushed pushes back, even if that means blood is to be spilled. History repeats itself.

    2. The files we’re talking about here (based on the article of being equivalent to C header files) aren’t really code. In a C header you really just have the declarations of methods and perhaps some constants and global vars. Basically it’s like an interface here’s the method name, here’s what it returns, here’s what parameters it accepts but not any of the code of how the method works. As a coder of 20yrs I’d find it pretty laughable to try and defend an interface as copyright.

    1. Java Mobile Edition (ME). It’s like 90% stripped down from Standard Edition, Whereas the Android API is a pimped up version of Java. Yes, Java ME is so unpopular (in my experience) that it may as well not even be there.

      1. Oh, it used to be popular, like a decade ago, before smartphones were a thing. Almost every third-party ‘app’ or game I interacted with on a mobile phone before I switched to Android was coded in J2ME. Most of its popularity was driven by Symbian, hence its subsequent decline.

        1. [quote]Almost every third-party ‘app’ or game I interacted with on a mobile phone before I switched to Android was coded in J2ME. Most of its popularity was driven by Symbian, hence its subsequent decline.[/quote]

          I wrote some J2ME apps for an old Voyager phone on Verizon — it was symbian based.

          So, I guess there might be an argument there, for Oracle, saying that modern phone OSs killed symbian (and by extensions J2ME).

          However, I don’t remember Oracle trying to compete with Android, etc….they could have easily made a competing operation system based on J2ME.

          This really sound like Oracle gave up on J2ME, thus, abandoning it — and the only reason they are brining it up now is because they see $$$ dancing in their minds.

      2. I used to work at Sun back when mcneely was there and java had its 10th anniversary (big party at sun, too). the talk given by the java guy was all full of pride on how the mobile market was owned by java, being on their devices. something about south america (I forget the details) being mentioned, too.

        I remember when java applets came out and we all hated them. I was at cisco in the early days and we had ncd X terminals at home with 14.4k modems and to run a gui to report bugs took about 15 minutes of download for the app … only for it to crash later on! what a clusterfark.

        these days, what I’m seeing is: if you are from india, you are still learning and (trying) to use java. if you are from the US, java is being deemphasized and python is replacing it. while I have some issues with python, its quite a lot better than the horribly verbose java system and its nutty build system.

        java can die for all I care. it was an interesting experiment but mostly it just never delivered. I do hear a lot of ‘business programming’ is done as java servlets; and the reason I’m told is that the skill level needed to write such apps is low (low cost, outsourced) and so the business guys love that aspect.

        1. Agreed. In industry, Indian and H1B workers have taken over most of the Java development these days. There’s a glut of Java developers and those jobs now go to the lowest-cost localities. The rest have moved on to other languages. Java does has some bright spots. Eclipse and IntelliJ are decent IDE’s (IMO, WAY better than the horrible Arduino “IDE”). And some businesses use Java “J2EE” web technology. Mindcraft is also Java based. But the whole “build once, run anywhere” idea never really panned out. Byte code is only as good as the JVMs it can run on, and Oracle only releases JVM’s to Linux, Windows, and Solaris on x86, Sparc, and ARM. There’s no “run anywhere” on mobile platforms. iOS doesnt support it and Android supports only their version of it, not the standard. Java still has the problem of horrible resource consumption and sluggish performance. Now Java is a fragmented mess. GUI’s like Swing have all the style and user-appeal as Motif and JavaFX is green and gets less and less support from Oracle. They removed JavaFX from it’s recent ARM JDK’s altogether. Splinter “JVM”-languages like Scala, Kotlin, Go, etc make the fragmentation even worse, and then there’s all the crap technologies bolted on top of it (Hibernate, Hadoop , Flume, Sqoop, HIVE, Pig, YARN, Spring, Tomcat, Jetty, JSP, OSGi, ServiceMix, JNI, JNA, Jigsaw, Velocity, Maven, Gradle, Kafka, Spark, JBoss, WebSphere, WebLogic… it goes ON and ON and ON…) Java had promise. It was popular. But it’s being crushed under its own weight. Oracle and Google just made it that much less appealing.

        2. The problem is not with the language, it’s the way it was evangelised by the fashionistas who, as usual, were absolutely convinced that Java was the One True Solution ™ for everything. And so we have an entire generation of computer science graduates who were taught Java was the only language they would ever need.

          The world has moved on from Java but there are still a lot of people stuck with it because of legacy systems and/or infrastructure which can’t be easily replaced.

          Trying to convinced middle management and/or beancounters that a system which works needs to be replaced because the language used to build it is obsolete is a lost cause from the start.

        3. If Java didn’t deliver, one could ask oneself why it is powering a staggering amount of businesses, and why it is at the moment still the #1 language for any larger system, except in a Windows-only environment? Just about the only thing Java didn’t deliver on are applets and J2ME, but that’s not really a fault of the language. It’s looks to be more down to bad business decisions and strange priorities. A simple language is good for large and complex applications, especially one statically typed. Python, or any language with dynamic typing can easily become nightmares in any larger system.

    2. The more important question is…. People still USE Java??? Heck, every time I try the application doesn’t work because I have an incompatible security setting or version— and let’s face it there is a new security update available check is basically, ‘if (rebooted == TRUE OR HalfPastTheHour == FALSE) then RequestUpdate();’

  2. They also use identical periods and commas in their code just like Oracle, they should be expected to come up with different punctuation as to not infringe on some other global corporation’s intellectual properties..
    It’s all competitive corporate crap. Companies can’t beat each other in business so they fight in courts.

      1. It is also one of the last widely used type safe garbage collected languages out there that support remote debugging and metrics natively. Go and C++ both compete with parts of it. And both Java and C++ look quite differently today than they did 10 years ago.

        Python, node.js and Ruby are not really competing in the same market. The lack of type safety and remote debugging makes them useful for different scenarios.

    1. Funny how it used to be 7-14.

      I guess that would mean that any books written at the start of the 1920’s would be the property of the public by the time Hitler was elected.

      Really a shame that we deny ourselves (and so far our kids as well, until it’s extended furthur) access to everything our culture will ever create.

      I’ll be interested when the issue inevitably comes up again before 2023. Part of me hopes it will prompt a discussion, but I also no that no lobbyist will ever allow it to be rolled back, and there’s a lot of money that wants to make it indefinite. Some lawmaker might well decide it’s close enough to infinite to make it so. (of course then, would companies realise that means they can’t reuse older materials, like the novel cinderella was based on?)

      1. Thinking about it, if the rate of copyright extension not just keeps pace with the march time but ever exceeds it, the inability to mine older works from before the first extension of copyright is probably what the math suggests will happen.

  3. I’ve never been sold on the copywritability of code, and this whole line of argumentation seems to be pushing it to a breaking point. It’s making it (un)fortunately clear that by refusing patents for algorithms, but allowing them for “artistic” implementations of these algorithms, “100 + 1” is not copywritable, but “maxBufferLen + extraHeadRoom” is.

    Given that situation, it’s essentially inevitable that .h files (and APIs) have to be copywritable expressions of art. It’s the putting of names to the variables in the algorithms that give code its copywritable status, after all. The .c files were just a distraction.

    Yes, ithis is madness, but from my perspective it just looks like the reductio ad absurdum that proves that the original idea wasn’t sound.

    1. Well proprietary and open-source in their own way depend upon it being copyrightable, so here we are. Of course lets not get the two mixed up, patents and copyright are two separate things with separate rules.

      1. a) Before software was copywriteable, it was sold as if it were normal property. Those were simpler times.

        b) I’m not confusing them. Again, in the before-times, it was proposed that the right way to impose IP on software was the patent. But patents already had this exemption for algorithms, so that was out. Thus they made up this crazy idea that writing code was writing literature and thus copywritable. You can’t make this stuff up! (Although I guess someone did in the early 80s.)

        Since then, everything under the sun has become patentable. (Business methods!) So whatever. Maybe they could have just taken that route after all.

        But really, is code more like a mechanism that solves a problem, or is it more like a story?

        1. Normal property can’t be copied infinitely. Software can. Remember Bill Gates open letter to hobbyist?

          Far as software as literature? Maybe a love letter to a machine?

    2. In the future, rather than attempting to contain “unlicensed” use of one’s potentially protection-worthy algorithms by copyright law, it’ll be much easier to do so by simply not releasing the software – neither the code, nor the compiled binary – and instead only providing it as a web service. And if that isn’t feasible in one’s particular application, than the algorithm probably wasn’t worth being “protected” in the first place.

    1. Egostroking aside, human nature isn’t that hard, otherwise a large section of fiction, and non wouldn’t exist. This case is what one gets when someone thinks they’re cleverer than they really are. As pointed out below a win will hurt Oracle as much as anyone else.

          1. @ospr3y On the other hand, £1 and £2 coins are valid for transactions of unlimited value, and 9 billion coins is still quite a quantity. Hmm.

            I imagine that it would be more satisfying to chuck the old-style £1 coins at people you dislike, compared to the new £1 coins. The new design is missing that reassuring heft as you throw it at your fellow tube commuters during the rush hour.

        1. Perhaps the wise [Just Judge Potter Stewart] will decide that in the end both parties should be punished and order Google to hurt Oracle with the $9 billion…

          “we may not be able to define fair compensation, but we know it when we see it.”

  4. The big question is how much of a match do you need to have a copyright violation. Just like two books can have identical phrases, software can have identical functions. Especially with computers there are only some many ways to do a mathematical function. All this highlights for me is that Oracle is succeeding in convincing people not to use Java and make money with it. I think at some point there needs to be an advisory board of programmers within the industry that help arbitrate these issues otherwise we are going to get some really wierd court decisions.

  5. The issue that people tend to ignore is this involves businesses. Both in this case with histories not to be all that proud of. Modt think Oracle is going too far and Google are just too greedy for their own good. Both companies probably deserve a good kick in the pants.

    1. Oops, my post is corrupted.

      If the range is 1-based, this is a bug: if (fromIndex < 0) should have been: if (fromIndex arrayLen) should have been: if (toIndex >= arrayLen)

  6. Oracle vs Google. It would be hard to find two companies so completely different. Google is one of the most innovative and creative companies ever. Oracle is a predatory monster, a parasite. Google is everything that Microsoft could and should have been. On a scale of 1 to 10, Oracle gets a 0, Microsoft a 3 or 4, and Google gets a 9, maybe a 9+.

    Googles decision to use Java in Android was byzantine and haywire from a technical viewpoint, but in light of the vulnerabilities it opened to the pure evil of Oracle is even more questionable. I could almost applaud this decision if it caused Google to abandon Java in the android ecosystem, but I don’t expect it to work that way.

    Oracle though is a foul leech of a company, worthy only to be despised and loathed.

    1. “Just sign this contract that binds you to pay for my racing yacht – er I mean – our database system for the next ten years. Thanks. By the way, we can’t deliver on 90% of the functionality for several years. But don’t worry, we will use you for testing as we go. And as a reference for new customers.”

    2. “innovative and creative” ?

      Google aren’t just the biggest copyright infringer in the world. They’re the biggest copyright infringer in history.

      Their entire business model is based around ‘monetizing’ other people’s work. They rake in billions a year, very little of which, if any, goes to the owner. If anyone complains, they point the finger and say ‘it was a user wot dun it, not us. honest guv’.

      The safe harbour provisions were supposed to protect websites from ‘bad faith’ acts. Instead Google and others like them are using it as an excuse to fill their boots at other people’s expense.

    3. “Google gets a 9, maybe a 9+.”…
      Have you tried to use goolge anonymously?! I don’t want to be profiled and hounded with targeted ads. I don’t want my email read and dissected.

      Then there’s the way they dodge paying tax. And have you seen the documentaries that show the way they treat their employees.

    4. > Googles decision to use Java in Android was byzantine and haywire from a technical viewpoint, but in light of the vulnerabilities it opened to the pure evil of Oracle is even more questionable.

      When android was being written, Java was owned by Sun Microsystems, which was heavily invested in open source at the time.

      Also, Google didn’t write Android from scratch. They got a hold of Android when they bought Android Inc.

  7. If Oracle wins, and APIs are deemed to be copyrightable, then they are going to have at least one problem: the new Date/Time API introduced in Java 8. It effectively copies JodaTime’s API structure and class names.

    If Google can’t copy the Java API (even though it’s open source) then neither can Oracle copy JodaTime.

    1. Yah right! See that blindfold around lady liberty’s head? If you could peel it off and look at the inside it’s plastered with corporate logos.

      Do you really think the Joda people could sucessfuly sue Oracle?

    1. Indeed, Java is awful. The COBOL of recent languages. If it wasn’t for the insane decision by Google to make it the centerpiece of the Android system, it would have died long ago (or been relegated to an academic teaching language, as everyone knows, you want to teach computer science students to use some lame language like Pascal or Java).

        1. It’s a bit more complicated than that. {surprise, surprise} :)

          The vast majority is legacy stuff they’re stuck with. Largely because of what it would cost to replace.

          Where there’s a choice, the current fashion is Javascript/node.js. There’s also PHP, used in around 80% of websites, and Python. Of course :)

          1. Backend still seems to be mainly C(++) as it has been for years, as speed is a priority.
            Frontend, where speed matters less, changes pretty frequently, (Angular|Node|React|Electron|Meteor|[DayOfTheWeek]).js, etc.

  8. I’m not caring to much about the technical details anymore, but what bothers me and I have seen it in many other cases lately is that juries make one decision then a judge will overrule them on the appeal, repeat Ad nauseam and eventually there is no longer juries just judges making the decision, it only ends when someones pockets are empty. Never cared to much for Oracle anymore anyway since the openoffice shutdown.

    1. Reminds me of the Jarndyce v. Jarndyce case in “Bleak House” by Chas. Dickens. This case went on for generations and the case only ended when the entire estate was spent on legal proceedings. When the case finally ended, the whole court burst out in laughter.

    2. As a little background I worked for many years as a software engineer before becoming a lawyer in England.

      Although I know there is a constitutional right to a jury trial in the US it has always seemed to me to be utterly inappropriate for this sort of intellectual property dispute. The system we have here in the UK – where these cases are heard by a specialist judge sitting alone (or, on appeal, a bench of several judges including at least one specialist) – appears to work far better. In the US the appellate jurisdiction appears to spend too much of its time cleaning up the mess created by a questionable jury verdict.

      1. I think so. I’ve written entire software packages for nuclear power plant simulators, also designed the electronics. Same for transit authority control systems, motor controllers, internet enabled security locks, etc.

        The original question is truly at the core of these conversations.

        If jokes were protected under copyright, comedians would be wealthier, but the general population would require license agreements to be funny in personal conversations or in any form of media. A massive legal team would be required just to do standup or produce a Youtube video. Innovation would be stifled and progress messy.

        The analogy holds for modern software IMHO.

        1. I’ll bet the “nuclear power plant simulators,” was actually paid for by someone else. The problem is when you spend a lot of your ***OWN*** time and money developing software – you need a return from it (generally money).

          1. This concept is ignored by HaD when it comes to closed source hardware vs OSHW discussions.

            Hardware designs are not copyrightable and rarely novel, so unprotected, yet they thrive.

            When software became protected under copyright laws, the nonsensical EULA became a thing and the source code was no longer distributed. When the courts upheld software patents with rulings clearly penned by nontechnical minds…. it got worse.

            If copyright protection was removed tomorrow, the software industry would be massively different, but still, exist. Likely improve since there’d be REAL incentive to reduce code dependancy. This would improve performance and security. Time to market would increase so real standards adoption would improve to compensate. Not just in software but in hardware.

      1. Isn’t that like saying, because it is?

        If someone in the 1950’s asked why Jim Crow laws should be legal, would you tell them because there are different races?

        I personally think the spirit of copyright law extends more favorably to hardware designs than code. In fact, the original spirit would likely only include source code itself.

        Not that we should stick blindly to outdated laws.

    1. Because the usual subject big guys bought the law they wanted to protect their sooper secrit IP. Now that it’s biting them where the sun doesn’t shine, maybe they’ll buy a better law. It’ll probably take a couple more stupid cases for it to sink in. And let’s hope we can keep the part of the law that keeps open source open.

  9. I used “main” as the main routine in 1974. I retain the copyright to use the term/word “main” unless someone’s can show prior art to 1974.

    Should be worth a few $B (to the lawyers). What a joke!

    And for a bigger problem, CP/M had what we now call API’s that were copied by MS. I would be fairly sure they would be in unix/Linux and a lot of other OS’es. Quite likely in Oracles database too. Just sayin’ ;)

  10. Nice one. Business Corps insist on Sw-patents & -copyrights because “customers want long term stability and need to rely on their $$ comittment”, then the very same Business Corps ween at every court at ever possible level putting customers trust for long term stability more than at risk; in other words they kill theyr own products/brands/reputation (maybe yet, maybe future cash-cows).

    This seems to never happen to FOSS products, let me try listing some: gcc, perl, python, lua, …
    help at completing the list of products customers can use without such legal impediments!

  11. Maybe off-topic but does anybody know how this might affect googles fuchsia? I see that there is still active development going on on their git page but really haven’t heard much about it lately.

  12. Many are missing the point. We have arrived at this low point in jurisprudence because of greed, and incompetent elitist business managers that are too stupid to know that they are stupid. Poor management has become the sine qua non of American businesses (have traveled and worked in Asia and EU – and foreign managers, no matter how greedy or corrupt, tend to at least attempt to make good decisions).

    Google has made, and continues to make morbidly stupid business and technical decisions; so no longer depend on any of their ‘free’ or paid products.

  13. So this is why Oracle has refused to produce a Java Runtime Environment for Android? Without Java support on Android, that’s led to a shrinking market for devices running Java. I can’t manage network printers from my Android phone if the printserver runs on Java.

    HP has moved away from Java in their JetDirect servers, plug-in and embedded, but there’s still tons of older Java ones in use.

    Have they cited the case with Microsoft as precedent? Where MS was producing their own, proprietary JRE that wasn’t compatible with the standard, so JAVA applets that used Sun or Oracle Java would’t work with MS Java. Might not be usable as precedent since MS was licensed to develop their own, as long as it was compatible. Apple did their own and maintained compatibility.

    But the whole Java house is likely to fall to ashes soon, since Apple declared it and Flash “obsolete” and the rest of the computing industry gave itself a concussion by kowtowing so hard to Apple’s whim.

  14. Having some sort of IP protection on an API is not a bad thing. Consider a company that makes programmable widgets. It spends considerable resources to develop the software on the widget and the tools to program the widget and the MMI. Along comes another company and it produces a similar but much cheaper widget that can be used with the same programming tools and MMI. The second company can greatly undercut the first because it does not need to recover the software dev costs. Yes it might need to write a little software to run on the cheaper widget but when someone has already done all the research for you and designed the API then you’ve gained a huge advantage.

  15. Don’t touch anything Oracle The problem is, the thugs just buy other “good” companies and Sue on things the good guys did. At the end of the day, nothing beats the peace of mind of open source.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s