the autocreate feature (Cyrus IMAPd 2.3.7 Released)

Christos Soulios soulbros at noc.uoa.gr
Tue Jul 18 17:52:01 EDT 2006


Hi all.

I have seen this issue come up several times in the info-cyrus list. The 
answer to the question 'why isn't autocreate included in the cyrus 
distribution' is 'because it does not support the murder architecture'. 
The CMU developers do very well not to accept a patch that does not work 
with all possible configurations, since if they did otherwise, that 
would lead to a maintance nightmare. However, as mentioned before, the 
patch existed before murder was released, but no one knows why it was 
not included then.

Other than murder support, the autocreate patch is perfectly compatible 
and well tested with unix hierarchy separator, alternate namespaces and 
virtual domains. I am pretty much sure that it works with cyrus 
replication, although it is not tested yet and I have no reports by 
anyone playing with autocreate and replication code. All these are 
documented in the README.autocreate file distributed with the patch. (It 
can also be found here: 
http://email.uoa.gr/projects/cyrus/autocreate/README.autocreate-cyrus-2.3)

So, anyone who does not deploy a murder setup can use the autocreate patch.

The next question that comes to everyone is 'why don't you implement 
murder support for the autocreate patch?'. The answer is 'because it is 
not so easy to do it'. Actually, implementing such a feature for a 
murder environment is not simply a matter of writing some code. Serious 
design decisions have to be taken.

For example:
  - If a client contacts a front end, who decides in which backend 
should the mailbox be created?
- How should the frontend iniate a mailbox creation procedure to a 
specified backend?
- What should happen in every different murder scenario (standard, 
unified, replicated)? Especially when some architectures like replicated 
murder are not so well tested yet.
- The MUPDATE protocol (http://www.ietf.org/rfc/rfc3656.txt) may need 
some extentions/modifications to support the autocreate patch. Modifying 
an IETF RFC requires responsible decisions that can't be taken by a 
single developer.

One may understand, that there are two approaches to solving the above 
issues. The 'quick and dirty hack' approach, which would have some 
config variables for some of the above decisions. A patch like that 
could be produced in a few weeks time.

On the other hand, there could be a well designed, scalable solution 
that would have some inteligence (ie different groups of user mailboxes 
are created in different backends, the mupdate server performs load 
balancing in mailbox creation).

Since we, at the University of Athens do not use a murder enviroment and 
it is not one of our priorities either, we would go on implementing it 
only if the final result would be a well designed, extensible piece of 
code that would lead to integrating the patch into the main distribution.

In the past there were some efforts in the cyrus-devel list to start 
discussing an initial approach for the support of murder by the patch. 
However, they did not lead anywhere, as the patch was not within the 
priorities of the CMU developers. See threads:
http://email.uoa.gr/archive/message.php?mailbox=Software.cyrus-devel&searchterm=autocreate&msg=1048
http://email.uoa.gr/archive/message.php?mailbox=Software.cyrus-devel&searchterm=autocreate&msg=1585

Ever since this issue comes up from time to time but no progress has 
been made.

I hope this email answers some of the questions asked in this thread. 
However, what I want to ask is the following: What happens next? Since 
both the CMU and the UOA developers are too busy with their own 
priorities, can the cyrus community make some development work? Are 
there any people determined to work as a team and do some work on cyrus? 
And by this I mean, a true development cycle, which requires collecting 
all feature requests, prioritising them, presenting a decent feature 
roadmap, discussing design of the featues, distributing development 
responsibilities and finally making sure that the patches are pushed 
into the main distribution.

Of course, that requires an active community that is supported and 
encouraged by CMU, but above all it requires willing with programming 
skills and will to help.This would make cyrus work as lots of other 
opensource projects and would push the delivered product quality really 
high. That should be a priority for all cyrus developers, users.

Lastly, in the past there were some efforts to create this sort of 
community, starting with work in the also much discussed cyrus 
documentation via the cyrus wiki. However, this effort did not evolve 
and cyrus is still poorly documented.

Cheers,
Christos



More information about the Info-cyrus mailing list