Help develop cyrus, was Re: Wiki, information on database back ends.

Rob Mueller 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 
> sayin....

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 
struct.

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 
back).

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 
again.

If you want to look at the latest code right now, you can check out the 
cyrus fastmail branch that Bron maintains on github.

http://github.com/brong/cyrus-imapd/tree/fastmail

Rob



More information about the Cyrus-devel mailing list