• Fork me on GitHub

CouchDB Clients to Thali-enable

Introduction

Because we need a custom HTTP stack to enable our public key based identity infrastructure over SSL/TLS and TOR support we need to take an existing CouchDB client and enhance it. Below we walk through the choices we looked at and how we made our pick. Note that the other choices could, presumably be enabled to support Thali. But we had to start somewhere.

Java/Android

In the end we picked Ektorp but it has problems (easily fixed at the cost of perf) with CouchBase lite Android, see here for the easy work around.

Apache has a whole list of potential client libraries available here.

In evaluating each library I need to look for:

  • Does it have an Apache 2 compatible license?
  • Does it run both on desktop and Android?
  • Does it support easy access to a reasonable HTTP client that we can use to get our TLS mutual auth with self signed cert functionality working?
  • Does it deal with JSON in a manner that won’t make us won’t to rip our eyeballs out?
  • Does it help with admin style web commands such as setting up replications or configuring options on the server?
  • Does the project have an active community?
  • Does the project have documentation worth a damn?
LibraryLicenseDesktop & AndroidHTTP Client AccessJSONAdminCommunityDocs
EktorpApache 2.0Dedicated support for bothYup, including, it seems, the TLS hooks we needJacksonHelp with setting viewsTheir mailing list looks pretty dead but their commit rate is low but reasonably consistentYes!
JCouchDBApache 2.0It’s unclear if it works on AndroidNot immediately clear but given the client libraries it’s using it should be possible to hack it inJSONObjectViews and suchThe forum has light traffic and they seem to do a major release once a yearYes!
  • JRelax looks dead so I didn’t put it in the table. They haven’t had a commit in 2 years.
  • JCouchDB hasn’t had a check in in more than a year and a half.
  • DroidCouch hasn’t had a check in 3 years.
  • CouchDB4J hasn’t had an update in a year.

Given that CouchDB Lite Android uses Ektorp and that Ektorp seems to be the most active I’m going to start there.

C#/.net

I suppose it’s a good sign that there are tons of CouchDB clients for .net as it exposes how easy the CouchDB protocol is to support. But it is a pain when trying to actually pick one to use. [http://wiki.apache.org/couchdb/Related_Projects] has a list of projects.

In evaluating each library I need to look for:

  • Does it have an Apache 2 compatible license?
  • Does it run on desktop? store? phone?
  • Is it on nuget?
  • Does it support easy access to a reasonable HTTP client that we can use to get our TLS mutual auth with self signed cert functionality working?
  • Does it deal with JSON in a manner that won’t make us won’t to rip our eyeballs out?
  • Does it help with admin style web commands such as setting up replications or configuring options on the server?
  • Does the project have an active community?
  • Does the project have documentation worth a damn?
LibraryLicenseDesktop, store & phonenuget?HTTP Client AccessJSONAdminCommunityDocsNotes
MyCouchMITDesktop & Store, not sure about phoneyesYes, via IConnection Raw JSON & POCOI couldn’t find support for creating a replication commandI can’t find any sign of a real community but there are regular updates.They exist but are rather brief.Their claim to fame seems to be that they are completely asynchronous but use .NET’s asynch support to make that not suck. 
LoveSeatMITI can’t tellYes, but I think it’s an old versionNoThey have a POCO model.YesNot really, last check in was 3 months ago, last release was 2 years ago!YesThis is synchronous and simpler than say MyCouch.
DivanMITI can’t tellNoNoYesLots of the usual but no replicationMailing list link doesn’t work and no check ins for 6 monthsNoneLooks dead although I was under the (mistaken?) impression that a lot of people like it and it does have sample code
chesterfieldMITI can’t tellyesNoYes, POCOYesNoNoThis is a fork of both LoveSeat and DreamSeat. No check ins/releases for 9 months. They also have dependencies on a ton of DLLs.
ottoman
According to GitHub there hasn't been a check in three years.
Relax
According to GitHub there hasn't been a check in 3 years.
relax-netAccording to Google code there hasn't been in a check in in 2 years</dd>
skitsanos
No docs. No listed license. Just code. Although it looks active.
couchbrowse
A GUI and a couch library but no updates since 2008.
DreamSeat
A fork of LoveSeat, it hasn't had a check in 11 months or a release in 2 years.
CouchDB.Net
No check ins since 2012 </dl> For no particularly good reason beyond the fact that it supports Win RT/8.1 I will go with MyCouch.