ISISComputingGroup / IBEX

Top level repository for IBEX stories
5 stars 2 forks source link

Java: Ensure we are not using non-free parts of Java #1915

Closed John-Holt-Tessella closed 7 years ago

John-Holt-Tessella commented 7 years ago

See http://www.theregister.co.uk/2016/12/16/oracle_targets_java_users_non_compliance/

Kevin has emailed Tom letting him know.

kjwoodsISIS commented 7 years ago

From: Griffin, Tom (STFC,RAL,ISIS) Sent: 19 December 2016 11:33 To: Woods, Kevin (Tessella,RAL,ISIS) Subject: RE: Java is not free ...

... We are rolling out some asset software that should allow us to manage and report on this across PCs and servers. I’ve also passed a note to some of the development teams and will raise it the next STFC IT Committee. ...
kjwoodsISIS commented 7 years ago

Commercial features of Java SE are described here: http://www.oracle.com/technetwork/java/javase/terms/products/index.html See especially Table 1-1. See also Oracle Binary Code License Agreement for the JAVA SE Platform Products

kjwoodsISIS commented 7 years ago

The following features of Java SE:

all attract a license fee.

We should check to see which (if any) we use. By checking, I mean positively confirm and document whether we use each of the features listed above.

DominicOram commented 7 years ago

I was bored and did some quick research:

Tom-Willemsen commented 7 years ago
kjwoodsISIS commented 7 years ago

According to the Java command line options page:

-XX:+UnlockCommercialFeatures
Use this flag to actively unlock the use of commercial features. Commercial features are the 
products Oracle Java SE Advanced or Oracle Java SE Suite, as defined at the Java SE Products 
web page.

If this flag is not specified, then the default is to run the Java Virtual Machine without the 
commercial features being available. After they are enabled, it is not possible to disable 
their use at runtime.

In this and other Oracle documentation (see next comment), it is made very clear that you cannot run commercial features of Java without specifying the -XX:+UnlockCommercialFeatures option on the command line.

The key word in the above quote is "actively". You have to actively choose to use the commercial features of Java. Provided we never use this flag (and we don't), we cannot run commercial features of Java.

kjwoodsISIS commented 7 years ago

The following documents are all related to the recent news that Oracle is seeking to enforce payment of fees for use of commercial features of Java:

Copies of these documents are on the ICP Discussions Sharepoint site.

ChrisM-S commented 7 years ago

Yes, escaped with a hair’s breadth on the installer I use on the clone build. It looks like there is a more functional MSI installer we should not use (unless we want to pay) but the basic one does do what is necessary for an installer in MDT.

kjwoodsISIS commented 7 years ago

The MSI installer is one of the commercial features of Java. We should NOT use it.

ChrisM-S commented 7 years ago

Just for the record, we use the MSI installer which is extracted by the standard Jave “.exe” installer into %TEMP% and which is how the JRE is installed onto our machines every time. There are some “commercial options” on the “official Enterprise installer" which you can only obtain by downloading it from the place specified. It is unclear to me what the difference between the two MSI installers is (and I’m not planning to try the extracted installer with the commercial options to see - as that might constitute commercial use!). The best explanation of the situation is given by the note at the bottom of

https://www.java.com/en/download/help/msi_install.xml

which shows that oracle know the mechanism we use is used, and is officially unsupported. If the mechanism becomes un-working as opposed to just “unsupported” we will probably have to pay the licence for the installer (as will our facilities IT who need to manage installations by SCCM). Java is a commercial product owned by Oracle so ultimately we are beholden to what they wish to do. I suspect although somewhat disingenuous on Oracle's part, the status quo will be maintained.

kjwoodsISIS commented 7 years ago

The scripts used to invoke Java in order to run the IBEX client are generated by the IBEX build server. The -XX:+UnlockCommercialFeatures command line option is, at the time of writing (22nd February 2017), not included in the configuration of the build script. See:

  1. build.bat and
  2. pom.xml

We also use ActiveMQ on the IBEX server. ActiveMQ is a Java application (from the Apache Software Foundation). ActiveMQ is invoked via one of two batch files:

  1. activemq.bat
  2. activemq-admin.bat

The -XX:+UnlockCommercialFeatures command line option is, at the time of writing (22nd February 2017), not a feature of either batch file. Given that the Apache SF is dedicated to the provision of open-source software, it seems highly unlikely that they will ever use the -XX:+UnlockCommercialFeatures command line option.

kjwoodsISIS commented 7 years ago

The installer noted by Chris in the previous-but-one comment is the standard installer for the Java SE run-time environment. This installer is free to use.

I don't think we can say that the MSI Enterprise JRE Installer is the "official" installer. It is merely an installer with extra features (whatever they might be) for the convenience of enterprise users and which Oracle want you to pay for. Provided we continue to use the standard installer for the Java SE run-time environment, we will not incur a license fee.

Although it is buried rather deep in various technical documents, Oracle do make it clear that you cannot accidentally use commercial features of Java. You have to make a conscious, explicit decision to do so (either by using the -XX:+UnlockCommercialFeatures command line option, or by downloading and using the MSI Enterprise JRE Installer).

Tom-Willemsen commented 7 years ago

Are the above points documented somewhere, other than on this ticket (which is likely to get buried among the mass of other tickets)?

If there's nowhere more suitable, perhaps a page on the wiki?

Tom-Willemsen commented 7 years ago

After discussion with @John-Holt-Tessella please add the information here: https://github.com/ISISComputingGroup/ibex_developers_manual/wiki/Java-paid-features

We will link to it from the various places in the wiki where java is installed

kjwoodsISIS commented 7 years ago

Done. Page now renamed to https://github.com/ISISComputingGroup/ibex_developers_manual/wiki/Understanding-Java-Licensing