Xapian Developer Guide 1.4

Xapian is an open source search engine library, which allows developers to add advanced indexing and search facilities to their own applications. This manual aims to explain how to work on and contribute to Xapian itself; if you want to use Xapian in your own project, you should look at our Xapian user manual.


This is early days for this guide, so please let us know any issues you spot or how we can improve it in any way.

Since Xapian is an open source project, it is entirely dependent on contributions – many of them from people like you! These contributions come in many forms, from spotting when some documentation isn’t clear and maybe improving it, through fixing bugs up to designing and implementing completely new features. We need all types of contribution for Xapian to continue to evolve and serve its users.

This guide is intended to:

  • help you understand how to make and contribute changes to Xapian
  • lay out some of our “rules of the road”, which are there to make it easier for everyone to collaborate on Xapian

We recommend you at least skim through all of this guide, so you know what information is available to you. However, if you absolutely must jump in head first, you should at least read our advice for new contributors.


Talk about how to manage security issues. This article may be helpful.

Getting in touch

The Xapian community typically works “in the open”, via mailing lists and a chat channel:

  • Our mailing lists are open for anyone to join, although (because we don’t want to relay spam to everyone) if you aren’t subscribed to the list someone will have to manually approve your message. Please be patient and don’t resend a message just because it doesn’t appear right away.
  • We’re on #xapian on irc.libera.chat, which is bridged to the matrix room #xapian:matrix.org. Note that because we’re distributed around the world you may not get an instant response. That doesn’t mean we’re ignoring you, so either hang on for a reply, or you can use the mailing list instead.



There needs to be a section about macOS and bindings, somewhere.