Sunday, April 29, 2012

Oracle v Google

Oracle is suing Google for copyright violation because Google created a compatible implementation of Java in Google's Android operating system. Very little actual copying has been shown, so the case hinges on whether the structure, sequence and organization of the Java APIs can be copyrighted. What?! That decision would cripple competition in the software industry and create problems for all software engineers.

APIs are how software applications interface with other systems. It's a very loosely defined word and includes everything from Java-style packages to hardware BIOS to network services. The only purpose of an API is to provide the method of operation for an application to use the features of another system. Methods of operation are not copyrightable! Everyone in the software industry has assumed that APIs are not copyrightable. There have also been high profile legal cases such as Lotus v Borland that have reinforced the understanding that APIs are not copyrightable.

Testimony in Oracle v Google has told us that developing an API is hard, creative work. This is untrue. It conflates a system's API with the ideas embodied in the system. Developing those ideas can be extremely hard, creative work, but once the ideas exist, an API can be generated mechanically by simply following engineering practice. For example, the Unix operating system implemented a completely novel process management system. The API for process management comes directly from that idea combined with engineering conventions such as using numbers for error codes. Unix uses the words "fork" and "exec" to help make the API easier for people to understand. The words are not meaningful to a computer, so "clone" and "load" would have functioned equally well as an API. Frequently the words to use are obvious because the ideas are well known outside the system. Mathematics, cryptography, databases and networking all have standard terminology that show up in APIs. In rare cases, such as the Unix example, the choices of words are creative and establish new vocabulary for software engineers. I don't think any of the contested Java APIs fall into this category, but what if some do? Is it worth protecting this?

An API is built once and then used many, many times by application software engineers. Applications are so dependent on APIs that lock-in is a commonly discussed problem. If just one API becomes unavailable, unsupported or unstable, it can cripple an entire application. There are currently three common approaches to this problem:

  1. accept the risk;
  2. only use APIs available from multiple sources;
  3. write wrapper APIs to insulate the application from other APIs.

In the first case, copyrights on APIs have no effect. (Of course if an application is composed of systems with custom APIs, copyright infringement could now apply to those custom APIs, so "no effect" only applies to small, simple applications.)

In the second case, copyrights on APIs would restrict competition to provide only incompatible APIs. If multiple systems provide competing functionality, an application programmer could not switch without rewriting portions of the application. Application programmers are also hurt because the first API to market can grab the most common words for an idea and force others to use poorer choices. It's unclear whether anyone can write "lang.math.max" anymore if "java.lang.math.max" is copyrighted, so competition may be restricted even across language and system domains.

In the third case, copyrights on APIs would create patent-like minefields for software engineers because they would have to show cleanroom conditions if a wrapper API has similar structure, sequence and organization as someone else's API. The current common approach of re-implementing an API already in use for another system will definitely not fly. Willful infringement for patents is easily prevented by not reading patents. Cleanroom conditions forces software engineers to not read software!

Wouldn't it be strange if Oracle won a decision that means the original Oracle database infringed IBM's System R database API? Or if Oracle Linux infringed Novell's Unix API? Or if Sun's WABI infringed Microsoft's Win32 API? Or if Sun's NeWS infringed Adobe's Display PostScript API?

As a software engineer, this case is impossible to accept. The world has gone crazy. Mathematicians must have felt similarly in 1897 when Indiana's legislature was debating pi. Unlike that circus, Oracle v Google will have a decision. Tune in next week to find out if software competition still exists. Crazy.


  1. It would be fantastic if Novell and IBM issued immediate statements that said "If Oracle win damages from Google for copyrighted APIs, we'll be seeking damages from Oracle for Unix and DB API infringements with damages for the last 20 odd years and billions of dollars for Oracle DB and an injunction to stop the infringing product.
    We imagine that others will follow suit.

    I expect that Oracle would be forced to drop all API related claims immediately for fear they'd win and then have their ruling used as case law against them.

  2. Oracle is one of the most traditional and promising CRM used for maintain their customers. If you want to know more about this crm and this features, reach us FITA. Rated as No.1 Oracle Training Institutes in Chennai.

  3. Really nice post. Unix is a multiuser and multi tasking operating system at the same time. Unix Training Chennai offering real time Unix course at reasonable cost.

  4. I expect that Oracle would be constrained to drop all API related cases rapidly for anxiety they'd win and a short time later have their choice used as contention law against them. Java Training in Bangalore |
    Qtp Training in Bangalore

  5. Very excellent posts..Oracle is very using all IT's industry.We have to provide lot of new information..

    Informatica Training in Chennai

  6. Excellent post!!! Java is most popular and efficient programming language available in the market today. It helps developers to create stunning desktop/web applications loaded with stunning functionalities. J2EE Training in Chennai | JAVA Training in Chennai

  7. Thanks for your post; selenium is most trusted automation tool to validate web application and browser. This tool provides precise and complete information about a software application or environment. Selenium Training in Chennai | Selenium Course in Chennai | Selenium training institute in Chennai

  8. I agree with your post. Android software development kit makes the application development process lot simpler and effective. You can create best performing android application with ease. Android Training Institutes in Chennai | Android Training in Chennai

  9. For management and troubleshooting of enormous databases, corporations square measure searching for qualified and licensed dispersions Hadoop experts for the duty. Hadoop Training in Chennai | Hadoop Training Chennai

  10. Thanks for your informative article and the blog. Your article is very useful for .net professionals and freshers looking for interview. Best DOT NET Training | Dot Net course Chennai

  11. Thanks for your informative article. Android SDK allows you to create stunning mobile application loaded with more features and enhanced priority. With basis on Java coding language, you can create stunning mobile application with ease. Best Android Training in Chennai

  12. Very informative post, your article on IOS mobile application development training helped me to understand the future of mobile application development. It is recommended to enroll in ios developer training in chennai at reputed IT training and placement institute for better career prospects.

  13. This blog is impressive and informative.It clearly explains about the concept and its techniques.Thanks for sharing this information.Please update this type of
    informatica Training in Chennai

  14. your comparisons and information about this oracle and google are really good and informative too.

    selenium training in chennai

  15. nice article goole vs Oracle..
    SEO training in hyderabad by experts in digital markeing And by prosessional experts in seo.All the training by placement and also guide by the professionals.SEO training in hyderabad

  16. These provided information was really so nice,thanks for giving that post and the more skills to develop after refer that post. Your articles really impressed for me,because of all information so nice.

    SAP training in Chennai

  17. Great and really helpful article! Adding to the conversation, providing more information, or expressing a new point of view...Nice information and updates. Really i like it and everyday am visiting your site..

    Digital marketing company in Chennai

  18. I am expecting more interesting topics from you. And this was nice content and definitely it will be useful for many people.

    SEO Company in Chennai

  19. Java Online Training Java Online Training Java Online Training Java Online Training Java Online Training Java Online Training

    Hibernate Online Training Hibernate Online Training Spring Online Training Spring Online Training Spring Batch Training Online Spring Batch Training Online

  20. Cool article
    Chase4Net is a reputed software training Institute for CCNA Training in Marathahalli,JAVA Training in Marathahalli,Python Training in Marathahalli,Android Training in Marathahalli .
    Our main focus areas are Java Certification Training and Software Development.Chase4Net has been already ranked as the No.1 for CCNA Training in Bangalore,JAVA Training in Bangalore,Python Training in Bangalore,Android Training in Bangalore.
    We provide quality education to the students at low cost.Students will get real experience.We are the Best Java Certification Training institute in bangalore.

  21. I have read your blog its very attractive and impressive. I like it your blog.

    ES6 Online Training JavaScript Training Courses JavaScript Training Courses | Angular 4 Online Training Angular 4 Online Training

  22. It is amazing and wonderful to visit your site.Thanks for sharing this information,this is useful to me...
    Android Training in Chennai
    Ios Training in Chennai

  23. This is very useful post. I found so many interesting stuff in your post. Really its great article.
    Click here

  24. Thanks to shared this informative and valuable news with me. Keep updating.
    Oracle courses | DBA course

  25. Well Said, you have furnished the right information that will be useful to anyone at all time. Thanks for sharing your Ideas.

    selenium training in bangalore|

  26. There are so many useful information in your post, I like it all the time. And I want to share this boost app ranking with you, you can take a look. This is very useful.

  27. This comment has been removed by the author.

  28. Thanks for sharing informative blog.

  29. It is really interesting for me to read this article. Thanks for it. I like such topics and everything connected to them.
    Online Marketing Services
    Seo Companies in bangalore
    affordable seo packages in india


    1. Your new valuable key points imply much a person like me and extremely more to my office workers. With thanks.
      UNIX Shell scripting training in chennai
      ORACLE apps finance training in chennai
      Informatica Online Training

  30. It is really a great and useful piece of info. I’m glad that you shared this helpful info with us. Please keep us informed like this. Thank you for sharing.
    Seo Company in Chennai
    Digital Marketing Company in Chennai

  31. Thanks a lot very much for the high quality and results-oriented help. I won’t think twice to endorse your blog post to anybody who wants and needs support about this area.

    Best Java Training Institute Chennai

    Java Training Institute Bangalore

  32. There are so many useful information in your post, I like it all the time. And I want to share this..

    Weblogic Admin Training

  33. Ciitnoida provides Core and java training institute in

    . We have a team of experienced Java professionals who help our students learn Java with the help of Live Base Projects. The object-

    oriented, java training in noida , class-based build

    of Java has made it one of most popular programming languages and the demand of professionals with certification in Advance Java training is at an

    all-time high not just in India but foreign countries too.

    By helping our students understand the fundamentals and Advance concepts of Java, we prepare them for a successful programming career. With over 13

    years of sound experience, we have successfully trained hundreds of students in Noida and have been able to turn ourselves into an institute for best

    Java training in Noida.

    java training institute in noida
    java training in noida

  34. Great post! This is very useful for me and gain more information, Thanks for sharing with us.
    Android Training in Chennai | Java Training in Chennai


Disqus for Ken Fox's Blog