Help develop cyrus, was Re: Wiki, information on database back ends.
robm at fastmail.fm
Tue Sep 14 20:01:06 EDT 2010
> I've spent quite a bit of time looking at cyrus 2.3.16 source code this
> summer, and it sure would have been helpful if the coders had taken 30
> seconds or a minute to write a few comments for each function. Just
We'd really like to get some more people helping out with cyrus development.
The work Bron has put into the 2.4 branch has been fantastic. He's
refactored mountains of code to make it much more readable and to put lots
of things behind APIs. Lots of "copy and paste" code is gone and now in a
function, and you don't have to poke into binary on disk structures all of
the place anymore, you just call a function to get the data back in a
He's also spent a lot of time on locking and reliability, and making sure
that many of the race conditions that were present in cyrus are dealt with.
The cyrus 2.4 code now passes the dovecot imap stress test, which heavily
tests the RFC conformance of message ID, UID and MODSEQ values in multiple
simultaneous connections, something cyrus 2.3 is inconsistent on. cyrus 2.4
fully supports CONDSTORE and QRESYNC extensions.
Also the replication engine has been pretty much completely rewritten. It's
now much more stable, uses a fraction of the bandwidth of the old system,
includes CRC integrity checking, and can even recover from a split brain
situation using UID promotion logic (Bron posted about that a few months
The net result of all this is that 2.4 is both a much better version of
cyrus, but also easier to develop on in the future. Along with the new
website, we're hoping to attract more interest from developers back to cyrus
If you want to look at the latest code right now, you can check out the
cyrus fastmail branch that Bron maintains on github.
More information about the Cyrus-devel