CouchApps are JavaScript and HTML5 applications served directly from the document-oriented database CouchDB. In the following interview, Found Line co-founder and OSCON speaker Bradley Holt (@BradleyHolt) talks about the utility of CouchApps, what CouchDB offers web developers, and how the database works with HTML5.

How do CouchApps work?

Bradley Holt: CouchApps are web applications built using CouchDB, JavaScript, and HTML5. They skip the middle tier and allow a web application to talk directly to the database — the CouchDB database could even be running on the end-user’s machine or Android / iOS device.

What are the benefits of building CouchApps?

Bradley Holt: Streamlining of your codebase (no middle tier), replication, the ability to deploy/replicate an application along with its data, and the side benefits that come with going “with the grain” of how the web works are some of the benefits of building CouchApps.

To be perfectly honest though, I don’t think CouchApps are quite ready for widespread developer adoption yet. The biggest impediment is tooling. The current set of development tools need refinement, and the process of building a CouchApp can be a bit difficult at times. The term “CouchApp” can also have many different meanings. That said, the benefits of CouchApps are compelling and the tools will catch up soon.

HTML5 addresses a lot of storage issues. Where does CouchDB fit in?

Bradley Holt: The HTML5 Web Storage specification describes an API for persistent storage of key/value pairs locally within a user’s web browser. Unlike previous attempts at browser local storage specifications, the HTML5 storage specification has achieved significant cross-browser support.

One thing that the HTML5 Web Storage API lacks, however, is a means of querying for values by anything other than a specific key. You can’t query across a set of keys or values. IndexedDB addresses this and allows for indexed database queries, but IndexedDB is not currently part of the HTML5 specification and is only implemented in a limited number of browsers.

If you need more than just key/value storage, then you have to look outside of the HTML5 specification. Like HTML5 Web Storage, CouchDB stores key/value pairs. In CouchDB, the key part of the key/value pair is a document ID and the value is a JSON object representing a single document. Unlike HTML5 Web Storage, CouchDB provides a means of indexing and querying data using MapReduce “views.” Since CouchDB is accessed using a RESTful HTTP API and stores documents as JSON objects, it is easy to work with CouchDB directly from an HTML5/JavaScript web application.

How does CouchDB’s replication feature work with HTML5?

Bradley Holt: Again, CouchDB is not directly related to the HTML5 specification, but CouchDB’s replication feature creates unique opportunities for CouchApps built using JavaScript and HTML5 (or any application built using CouchDB, for that matter).

I’ve heard J. Chris Anderson use the term “ground computing” as a counterpoint to “cloud computing.” The idea is to store a user’s data as close to that user as possible — and you can’t get any closer than a user’s own computer or mobile device! CouchDB’s replication feature makes this possible. Data that is relevant to a particular user can be copied to and from that user’s own computer or mobile device using CouchDB’s incremental replication. This allows for faster access for the user (since his or her application is hitting a local database), offline access, data portability, and potentially more control over his or her own data.

Now that CouchDB runs on mobile devices, how do you see it shaping mobile app development?

Bradley Holt: While Android is a great platform, the biggest channel for mobile applications is Apple’s iOS. CouchDB has been available on the Android for a while now, but it is relatively new to iOS. Now that CouchDB can be used to build iPhone/iPad applications, we will most certainly see many more mobile applications built using CouchDB in order to take advantage of CouchDB’s unique features — especially replication.

The big question is, will these applications be built as native applications or will they be built as CouchApps? I don’t know the answer, but I’d like to see more of these applications built on the CouchApps side. With CouchApps, developers can more easily port their applications across platforms, and they can use existing HTML5, JavaScript, and CSS skill sets.

This interview was edited and condensed.

Related: