I'd really like to sort out the situation with resource limits. My patch to allow setting a larger mochiweb connection limit was committed (COUCHDB-705), but currently there's no easy user story for increasing things like ERL_MAX_PORTS. I'd also be nice if we could allow people to pass arbitrary flags to the vm. For example, I only recently discovered how nice the +A option is. Unfortunately, the solution I have in production to avoid clobbering the init script is to have the couchdb user use bash as a login shell and export ERL_MAX_PORTS and ERL_ZFLAGS in .bash_profile. I think this is a really hackish thing to do to a daemon.
COUCHDB-590 has been sitting idle for quite some time. I recently discovered /etc/security/limits.conf and so I closed it as invalid and distro specific. With that taken care of all we really need is ERL_MAX_PORTS. rnewson suggested I look at ejabberd. I found that they source /etc/default/ejabberd in /usr/sbin/ejabberd. Couch doesn't do this, which I actually sort of like, because it lets you launch couch by hand without grabbing all those variables. I'm thinking that anything after a "--" could be passed straight to erlang, which covers flags like +A <n>. But how should one set an arbitrary environment for couch? I'd be fine with something like /etc/couchdb/environment which gets sourced by bin/couchdb. Thoughts? I think it'd be unfortunate if this story wasn't sorted out before 1.0.