I'm not keen on prolonging this agony, but I am going to respond to these points.

On 06/02/2009, at 3:43 PM, Paul Davis wrote:

A brief history:

1. The mythical IRC conversation on 'removing' the feature: (roughly quoted)

It wasn't mythical - Damien has stated that is what happened. Why do you use the word 'mythical'?

Damien: I don't think we can support transactional commits in the face
of multiple nodes. We can do ACID writes to disk so that updates
aren't lost, but checking with an unbounded number of servers that a
commit doesn't conflict isn't feasible.

Not unbounded. Look at Scalaris. And in any case, what exactly is this multi-node mode? Why compromise the API for something that is so ephemeral that conflict management isn't feasible? What IS feasible? View consistency? MVCC semantics. If I write a document and then read it, do I maybe see an earlier document. What about in the view? Because if views are going to have a consistency guarantee wrt. writes, then that looks to me like distributed MVCC. Is this not 2PC? And if views aren't consistent, then why bother? Why not have a client layer that does content-directed load balancing.

Regardless, this discussion is also about whether supporting a single- node style of operation is useful, because CouchDB had an ACID _bulk_docs. IMO it's also about, the danger/cost of abstracting over operational models with considerably different operational characteristics - c.f. transparent distribution in object models.

Everyone else: That's pretty reasonable.

Everyone == ? Damien told me explicitly that this change was decided, and that decision was made on IRC.

What's with this revisionist history Paul?

2. A patch was applied to trunk that made commits to CouchDB
optionally ACID compliant (which gives users the traditional
speed/safety choice) as well as removing the atomic 'all or none'
semantics.

If it's not all or none then it's not ACID with respect to the user data model. Conflicts are a metadata feature.

Near as I can tell Damien has been nose to the grindstone for quite
some time on this very specific part of the api. Would I like more
status updates and ideas on where he's heading? Of course. Do I trust
him? Yes. Is the community as a whole going to blindly accept some
asinine patch that has no value that removes a crap load of
functionality? No.

Is the PMC going to accept some massive patch that has significant benefit, but as a side effect removes a key feature, for no good technical reason? That's what is happening. Damien's patches are neither asinine, nor of no value. On IRC Chris Anderson noted in response to a question that Damien has a heap of changes coming, but that we (the community) have to wait and see what they are.

I tend to think that the 'discussion' that everyone keeps referring to
hasn't even occurred yet. I look at the patch that was applied that
caused this as an unfortunate early release.

And if commits don't represent some sort of decision, what are they? I saw the patch, thought WTF?, asked about it, and was eventually told that yes, a decision had been made that the ACID API was being removed.

Admissions first: I have no money riding on this issue. Whether or not
CouchDB has transactional _bulk_docs worries me not at all. Though, I
can't say that I have that much sympathy for a business model that
relies on an open source project's trunk to remain compatible with
required assumptions.

Having an ACID guarantee explicitly stated, and then removed with no replacement, is not a 'required assumption' on my part. ACID is a big deal.

And in any case, my 'business model' response is to fork CouchDB, which is the appropriate response. But still, do you want people to use this project or not? Promote it or not? What message does that send?

Reductio ad absurdum:

That's about right.

Antony Blakey
--------------------------
CTO, Linkuistics Pty Ltd
Ph: 0438 840 787

Don't anthropomorphize computers. They hate that.


Reply via email to