This page describes the current expected direction of future development of Xapian. Please note that any future dates mentioned here are only estimates.
Releases are given three-part version numbers (e.g. 1.2.9), the three parts being termed "major" (1), "minor" (2), and "revision" (9). Releases which differ only in revision are termed a "release series".
For Xapian releases 1.0.0 and higher, an even minor version indicates a stable release series (e.g. 1.0.x, 1.2.x), while an odd minor version indicates a development release series (e.g. 1.1.x, 1.3.x).
Within a stable release series, we strive to maintain API and ABI forwards
compatibility. This means that an application written and compiled against
X.Y.a of Xapian should work, without any source changes or need to
recompile, with a later version
X.Y.b, for all
Releases are not explicitly time driven, but we aim to make a release every one to two months.
Within a stable release series, releases should be upwardly API and ABI compatible. They may introduce new features (so applications may need to depend on a release with at least a particular "revision" number if they need these new features).
Stable releases which increase the "minor" or "major" version number can change the API and/or ABI in incompatible ways, though we will attempt to do this in a way which makes it reasonably easy to migrate applications, and document this in our "deprecation" policy document.
We expect that it will typically be one to two years between stable release series, and one to two months between releases within a release series.
The idea behind having a development release series is that it allows users to easily try the latest and greatest code if they wish without worrying too much about the ground shifting from under them. Those favouring stability over everything else can stay with the previous stable release series.
Xapian 1.1.x was our first development release series, and seemed to work well, so we're intending to continue to adopt this approach. Should we ever decide to skip a development release series, we intend to skip the odd minor number too (to try to avoid confusion).
In a development release series, API compatibility should be maintained between releases, except for features which are explicitly marked as "experimental". ABI compatibility may not be maintained (so upgrading to a new release may require a rebuild of user applications), but won't be broken without a good reason (so we'll try to "save up" ABI incompatible changes).
The default backend will remain compatible between releases. If you're using the development backend ("chert" for the 1.1.x series) you may need to rebuild databases from scratch after upgrading, but again we won't make incompatible changes without a good reason.
We may also update the Unicode tables used to a newer version during a development release series (e.g. Unicode 5.2 was released while we were still working on 1.1.x, so we updated to it). Similarly for the Snowball stemming algorithms. Such changes will mean that rebuilding a database from the same data from scratch will give slightly different terms in some cases, and similarly some queries will parse to give different terms, but the cases of difference should be rare and fairly obscure, and such cases generally won't have worked well before the change, and will work better after with a reindex.
You can have a stable release and a development release (e.g. Xapian 1.0.x and Xapian 1.1.x) installed at the same time without them interfering with one another, at least for the core library. This may not work so well for the bindings though.
Once a stable release has settled in, a branch will be created to maintain it with "revision" releases being made as necessary. Patches and merges from feature branches will be applied to git master first, with changes suitable for the stable release branch being backported from there (so that changes get more testing and to help us keep track). When we decide it's time, we'll start a new development series (by increasing the "minor" version number to be odd). Development releases have so far just been made from trunk, which seems to work pretty well. The development series will gradually get stabilised until it is ready to be declared stable, at which point it will become the start of the next stable release series.
Increasing the "major" version number will probably be used to indicate particular major changes.
To allow us to concentrate our resources on improving Xapian, we don't plan to support the previous stable release series for long once a new stable release series has been started. If you want longer term support for an old release series (which probably mostly involves back-porting suitable fixes from the new stable release series), you're welcome to volunteer to maintain it, or to hire someone to maintain it for you.
1.4 Stable Release Series
1.4 is the current stable release series. Changes must not involve incompatible API or ABI changes.
1.4.16 is likely to be released in May 2020.
1.2 Stable Release Series
The 1.2 release series is now retired. We don't plan to make further 1.2.x releases, and recommend users upgrade if they haven't already.
1.0 Stable Release Series
The 1.0 release series is now retired. We don't plan to make further 1.0.x releases, and recommend users upgrade if they haven't already.
For dates of releases prior to 1.0.0, see xapian-core/NEWS from the 0.9 branch.
1.3 Development Release Series
The 1.3.x series was a "development" release series, which lead to the stable 1.4.x release series. Development is now closed.
1.1 Development Release Series
The 1.1.x series was a "development" release series, which lead to the stable 1.2.x release series. Development is now closed.