Relicensing Libabigail to Apache 2.0 + LLVM Exception

Dodji Seketeli dodji@redhat.com
Tue Jun 23 07:45:09 GMT 2020


Hello,

I have been thinking and consulting a lot lately about increasing the
reach and usefulness of the Libabigail project.

While doing so, I identified some opportunities that I would like to
share with you.

I) Goals I want us to achieve as a community
============================================

I want to get us closer to two main goals:

1/ Increase the practical reach of the Libabigail library by allowing
its embedding in most of the Free Software licensed code bases that
are not compatible with LGPL-V3 today.

For instance, in many of the Free Software GNU/Linux distributions,
there are code bases that use licenses that are not compatible with
LGPL-v3 today.

And yet, linking with Libabigail can be interesting for projects that
e.g., distribute plugins and would like to detect ABI
incompatibilities at plugin loading time.  I want to increase the
(lacking) capabilities of Libabigail in that area, but that is
significantly less effective if many Free Software projects won't use
those functionalities just because of a legal incompatibility.

Said otherwise, Libabigail in essence is software for other software.
It's meant to be used by other software to build better systems.  So
it needs to be legally compatible with virtually all the Free Software
we distribute in our Free Software world today.  To that end, I want
to avoid putting arbitrary overly restrictive limitations to its use
by Free Software.

2/ Foster project contributions by lowering legal barriers to entry
for contributors.

There are Libabigail users and contributors who live and evolve within
corporate constraints, just like myself.  Some of those users, who are
extremely Free Software friendly human beings, have to deal with legal
realities that prevent them from contributing and re-distributing
(L)GPL-v3 code or even copyleft code in general.

And yet, I consider these people as my fellow Free Software Hackers
and I don't wish to erect more barriers among us.  No matter what
corporate wall separate us already, we are in this Free Software world
together; we are a community.  And my bet is that the more they can
contribute, the stronger this community.  So I want them to contribute
to this project within their current constraints, as much as
possible.

There are several ways to achieve that, of course.  One of them,
somehow in our control, is to have a license which allows them to
contribute in a way that is compatible with their constraints, without
giving up our Free Software ideals or inclinations altogether.

3/ Keep patent protection

At the same time, I want the project to keep protecting users and
contributors by still having an explicit patent protection and scoping
of the license.


II) License change
==================

I intend to change the project's license to be 'Apache 2.0 with LLVM
Exception'.

It seems to me that the Apache 2.0 license is one of the best choices
out there today to achieve the second goal, given its very liberal
inclination.

The LLVM exception allows it to be compatible with (L)GPL-v{2,3} and
most non-copyleft licenses out there today, and thus brings us closer
to the first goal.  Lastly, the combination of the two complies with
the patent protection requirement that I expressed in the third goal.

I have informally discussed this matter with all the contributors of
the project and we have reached an agreement about this change.  I am
thus comfortable with lifting the veil on this "license change
project" with you, the greater Libabigail Community.

III) Process of the License change
==================================

After thinking about this, consulting with several people including
our legal team here at Red Hat, here is what I think the process of
the relicensing project is going to look like:

1/ Create a branch named "relicensing" based on the current content of
master.

2/ Perform and commit the relicensing changes in the relicensing
branch.  In concrete terms, the relicensing changes are the
following:

** Change the license header of each source code file.  The new header
will be just a SPDX license identifier like this:

    SPDX License Identifier: "Apache-2.0 WITH LLVM-exception"

This allows easy identification of the license per file and avoids
ambiguities of the license identified by just the preamble.

** Remove the files COPYING, COPYING-LGPLV3 and COPYING-GPLV3 files from
the repository.

** Add a LICENSE.txt file with the content of the Apache-2.0 with LLVM
exception as found at http://llvm.org/foundation/relicensing/LICENSE.txt.

** Add a file named license-change-2020.txt which contains text
explaining that we went through a license change in 2020, from
(L)GPLv3 to Apache 2.0 with LLVM exception.  The text specifies that
LGPLv3 continues to apply to prior versions of the software.

3/ The relicensing changes made in 2/ need to be accepted by each one
of the contributors, on the mailing list, just as for any patch
review.  There will be a signed-off line (per contributor agreement)
added to the commit message like:

    Signed-off-by: First Last <contributor@email.com>

Note that during the period of 3/ no patch from a /new contributor/
will be accepted in the master branch under the terms of the previous
license.  The master branch will effectively be frozen to new
contributors.

If existing contributors send a patch to the mailing list during the
period of the freeze they need to state in the commit log that the
code is being contributed under the Apache License 2.0 with LLVM
exception.  Otherwise, we won't accept the patch in master.

4/ Once the relicensing patch is signed off by everybody in the
relicensing branch, that branch is rebased on top of master and merged
into master.  At that point, normal development can resume in the
master branch.  The next release of the project is going to have
version "2.0" and it's going to use the new Apache 2.0 + LLVM Exception
license.

IV) The relicensing branch
============================

At of this writing some of us started working on what the relicensing
branch is going to look like.  It's temporary content arranged in a
few patches can be browsed online at
https://sourceware.org/git/?p=libabigail.git;a=shortlog;h=refs/heads/dodji/r.

I'll be posting a patch set to the mailing list, containing the
relicensing changes.  I will thus ask you, dear maintainers, to review
the changes. And after you complete the review, to acknowledge the
changes by sending a reply with a Signed-off which looks like

    Signed-off-by: First Last <contributor@email.com>

That will effectively allow us to formally finish the relicensing
process, commit the changes into a branch formally named "relicensing"
and merge that branch back into master.

Thank you for reading so far and please stay tuned for the relicensing
patches coming near you soon.

-- 
		Dodji



More information about the Libabigail mailing list