For some random reason the jabberd14 1.4.3-3 server died on the weekend. It became more and more unstable. So I thought I'd try ejabberd, which uses the amazing power of erlang to segfault (it failed to allocate 200MB on my 128MB system)
So I tried to use jabber2 (a complete rewrite from scratch), but it was unable to build in my limited etch environment. So I tried jabberd14 1.6, which I eventually fixed all the compile errors only to have it segfault too. At that point I decided I'd be happy with an upgrade to jabberd14 1.4.4. Well that was a dud, as it was incompatible with my existing database.
So I figured that I should just do a fresh install of the original 1.4.3 server. Except I deleted the working configuration by mistake. At this point I would like to quote something I find regarding jabber servers:
"Are you against *anything* that makes configuration easier?"
I think that sums up the situation - there are multiple scripts and config files, some are shell script configs, some are .xml files. They all are linked by common magic words. You have to set certain tag attributes to match between files, and certain other attributes must disagree.
To top it off, there is almost no useful debugging information. But my all time favourite 'feature' is the fact that to install the multi user chat, you install a special package (these seems reasonable), then you have to know to edit the file /etc/jabber/jabber.d/jabber-muc and change ENABLED='0' to ENABLED='1'. Oh, and the startup script has a race condition in it - it waits for 2 seconds then exits if the server isn't running yet (on my limited system it si no uncommon for this to fail).
How hard is it to write a jabber server anyway?!