Relicensing

Oliver Kopp edited this page Jun 28, 2018 · 24 revisions

Background

Originally, the JGraphT project was released under the LGPL. The Eclipse Software Foundation, however, decided to disallow LGPL libraries in their projects (http://mmilinkov.wordpress.com/2009/04/30/lgpl-pain/). A similar issue applies for projects under the umbrella of the Apache Software Foundation (http://www.apache.org/legal/resolved.html).

As a reciprocal license, LGPL requires anyone redistributing JGraphT to publish any source code changes they make. As the Eclipse Public License (EPL) also requires this, it seems like a good choice for resolving the incompatibilities. Hence we've completed this initiative to dual license JGraphT under LGPL and EPL. As an example of other projects for which this has been successfully done, see the Logback project and the qooxdoo project.

Why dual licensing?

The EPL and the GPL are inherently incompatible licenses. Licensing JGraphT solely under the terms of the EPL would make it impossible to use JGraphT in GPL-licensed projects. Therefore, the EPL is added as license choice to JGraphT and not intended to replace the LGPL license.

Why the Eclipse Public License?

The Eclipse Public License is a weak copyleft licence and thus also ensures that changes in the code are made available in case a binary is distributed. Furthermore, the EPL is compatible with the regulations of the Apache Software Foundation ("Category B: Reciprocal Licenses" in http://www.apache.org/legal/3party.html), which allows JGraphT to be used in Apache 2.0 projects.

Why not some other license?

It is not proposed to relicense JGraphT under BSD, MIT, or Apache 2.0 license as it is acknowledged that the original authors may want modifications of their code being published, and these kind of licenses do not enforce that.

Proposal

It was proposed to relicense JGraphT under the following terms:

JGraphT Licensing Information
=============================

JGraphT may be used under the terms of either the

 * GNU Lesser General Public License (LGPL) 2.1
   http://www.gnu.org/licenses/lgpl-2.1.html

or the

 * Eclipse Public License (EPL)
   http://www.eclipse.org/org/documents/epl-v10.php

As a recipient of JGraphT, you may choose
which license to receive the code under.

This also includes future commits. Contributions will only be accepted with the understanding that the contributor's code will be released under both licenses and that a user may freely choose between one of the licenses.

Contribution History

Contributions to JGraphT were historically LGPL-only, with no Copyright License Assignment (CLA) required from contributors. As such, relicensing required seeking the consent of all contributors (or possibly removing contributions for which such consent has been withheld). We made a best effort to contact all past contributors and request their consent. JGraphT has a long history (going back ten years to 2003), including many small contributions from one-time contributors. If we didn't hear back from someone within a few months, we assumed Qui tacet consentiret.

Discussion

This proposal was discussed on the mailing list.

Final Status

2013

  • Total unique contributors: 58

  • Current email contact data missing: 5

  • Acceptances received: 53

  • Rejections received: 0

  • Pending answers: 5

Given that we were able to get consent from all but a very small number of contributors, we decided to proceed with the dual licensing and completed that for the 0.9.0 release.

2018

UPDATE June 20, 2018: All code from the 5 contributors whom we were unable to contact has been removed from the master branch, so the next release (after 1.2.0) will consist entirely of code for which dual licensing was approved by all contributors.

Additionally, we also could contact two more contributors, so

  • Total unique contributors: 58

  • Current email contact data missing: 3

  • Acceptances received: 55

  • Rejections received: 0

  • Pending answers: 3

You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.