CouchDB did not merge with membase. You are thinking of Couch One, the company. CouchDB remains an Apache project.
HN user
rnewson
atomicity doesn't mean, or imply, instantaneous.
However, a document update in CouchDB is fully ACID (including the A of Atomicity). People often confuse transactions around multiple changes with ACID for reasons that I cannot fathom. CouchDB does not have support the former (they don't scale well in clusters) but absolutely supports the latter.
And BigCouch has sharding too (edited to add: for data and views)
For my part (and I'm biased) a database that doesn't consider durability paramount shouldn't be considered a database at all.
My counterpoint is that Cloudant test and harden the CouchDB that we embed, it's not, for various reasons, a verbatim copy of CouchDB itself.
That said, vanilla CouchDB is quite stable. While there are always bugs, I don't recognize the system that the original poster is describing.
Describing Bigcouch as a bit of hack while admitting you've not used it seems a little unfair. That said, it's very valuable to hear how other people see our product.
Without doing a full-on sales pitch (I am not a salesman and do not portray one on TV), I should say that Bigcouch adds a lot of desired features to CouchDB, notably scaling beyond a single machine and sharding (which supports very large databases). We run several clusters of Bigcouch nodes in production and have done for some time, it's a thrill for me personally to see a distributed database take a real pounding and keep on trucking.
I've been meaning to try Riak myself, so you've inspired me to finally pull down the code and give it a proper examination.
There are several reasons for CouchDB's use of a single, strictly append-only file, but the b-tree is not one of them.
In fact, it's one of CouchDB's most clever tricks to store a b-tree in an append-only fashion (it's far more common to update in place).
Two reasons CouchDB is strictly append only.
1) Safety: By never overwriting data, it avoids a whole class of data corruption issues that plague update-in-place schemes.
2) Performance: Writing at the end of the file allocates new blocks, leading to lower fragmentation and less seeking than an update-in-place scheme.
"durability" does not mean "the file is...never left in an odd state". The right word there is "consistent". CouchDB provides both (In fact it provides all four ACID properties, but the scope of a transaction is constrained to a single document update).
Finally, I should point out that using a single file, as opposed to a series of append-only files (like Berkeley JE, for example) is just a pragmatic choice. Nothing in principle would prevent a JE style approach, it's just a lot of (quite hard) work to do well.