This text is a reformatted version of a message sent to xapian-discuss.
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
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-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.
- 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.