Applications in CouchDB
CouchDB has features that allows the system to be the single platform on which applications can be delivered together with data.
The intended audience for this document extends the CouchDB developer community to include any decision maker that is in the process of selecting a document-based database system. For this reason unexplained technical terms and concerns that apply to the core developer community only are avoided.
For a long time the application server features of CouchDB have been regarded as nice add-ons to play with, while solutions for serious business involving CouchDB has required additional platforms.
The features that allow applications to run server side on CouchDB have not been developed for several years due to lack of Erlang developer capacity. A clear plan for where to go with applications in CouchDB has been missing and the activity of the non-developers in the CouchDB community has been more of a disturbance than a contribution.
The purpose of this document is therefore to define a case for applications on CouchDB as the sole platform and to do so by leveraging 3 key features:
- Master-master replication allow applications to sync with its data. I will call this the “apps should sync with its data”, or ASSWID feature.
- Dual mode applications combine AJAX/SPA techniques with old-fashion server-side HTML rendering for SEO and quick first-page load to support bookmarking and sharing of links. Dual mode is also significant for serving both high- and low-performance devices and networks effectively.
These three features: ASSWID, SSJS and DUAL MODE form a unique combination that no other single platform can offer with the same level of simplicity. This is the foundation for rapid onboarding of new developers.
The combination of these features could also open up for new business models and new ways of delivering services in the web space, especially where the main function is covered by the database system and requirements for the application and web server are very basic. This overall profile fits with a strong trend towards application power on mobile devices.
The main concern for anyone investing in the future of CouchDB should be to increase its speed of dissemination: The ASSWID, SSJS and DUAL-MODE features on one single platform enable a new speed of onboarding developers and deploying products. Tools that increase productivity for experienced developers, such as Github, npm as well as various build and deployment tools turn into barriers of entry for new developers and application owners. Low barrier of entry is our starting point.
The following three goals will have synergetic effects for growth:
- Development capacity: Be the preferred platform to make a living for a new generation of HTML5 developers.
- Reach: Enable delivery of applications to communities globally where ITC simplicity is key and the potential for value creation is very high.
- Freedom: To be the platform without lock-in problems when it comes to hosting, interoperatibility and future development.
The end result of reaching these three goals would be a rapid, sustainable growth that motivates investments and generates opportunities for return on those investments.
Rapid, sustainable growth will create an ecosystem with several business opportunities:
- Hosting: From freemium cloud service accounts to virtual appliances in the form of ready-to-go servers from Amazon Web Services (AMIs) there is a range of needs to serve.
- Component stores: Installing components in the form of documents or entire databases containing applications can be a one-click operation in CouchDB. Therefore standardized ways for collaboration and redistribution of quality controlled components will be a business of its own.
- App stores: Applications and data in CouchDB can utilize in-browser storage, and thus create new generation of offline/online hybrid applications that can be traded in new ways, as the usual app installation procedure is eliminated.
- Back-end services/Micro services: Changes in CouchDB data can via the _changes interface trigger any other web service. The provider of services like email and text messaging, data visualization, image or video processing, content scraping, publishing, ad distribution, payment processing, analytics etc will be services that extend the capabilities of CouchDB beyond any limits.
- Front-end development: A development platform with extremely low barrier of entry is likely to lead to new concepts developed by UX developers. Developers can start with HTML5 for the browser and graduate to iOS/Android rather than waste their time constantly updating their server-side platform and knowhow.
- Tools development: A rapidly growing developer community will create a market for tool developers. Simplicity is not easily achieved, so this can motivate the best developers to specialize on providing tooling rather than serving end-users. Tools can include curated collections of modules (e.g jQuery plugins) and runtime versions of subsystems that require maintenance.
- Systems integration: All of the above business models can integrate over http and REST APIs. This means that integration can be standardized and streamlined into online services as well as provide opportunities for specialist consulting.
- Service integration: The integration and brokerage of online services will provide opportunities as new world-wide solutions for micro payments (e.g. Bitcoin) are adopted.
- B2C and B2B end-user services: Speed of launch, low cost of ownership, a growing ecosystem with the above actors combined with optional scalability will allow services to mature before a delayed transfer to a more complicated platform. A prototype and pilot phase may be prolongued into production and support the MVP approach to new startups.
IMPLICATIONS FOR THE COUCHDB CONTRIBUTORS
The application server is clearly not the core functionality of CouchDB. However, it could be the most powerful recruiter and provide the most significant differentiator. Interest from new groups of application developers/owners should be the end goal. The contributors to this part of CouchDB need to be less development-centric and more recruitment-oriented than usual. The focus for these features is not to compete with platforms like node.js, but to strengthen CouchDB as a single-tier platform to lower the barrier of entry and to explore the concept of applications that reside and sync together with its data. Superior simplicity for the application owner organization is the main requirement.
THE BUSINESS INTEREST
Sustainable, rapid growth in the ecosystem that has CouchDB as the point of integration could revitalize the interest for CouchDB. The interest for CouchDB has faded partly as part of the growing popularity of Couchbase, a company and platform that comes from the same roots as CouchDB, as well as alternatives like MongoDB who’s popularity is closer linked to node.js than what CouchDB is. Compared to these two platforms CouchDB has several valuable differentiators. The winner takes it all if alternatives are too close. The application server features of CouchDB needs solid support from the Apache CouchDB PMC and a predictable roadmap that can generate a growing group of core contributors. This is the first of four documents intended to contribute to clarify business interests behind applications from CouchDB:
- Business strategy
- A possible ecosystem around CouchDB applications
- Communications strategy
- Go-to-market strategy