We interviewed Damien Katz who is leaving Apache CouchDB behind, moving further with Couchbase Server, and porting large portions of the code from Erlang to C/C++. We also picked up reactions from the community.
Damien Katz, creator of CouchDB, has announced on his blog a major change with CouchDB and his future work on it. Katz wants to continue working on Couchbase Server, a product that combines CouchDB with Membase and Memcached, but “definitely not part of Apache”. He wants that because in his opinion “it's reached a point where the consensus based approach has limited the competitiveness of the project." Also, he said that he would do many things differently if he was to start again. One of the main changes is porting large amounts of the code from Erlang to C/C++.
We reached to Katz for clarifications.
InfoQ: It seems from what you say that the Apache process is too slow, and does not necessarily lead to a competitive product. What was the main problem with Apache?
DK: We need to be responsive to our customers and users needs, and that often proved difficult and frustrating with the Apache project process. Keeping code in sync was a huge pain.
InfoQ: What are the things you would do differently if you started CouchDB from scratch?
DK: Lots of small design decisions I'd do differently, but the big picture design is solid. I'd not have chosen Erlang if I knew what I know now. But Erlang help me learn and prove what I know now, so its not like it was a mistake, but if I had it do again, I'd be know all that stuff.
InfoQ: What is the problem with Erlang now that you tested it in a big, real-life product such as CouchDB? What are its limitations?
DK: Erlang is great. Very reliable and very easy to make reliable robust systems. But it's a very small ecosystem, and the investment around tooling and performance is lacking compared with other popular languages. I want Erlang to become mainstream. There is no reason Erlang can't be a fast or faster than Java, but it's odd syntax turns people off, limits it's popularity, and therefore it's commercial investment. But I still love Erlang, and we'll still use it for many critical components, just less and less for the performance critical components.
Till Klampaeckel, a long time CouchDB user, deplored Katz’s way of leaving the project:
It's not the fact that Damien left, it's how he left.
No one blames people for moving on: it happens all the time. I do it all the time — write code, push it out, move on.
If code is good enough it'll be picked up, if not, it'll rot on Github for forever. It happened to other projects and it happened to CouchDB. But why would anyone pronounce a project dead where he is not anymore invested in?
Klampaeckel also mentioned that “The future of CouchDB … is not Damien Katz.”
Regarding the whole issue, Katz commented on Twitter: “TIL, if you create an open source project, you should stick with it forever and ever. Family can live off unicorns and stardust”, and responding to a number of CouchDB users and contributors who dislike Katz’ position on CouchDB (see the comments to Katz’ post), he said: “Let me clarify, if you like Apache CouchDB, stick with it. I'm working on something I think you'll like a lot better. If not, well, there's still Apache CouchDB.”
The company behind Couchbase performed a product shakeup in December discontinuing Couchbase Single Server and Couchbase Mobile as a single product called Mobile SyncPoint, integrating the later with Couchbase Server, for avoiding further market confusion. The company will stop providing Single Server which is just a binary package of CouchDB, and instead will focus on Couchbase Server which will depart from CouchDB, according to its CEO Bob Wiederhold:
While Couchbase Server 2.0 will incorporate substantial technology from the CouchDB project, it will not be upward compatible with CouchDB and it shouldn’t be viewed as a “version of CouchDB.”
Mobile SyncPoint will be a framework for client and server applications to synchronize their data with Couchbase Server. James Phillips, co-founder and VP, mentioned the intent to maintain the protocol with CouchDB:
Our intent is to maintain 100% on-the-wire replication protocol compatibility with Apache CouchDB. We are NOT trying to "tightly couple" the mobile technology to our Couchbase Server 2.0 product. We are committed to ensuring you can use the iOS Mobile component to communicate with a pure Apache CouchDB Server.
Matt Ingenthron said that Couchbase will contribute their Single Server distribution binaries to Apache CouchDB, adding that “accepting and integrating is, of course, up to Apache CouchDB project members.” He also commented on the decision: “It was definitely a tough choice for us; we decided we needed to focus our product efforts as a company.”
The split with Apache CouchDB seems to have to do with different visions on how to evolve the product, and it’s driven by economics. Damien Katz and his team have invested a lot in putting together CouchDB and Membase, and while some of them still contributed to Apache CouchDB, they have been mostly involved with Couchbase, a separate project, also open source and covered by an Apache license.