Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

New Exception: OpenJDK Assembly exception #551

Closed
wants to merge 3 commits into from
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
52 changes: 52 additions & 0 deletions src/exceptions/OpenJDK-Assembly-exception-2.0.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
<?xml version="1.0" encoding="UTF-8"?>
<SPDXLicenseCollection xmlns="http://www.spdx.org/license">
<exception licenseId="OpenJDK-assembly-exception-1.0" name="OpenJDK Assembly exception 1.0">
<crossRefs>
<crossRef>http://openjdk.java.net/legal/assembly-exception.html
</crossRef>
</crossRefs>
<text>
<titleText>OpenJDK Assembly Exception</titleText>
<p>
The OpenJDK source code made available by Oracle America, Inc.
(Oracle) at openjdk.java.net ("OpenJDK Code") is distributed
under the terms of the GNU General Public License
&lt;http://www.gnu.org/copyleft/gpl.html&gt; version 2 only
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Perhaps this link should be to (or at least allow) https://www.gnu.org/licenses/old-licenses/gpl-2.0.html? Currently https://www.gnu.org/copyleft/gpl.html has the v3 text, and you have to click through “Old versions of the GNU GPL” and “GNU General Public License, version 2” to get from there to the v2 text.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also allowing https as well would be nice (like we do in the GPL licenses themselves since #450).

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@wking I like allowing http|https matches (let's encrypt! and all that), but that's broader than just this license. Let's open a separate issue for that.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I like allowing http|https matches (let's encrypt! and all that), but that's broader than just this license. Let's open a separate issue for that.

With this sort of thing, I think the easiest approach is to gate-keep new submissions to hold the new standards while slowly chipping away at the existing instances. Landing new code that violates our intended approach just makes the existing issues more trouble to fix ;). This lets you solve the issues incrementally without having huge-change flag-days.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I can see the case for that, but we don't want to hold up substantive additions to the license list while deciding. Also, if we want to systematically change this, there wouldn't appear to be much effort difference in (N licenses affected) vs. (N-1 licenses affected).

Set up in #633 to address systematically later.

("GPL2"), with the following clarification and special
exception.
</p>

<list>
<item>
<p>Linking this OpenJDK Code statically or dynamically with
Copy link
Contributor

@wking wking Dec 26, 2017

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I haven't looked at our existing exceptions for precedent here, but to me it feels like the text you've included in the <list> element is the legal text of the exception. The earlier “The OpenJDK source code made available…” paragraph sounds like part of a grant that associates the exception with a particular set of code (much like a GPL header at the beginning of a file associates the GPL license with the code in the file). The final “As such, it allows licensees and sublicensees…” seems like a combination of non-normative notes and a contributor license agreement.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The Eclipse OMR and Eclipse OpenJ9 projects both use the OpenJDK assembly exception. I'm not happy with their LICENSE files and will get them to update them.

e.g.

https://github.com/eclipse/openj9/blob/master/jcl/src/openj9.dataaccess/share/classes/com/ibm/dataaccess/ByteArrayMarshaller.java

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

https://github.com/eclipse/openj9/blob/master/jcl/src/openj9.dataaccess/share/classes/com/ibm/dataaccess/ByteArrayMarshaller.java

The Eclipse OpenJ9 project seems to cover the grant association in their per-file header, which seems like it make's the “The OpenJDK source code made available…” paragraph superfluous for that file. And they cover the contributor license agreement section with an explicit CLA and sign-off requirement. So at least some parts of the upstream exception page seem redundant/misleading in that context. For OpenJ9 (which is not available under openjdk.java.net?), the exception seems to allow folks to link OpenJ9 against the designated exception modules, but it's the copyright holder (not always Oracle) granting the exception. A generic form of the exception would be closer to:

Linking this OpenJDK Code statically or dynamically with other code is making a combined work based on this library. Thus, the terms and conditions of the GNU General Public License http://www.gnu.org/copyleft/gpl.html version 2 only ("GPL2") cover the whole combination.

As a special exception, the copyright holders and contributors give you permission to link this OpenJDK Code with certain code as indicated at http://openjdk.java.net/legal/exception-modules-2007-05-08.html ("Designated Exception Modules") to produce an executable, regardless of the license terms of the Designated Exception Modules, and to copy and distribute the resulting executable under GPL2, provided that the Designated Exception Modules continue to be governed by the licenses under which they were offered by Oracle.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@waynebeaton - @wking has a good point: considering the inbound policy is DCO sign-off (not sure what the need for the ECA is on top of that, but that's another story), all contributors retain their copyright. Thus the exception shouldn't be specific to Oracle. I don't know the history here is and maybe it was appropriate at one time to only come from Oracle if they were the only copyright holder (I believe, they use an assignment agreement for contributions to their project, so this could have worked under that paradigm). But given the Eclipse Foundation licensing policy this exception may need to be updated.

other code is making a combined work based on this
library. Thus, the terms and conditions of GPL2 cover the
whole combination.
</p>

<p>As a special exception, Oracle gives you permission to
link this OpenJDK Code with certain code licensed by
Oracle as indicated at
http://openjdk.java.net/legal/exception-modules-2007-05-08.html
("Designated Exception Modules") to produce an
executable, regardless of the license terms of the
Designated Exception Modules, and to copy and distribute
the resulting executable under GPL2, provided that the
Designated Exception Modules continue to be governed by
the licenses under which they were offered by Oracle.
</p>
</item>
</list>

<p>As such, it allows licensees and sublicensees of Oracle's GPL2
OpenJDK Code to build an executable that includes those
portions of necessary code that Oracle could not provide under
GPL2 (or that Oracle has provided under GPL2 with the Classpath
exception). If you modify or add to the OpenJDK code, that new
GPL2 code may still be combined with Designated Exception
Modules if the new code is made subject to this exception by
its copyright holder.
</p>
</text>
</exception>
</SPDXLicenseCollection>