Relicensing Xapian

Olly Betts olly at survex.com
Thu Jan 9 00:22:18 GMT 2020


This is an update on the current status of the relicensing, but also an
opportunity to give feedback.  Sorry it's rather long, but I think it's
necessary to summarise the situation - there are probably list members
who weren't even born at the start of the history of this!

Xapian is currently licensed as GPLv2+, but isn't something we actually
chose for Xapian, but rather due to a historical accident - it's the
licence of the codebase that Xapian was originally based on.

To briefly summarise that early history, Xapian has evolved out of a
codebase known as "Open Muscat" which was released under GPLv2+ by
BrightStation PLC (most recent contribution 2001).  We don't have
permission to relicense BrightStation's code.  After BrightStation stopped
developing the code, there were some contributions copyrighted Ananova Ltd
(most recent 2002) and then a very small number from Orange PCS Ltd which
took over Ananova (most recent 2003).

GPL causes problems for the PHP bindings (because the GPL and the PHP
licence are apparently incompatible due to 'Products derived from this
software may not be called "PHP", nor may "PHP" appear in their name,
without prior written permission from group at php.net').  Currently we just
suggest people build Xapian's PHP bindings themselves and don't distribute
the result, which causes a significant amount of user frustration and some
support load.  And it means that distros which ship binary packages
can't package our PHP bindings, and so also can't package software which
uses them.

It's also problematic if you want to use Xapian and OpenSSL in the same
application, which has caused problems for pinot:
https://github.com/FabriceColin/pinot/issues/3

OpenSSL 3.0 is set to change the OpenSSL licensing which will solve this
issue, though not until Q4 2020 at the latest estimate:
https://www.openssl.org/blog/blog/2019/11/07/3.0-update/

Probably the majority of uses of Xapian are web-related, and if Xapian is
running on the server and the code isn't being distributed the copyleft
provisions of the GPL don't kick in anyway.  (AGPL would address that,
but we concluded we didn't want to make the licence more restrictive.)

And there's also other FOSS software which fulfils a broadly similar role
to Xapian and isn't GPL-licensed.

So we concluded many years ago that we'd like to be able to relicense
eventually.  We got the agreement of all existing contributors aside from
BrightStation, Ananova and Orange, and from then on we've asked new
contributors to provide their changes under both GPLv2+ and MIT/X.
If you've contributed to Xapian and have not given your permission for
the relicensing, please let us know right away.

The current status is that if you configure git master with
--disable-gpl-libxapian then you'll get a build with some features
disabled which only contains code that we should be able to relicense (NB
the code hasn't actually been relicensed yet).

This option currently disables the following:

* glass backend
* inmemory backend
* remote backend
* replication

The only backend you get is the new "honey" backend which currently only
supports reading.  To create a honey database, you currently need to use a
full build of xapian-core, build a glass database, and then use
xapian-compact to convert it to honey, so right now this build is not all
that useful, but it shows how far we've come.

Many of the tools (e.g. xapian-check, xapian-delve, etc) and testsuite in
xapian-core still contain GPL code, as does Omega.  We don't plan to try
to relicense these at this point, nor the glass and inmemory backend.

We do plan to enhance honey to support write operations and to support
databases stored in memory (to replace the current inmemory backend which
is not built for performance), and to replace the code that's blocking
relicensing of the remote backend and replication.

We've discussed relicensing several times in the past, but reviewing those
threads we didn't actually choose a specific licence.

Some requirements:

+ Compatible with GPLv2 (we don't want to force existing users to have to
  relicense their own code)
+ Widely compatible with other commonly used licences
+ "Well known"

We also want the licence to align with how we expect the community to work
together.  We want people to contribute back their changes so that
everyone can benefit from them, and the Mozilla Public License seems a
good fit for this - it's essentially file-scope copyleft:
https://www.mozilla.org/en-US/MPL/2.0/FAQ/#copyleft-scope

MPL should solve the compatibility problems such as those with PHP and
OpenSSL I mentioned above.  It's compatible with other commonly used
licences (explicitly so for GPLv2+ via MPL §3.3).  And it's well known.

We'd like to hear from you if you have problems due to the current
licensing which relicensing as MPL 2.0 wouldn't solve, or if the
plan to leave xapian-omega and xapian-core's tools & testsuite as
GPLv2+ is a problem for you.

Cheers,
    Olly



More information about the Xapian-discuss mailing list