Hi everybody, For background, we discussed this on IRC almost a fortnight ago & I wrote up a proposal.
Situation: The user experience for installing CouchDB from packages, or building from source, is at best painful, due to dependency drift of our 2 core pre-requisites, Erlang/OTP and SpiderMonkey. - Installing from packages typically delivers you an out-of-date erlang, possibly unsuitable for production, or relying on backports. - Building from source leads you to a bewildering array of wiki links, blog posts, INSTALL.* in github/ASF git, and a variety of other options. Neither of these are good outcomes, and even as developers we (at least I) struggle to remember the exact incantation and sacrifices for an older release. Proposal: 1. Consolidate all the install documentation we have into just 2 places: - INSTALL.* for the steps/dependencies required to build from a source release. These will have been tested by devs & community during a release cycle so we can be sure this is appropriate. 2. rst / online docs: - a .rst doc that lists typical package dependencies and supported releases. As these are in a 1.2.x or similar branch, and subsequently generated on http://docs.couchdb.org/ they can be easily amended and updated over time, whilst still preserving the history that we lose on the wiki. This would include what packages are recommended, and how to obtain them. The wiki pages would be retired, and in practice the bulk of updates here comes from the usual suspects anyway. Specifically, for spidermonkey and Erlang, I am proposing that we recommend using: - erlang releases from Erlang Solutions [esl] - spidermonkey from cloudant [cloudant] This will not prevent those who wish to, to use only bundled packages in their OS, but it *will* ensure that building from a recent source will actually work reliably, and repeatably, and can be tested as part of the CI work that Jan's been leading. Comments & criticism welcomed! A+ Dave Background: The version of CouchDB available in recent & current distribution lags our latest release significantly. In many cases, the dependencies required for CouchDB are not ideal, or in some cases, even compatible, and neither maintainers nor ourselves are able to address this easily. Lucid (LTS): ok, but doesn't support NIFs Oneiric: amd64 has R14B02, which is not usable at all. Precise & Quantal: good (yay) Squeeze: r14a (wat) Wheezy: r15b01 good - yay And in all cases, spidermonkey is typically a hit-and-miss fiasco. This again, is not due to a specific failure, just a reality that we rely on a library that's primary purpose is a web browser, as opposed to an embeddable component like libcurl or icu. [ubuntu]: http://packages.ubuntu.com/search?keywords=erlang-base [debian]: http://packages.qa.debian.org/e/erlang.html and http://packages.debian.org/search?suite=all&arch=any&searchon=names&keywords=erlang-base [cloudant]: http://packages.cloudant.com/ [esl]:https://www.erlang-solutions.com/downloads/download-erlang-otp
