What wasn't fair use in the diversion of Java APIs on Android

(I'm not familiar with copyright and I'm not good at English, so I may have misunderstood it, but I'm sorry at that time.)

The U.S. Court of Appeals admits Oracle's claim that "Google's use of Java API by Android is not fair use and infringes the company's copyright," and will remand the district court for damages. A judgment was issued. The sentence is published below. http://www.cafc.uscourts.gov/sites/default/files/opinions-orders/17-1118.Opinion.3-26-2018.1.PDF

I looked at the sentence while relying on Google Translate.

Conclusion

The final conclusion says:

For the foregoing reasons, we conclude that Google’s use of the 37 Java API packages was not fair as a matter of law. We therefore reverse the district court’s decisions denying Oracle’s motions for JMOL and remand for a trial on damages. The district court may determine the appropriate vehicle for consideration of infringement allegations regarding additional uses of Android. We dismiss Google’s cross-appeal.

We conclude that Google's use of 37 Java API packages is not legal fair use. Therefore, it revokes the district court's decision dismissing Oracle's allegations of JMOL and remands the damages trial. (Omitted)

As the word says, not being fair use is a copyright infringement, so we're going back to the first claim for damages.

The story so far

The history of the conflict between Oracle and Google is summarized in detail in the following article reporting on the JJUG Night Seminar in July 2016.

Google vs. Oracle Java API proceedings. Considering the historical background and its impact on the IT industry JJUG Night Seminar-Publickey

If you extract only the important parts,

--Google's use of Java is not patent infringement (May 2012) --It is decided that the API is protected by copyright law (June 2015) --Google's use of Java API on Android is judged to be fair use (June 2016)

Unfortunately, the Supreme Court's decision in June 2015 that software APIs are subject to copyright law protection has already been confirmed (to be exact, 2014). An appeal decision was issued in May, and Google appealed to the Supreme Court. The appeal was dismissed and confirmed in June the following year).

The third verdict is that even if the API is copyrighted, its use on Android is fair use and is not subject to copyright law protection. JMOL (Judgment as a Matter Of Law) in the judgment refers to this judgment.

Oracle then sought a new hearing in the district court, which was rejected in September 2016. This is the part of the district court's decision dismissing Oracle's allegations regarding JMOL. The background and Oracle's claim are explained in the following article.

Oracle appeals for use of Java API by Google-ZDNet Japan

The Court of Appeals' decision overturned the decision itself to be "fair use."

4 issues

The following four factors have been taken up as the main issues this time as materials for judging whether or not they are fair use (each factor will be described later).

Of these four, Factors 1 and 4 are considered to be "not fair use", Factor 2 is considered to be "fair use", and Factor 3 is considered neutral.

On this record, factors one and four weigh heavily against a finding of fair use, while factor two weighs in favor of such a finding and factor three is, at best, neutral. Weighing these factors together, we conclude that Google’s use of the declaring code and SSO of the 37 API packages was not fair as a matter of law. (p.54)

However, Factor 2 is also noted as "not very important to fair use balancing as a whole".

The Ninth Circuit has recognized, however, that this second factor “typically has not been terribly significant in the overall fair use balancing." (p.44)

Judging these things comprehensively, he came to the conclusion that Android's use of Java API is "not fair use".

Factor 1: The Purpose and Character of the Use Simply put, whether using the Java API on Android has a strong commercial nature. Oracle argues that Google is commercial because it makes huge profits on Android, and Google argues that Android itself is non-commercial because Android is open source and Google's profits come from search engines. I am. In contrast, the Court of Appeals concludes that Android is commercial because whether it is commercial or not does not depend on whether its profits are monetary or directly available. I will.

Another big issue is whether it is "transformative" or not. I couldn't interpret the term transformative well, but it seems that it's a usage that adds new value. Oracle argues that Google isn't transformative because it's just a copy of the API, arguing that Google was aiming to create a new platform called smartphones.

The district court seems to have accepted Google's claim of "transformative" and evaluated it heavily, but Google's claim was rejected on the appeal trial. The rationale is that even smartphones still use the same API for the same purpose.

Factor 2: Nature of the Copyrighted Work The issue is whether the act of designing an API is creative. First, the premise that computer software itself should be protected by copyright law has already been established. And it has already been concluded that the API package declaration code and SSO (Structure Sequence Organization) are protected by copyright law.

On the other hand, API declaration and SSO creativity are "minimal", and API is important not only for its creative side but also for its functional side, so use it. Google claims that is fair use. The district court granted this allegation, and the appeals court also ruled positively. However, as mentioned above, it is not considered to be very important to the whole.

Factor 3: Amount and Substantiality of the Portion Used The issue is what is the quantitative and qualitative value of the original work. In this regard, Google acknowledges that the act of diverting existing APIs was important in creating the Android platform in order to reduce the burden on developers.

Factor 4: Effect Upon the Potential Market The issue is how much Android has undermined the potential market value that Oracle originally had. This seems to reflect the idea of fair use, "limited to copies that do not significantly impair the marketability of the original work."

Google claims that Android hasn't stolen the Oracle market, citing that Oracle isn't a device maker and hasn't pioneered the smartphone market yet, and the district court admits it. I did. But the appeals court argued that smartphones were undoubtedly the "potential" market for Oracle, and that it's not a device maker (because there are ways to license it without having to make it yourself). The conclusion was reached.

Summary

Of the four issues raised here, Factor 1/3/4 has a strong premise of "for Android", and in other cases it may be judged differently. .. The point is that Google was making too much money to call it fair use, and Oracle took the possibility of making a foray. This is a form in which Oracle's claim is accepted.

Factor 2, on the other hand, acknowledges that API declaration code and SSO are creative (which should be protected by copyright law), but are also fair-use because of their strong functional aspects. However, it does not have a strong influence on the other factors that determine whether it is fair use or not.

Originally, whether it is fair use or not is determined by individual cases, so this judgment alone does not determine all cases. Especially this time, the deciding factor is whether it is a commercial activity and how much it affected the potential market value, so I think this point is very significant.

Recommended Posts

What wasn't fair use in the diversion of Java APIs on Android
[Java] Use cryptography in the standard library
What is the main method in Java?
What are the updated features of java 13
Looking back on the basics of Java
The story of writing Java in Emacs
The story of low-level string comparison in Java
The story of making ordinary Othello in Java
About the idea of anonymous classes in Java
Use the JDK used in Android Studio in the terminal
The story of learning Java in the first programming
Measure the size of a folder in Java
[Java] Use of final in local variable declaration
Summarize the life cycle of Java objects to be aware of in Android development
Feel the passage of time even in Java
I touched on the new features of Java 15
Import files of the same hierarchy in Java
Why use setters/getters instead of public/private in Java
I stumbled on the Java version in Android Studio, so I will summarize it
[Android 9.0 Pie Java] Implement setOnTouchListener in the margin of RecyclerView and close the soft keyboard
[Android Studio] I want to set restrictions on the values registered in EditText [Java]
Summary of how to use the proxy set in IE when connecting with Java
Get the URL of the HTTP redirect destination in Java
Use Java lambda expressions outside of the Stream API
[Java] Get the file in the jar regardless of the environment
Change the storage quality of JPEG images in Java
Use of Abstract Class and Interface properly in Java
Java: Use Stream to sort the contents of the collection
Summarize the additional elements of the Optional class in Java 9
[Android] Hook the tap of the anchor link in WebViewClient
Notes on how to use regular expressions in Java
Use OpenCV in Java
Use PreparedStatement in Java
Use JLine when you want to handle keystrokes on the console character by character in Java
Was done in the base year of the Java calendar week
About truncation by the number of bytes of String on Android
A quick explanation of the five types of static in Java
Refer to C ++ in the Android Studio module (Java / kotlin)
Use Java Web Start in an OpenJDK environment on Windows
[Android, Java] Convenient method to calculate the difference in days
What is the representation of domain knowledge in the [DDD] model?
Count the number of digits after the decimal point in Java
How to derive the last day of the month in Java
How to switch Java in the OpenJDK era on Mac
[Android] Try to display the effect on the touched part of the screen, which is common in games.
Use serial communication on Android
Use native code on Android
Implementation of gzip in java
Use Redis Stream in Java
Implementation of tri-tree in Java
I made the "Sunshine Ikezaki game" I saw on Twitter in Java.
Examine the system information of AWS Lambda operating environment in Java
[Java] Get the dates of the past Monday and Sunday in order
[Java8] Proper use of Comparable and Comparator in terms of employee sorting
Output the difference between each field of two objects in Java
Find out the list of fonts available in AWS Lambda + Java
The milliseconds to set in /lib/calendars.properties of Java jre is UTC
What is @Override or @SuppressWarnings ("SleepWhileInLoop") in front of the function? ?? ??
Examine the list of timezone IDs available in the Java ZoneId class
Get the public URL of a private Flickr file in Java
[Android / Java] Understand the description type in listener settings (button installation)