CouchDB Developer Profile: Joan Touzet

 If you’re following the Apache CouchDB dev mailing list, then you’ve probably been seeing a lot of updates about testing recently. At the forefront of that effort is Joan Touzet. Joan is a long-time committer and PMC member for Apache CouchDB, as well as the point of contact for the CouchDB Code of Conduct. Both getting people excited about using CouchDB and making it easier for them to use it are two aspects of the project that Joan is very enthusiastic about seeing through.

Joan recently offered us some insights into the CouchDB project from her perspective.

Do you want to talk about your background, or how you got involved in CouchDB?

A fellow graduate student introduced me to CouchDB while I was working on systems for student work support and analysis. We used it to extract things students posted on class forum software and then ran various analysis over it, like latent semantic analysis.

I started using the replication feature early on to sync data between multiple servers and my workstation, which was super easy!

I started working at Cloudant shortly after that – I was employee #20 and did a number of things, like devops, development, support and field work. I left Cloudant about a year after they were bought out by IBM.

What areas of the project do you currently work on?

Since returning to active work on the project a few months ago, I’ve been focused on testing, packaging and project management work.

Our test suite has two parts: unit tests written in the Erlang eunit framework, and integration/API tests written in JavaScript. We run these tests regularly in two continuous integration systems: Travis and Jenkins. I’ve been following up on some intermittent failures in these tests.

Packaging is something that got left behind for our 2.0 release, but only in the interest of time. With community sponsorship, I’ve been able to release beta Debian, Ubuntu, CentOS and Windows packages for 2.0. I’m working now to automate this process so that packages can be built with each successful run of our test suite for our major release branches as well as the master branch.

In the future, I hope to extend this to other CouchDB community contributions, such as Cloudant’s full-text and geo search open source addons. Reducing the amount of effort it takes for us to put new releases out the door, and for people to use those releases, is a passion of mine.

What’s a recent development of the project that you’re exited about?

CouchDB was one of the first Apache projects to use git. We’re also now one of the first projects to leverage GitHub more actively than before, beta testing a new integration provided by the Apache Software Foundation’s infrastructure team.

The new integration allows us to manage pull requests and issues directly on GitHub, rather than separately through the traditional JIRA setup. I’ve been spearheading the effort to move onto GitHub issues. We finally went ‘live’ with it about 2 weeks ago.

On a daily basis I triage and curate filed issues. I’m really excited about how much easier this will make it for community members to interact with the developers!

What would you say are the top three benefits of using CouchDB as a database solution?

  1. Sync. It’s the “killer feature” of CouchDB. Whether you’re doing offline-first client development, running a clustered database or distributing data between various server installations, CouchDB’s master-master replication is better than anything I’ve ever used. It Just Works(tm).
  2. Ease-of-use. Every programming language has an HTTP library, and almost all have a JSON library, too. That’s all you need to be successful with CouchDB. Sure, there are language-specific CouchDB client libraries, but in general I don’t find them necessary. It’s just so easy to get going with CouchDB.
  3. Powerful and versatile secondary indexing capabilities. Yeah, it’s a mouthful, but you can do all sorts of interesting things. For simple indexing, we have the Mango library in 2.0. If you want to get more complex, you can write a JavaScript Map/Reduce function. And there are open source addons for full-text search and robust geo indexing, too. I’ve yet to find a kind of indexing that I’ve been unable to do with all these tools at my disposal.

What do you look forward to in the future of CouchDB?

The CouchDB PMC has put together a wishlist for the next few years of CouchDB that includes some great new features relating to our clustering ability (making it easier to scale and administrate), improving Mango’s support for additional search types (“joins”, reduces, bitwise operations, document validation), pluggable storage engines, selective sync, and a “mobile first” replication protocol leveraging HTTP/2.

We even have some ideas to make it easier to contribute to CouchDB, such as figuring out how we could support Elixir plugins. The future is very bright!

What advice do you have for someone who just discovered CouchDB?

  1. If you know SQL, don’t approach CouchDB like a database that you know. Step back from your “5 normal forms” and start afresh. Check out some of the community frameworks around CouchDB (like Hoodie), that make it easy to write applications.
  2. Hang out in our Slack or IRC channels to ask questions.
  3. Don’t be afraid to get your feet wet!

For more about CouchDB visit couchdb.org or follow us on Twitter at @couchdb

Have a suggestion on what you’d like to hear about next on the CouchDB blog? Email us!

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s