Google has massive power over the Internet, and it also has a near stranglehold on the Android operating system. And so the announcement from Google that it is restricting the access of Huawei devices to some of its core applications is a major shock to the industry. Previously Google has supported smart phone manufacturers in customizing their environment and in providing them with the freedom to skin their operating system. We thus have an operating system which is basically the same, no matter which phone you purchase. The user interface skinning might look different, but underneath we have the core applications that have built Android.
But governments of the world have found a new way to restrict trade … software licences.
This move follows the Trump administration’s order for US companies not to trade with China unless they have been granted a licence, and was part of the “National Emergency of IT Threats” declaration. Huawei Technologies Co Ltd has thus been added to a trade blacklist, and where access to US companies for hardware and software will be severely restricted. Thus existing smart phones will still receive updates from Google as part of existing licencing agreements, but not for new devices.
The licence will basically revert to an open source one, and with no additional support for many important features and applications, including YouTube, Google Play and Google Maps. Within China, though, the black listing is likely to have minimal effect as most of the Google apps are already banned in China. A hardware restriction is likely to affect Huawei’s access to US-based chip manufacturers such as Intel Corp, Qualcomm Inc, Xilinx Inc and Broadcom Inc, and the company is also likely to start to look for alternative suppliers for their hardware.
The focus for Huawei might thus be to develop its own Android operation system, and which mimicked Google Android. This comes after Google replicated the Sun Microsystems owned Java Virtual Run Time Environment, and which created Android. Oracle — the owners of the Sun Microsystems licences — have since successfully sued Google for breaching copyright on Java.
While the UK has not yet restricted Huawei, there are several other countries who may be willing to restrict the company around the licencing of their products. Overall it is unlikely that consumers would buy a phone which did not have access to Google Play, and to applications such as YouTube.
The difficult child
Google is currently facing a fine of $9 billion in damages for breaching the Java copyright and has taken it to the Supreme Court [here]:
For Google the fight is not just about the damages, but on the future of software development [here]:
Java is a like a child stuck in-between two dueling partners who want custody of it. It used to have one parent … the great and much missed Sun Microsystems, but now has two: Oracle, and Google. One of its new parents decided one day to clone the child, and make lots of them .. in fact billions of them. And that child was named Android.
In 2016, Oracle lost a fight for damages of $9 billion from Google in a breach of its APIs, but came back at Google in 2018 on IP breaches and won the case. Google now must feel that they should have created their own operating system for Android, and this avoided the issues with Oracle. When they started developing with Android, they were dealing with Sun Microsystems, and should have gained a licence from them. By Sun Microsystems were a very different company to Oracle, who acquired the company, and its olden egg (Java).
And so Java became the most successful programming language and now one of the most popular operating systems. But the other partner, who thought that they owned the child, has decided to sue and get the child back. Java is still top for job postings, but Python is chasing fast. C++ and C# seem fairly stable:
But Java has failed in certain areas, including its integration into browsers, but the integration into Android gave it a new place to thrive, alongside its home at the back-end of many corporate systems.
Java was created in 1995 by Sun Microsystems, but in its short life it has been causing a bit of trouble and which could have shaken software development to its core. In 2016, Google won its case against Oracle, and when it dodged over $9 billion is remediation costs.The case related to Google building their own run time engine for Java for the Android operation system, and thus replicate the key API calls made to the Java core.
The ruling meant that open source developers needed to take care around the ruling as Google’s success related to the openness of its APIs, which meant the licencing of them could be ignored. This could mean that open source software could be seen in the same way, and could easily be copied, with little regard for GPL (general public license). This would mean that companies would not have to be a royalty if they licenced the open source versions of the software. The ruling also makes it unlikely that developers can actually copyright their software. This move is thus likely to move developers into the Cloud, and licence services rather than software.
Google’s luck ran out in March 2016, when the US Court of Appeals ruled in favour of Oracle [here]:
Google lost the$9bn ‘fair use’ court appeal. The main thing that Google failed to get from Sun Microsystems was a licence, and this was before it was acquired by Oracle. This overruled the 2016 fair API ruling, which had fallen under copyright, rather than IP (Intellectual Property) rights. Considering that Oracle bought Sun Microsystems for just over $7 billion, and will receive around $9 billion from the ruling, it looks like the deal was the bargain of the century.
The Java programming language and its run-time environment were created so that developers could write code that would run on any device and which used a standardized RTE (Run-time environment) which converts the run time code into a form which can run on the machine.
Java, though, has had a potted history, especially from some major security flaws and with its lack of adoption as a browser plug-in. It has, though, won through on enterprise systems, and had a major victory with the adoption by Google on its Android operating system. Three recent security vulnerabilities, which were fixed with updates last month, were rated as 10-out-of-10 for the impact.
The current problem is around the Android version of Java, especially in relation to API (Application Program Interface) calls. With these the developer makes use of a set of standard code interfaces, such as for cryptography, graphics and disk access, to integrate into their program. The developer thus uses the standardized API, and does not have to write their own code. APIs thus make it convenient to call well tested code and which performs standard functions.
Google re-engineered their operating system so that Java developers could bring their code to Android, as they supported all the standard API calls that Oracle has created for their JRE, and this is what has caused the problem. So the fundamental questions is whether an API interface be copyrighted. For example, if I created an API call named BillCrypto(), can I copyright it that so that no-one else can mimic my call? This would then create a lock-in for the code, in that no-else could come along and create a similar BillCrypto() call, as it would breach my copyright.
At the core of the argument is whether companies can lock their code to their API calls, and whether the Android system breaches copyright. So, in May 2012, a court in the US found that APIs weren’t copyrightable, and that Google did not infringe Oracle’s patent. Since then, though, on 9 May 2014, the Federal Circuit reversed part of the ruling in favour of Oracle, especially related to the copyright issue around APIs.
Along with the breaching of copyright on the Java APIs, Oracle have also filed for breaches of two patents:
- 6061520. Method and system for performing static initialization.
- RE38104. Method and apparatus for resolving data references in generated code.
Oracle owns the APIs?
At the core of the debate is now whether companies can own their API calls. After the recent cases, the Supreme Court approach the Obama Administration on the Federal Circuit verdict, and, on Tuesday, they announced that they are siding with Oracle. Shares in Oracle immediately rose by a couple of percentage points on the verdict. The Justice Department has since stated its case that it does not want the Supreme Court to hear the case.
For most in the industry, the ruling of copyrighting APIs would be a disaster, and would mean that many companies would have to pay extensive licence fees on code, and even have to write their own APIs, even for the simplest of things
In the initial trial, District Judge William Alsup even taught himself Java to learn the foundation of the language, and he and he decided that copyrighting Java APIs would allow it to become too broad, and cover a whole range of common items like Window menus and interface controls. The Obama Administration’s has since went against this and has sided with the Federal Circuit verdict, and highlight that the case should be decided on whether Google had a “fair use” right to use the APIs that were developed with Oracle’s version of Java.
History of Java
The history of Java goes back 20 years, when the industry was controlled by Microsoft, and especially on the IBM PC (with its horrible x86 architecture). Code was thus developed to run directly on the hardware and could not run on other types of systems. Others could see, such as in 1983 with Sony’s MSX system, that there was the potential to standardize the code that ran on PCs (Figure 3). For many in the computer industry, the lock-in of software and had benefits of controlling the market, where the hardware that was most popular, resulted in the most software being written. Thus games written on the ZX Spectrum could not run on the Commodore 64, and so it continued until Java came along.
Figure 3: Sony’s MSX system
Java’s officially date of birth is 23 May 1995 with Java 1.0a2, and was announced at the SunWorld conference in San Francisco. The leading browser at the time, Netscape, was one of the first to adopt the technology. It was developed through Sun Microsystem’s “Green Project” and which involved Patrick Naughton, Mike Sheridan and James Gosling. It was Gosling who created a software language named Oak, and which was processor-independent. Unfortunately Oak was an existing trademark, so Sun Microsystems quickly changed its name to Java, and in 1994 they had developed a whole browser — which was to become Mosaic — but named WebRunner and also HotJava — using Java (Figure 4). With Netscape adopting it, it became an instant success after its release.
Figure 4: Sun Microsystems HotJava(tm)
In software development we have two main types of environments in which code can run: natively within a managed run-time environment. With native code a compiler converts the high-level programming language into the actual machine code required to run on the actual hardware used. This is fast when running, but runs directly on the machine so can cause problems in hogging the resources of the machine. It also cannot be run on other computer types, so that a Windows program cannot run on a mobile phone, as they are using different processors and have a different operation for the hardware.
Java thus addressed this with a managed run-time environment, which took the machine-like code and converted it into the code required to run on the actual hardware used. This environment could thus watch what the code was doing, and not allow it to do bad things on the machine. Microsoft saw Java is a massive threat, in that users could easily move programs written for Microsoft Windows onto other computer platforms, and thus came up with their equivalent: .NET.
More details on Java and from its 20th birthday here.
It’s like the PC all over again
The last time something major like this happened was with the IBM PC. At the core of the PC was the BIOS chip, and which contained the software which allowed the computer to be a PC. Many companies basically copied the BIOS code, but these were quickly dealt with as breached IBM’s copyright on the code. One company .. Compaq .. decided to complete re-write BIOS, and create their own, and which was compatible. After this, the term “IBM PC compatible” become a standard part of of the specification for a computer, where a program written for an IBM PC could run on one which was compatible. IBM’s monopoly on the PC was crushed, and the term “Compaq compatible” became just as popular as the IBM version.
Compaq went on to become one of the most successful companies in the computer industry, but others just went ahead and did want they had done, and sold less expensive computers. As it struggled in the market with so many cheaper clones, Compaq went after Digital (DEC), who were 2nd place in the computer market to IBM, before the PC, and who were one of the companies which they had managed to crush. Since then Compaq were taken over by HP.
If you’re interested, this is what a portable computer used to look like: