Open Source

Couchbase began as an open source project to create a database for the web era. Before there was even a company, we were open source hackers with backgrounds in database and network engineering. Since then a lot has changed. We’ve grown from a small team to a world-class engineering organization. One thing that hasn’t changed is our commitment to open source: everything we release is available under the Apache License 2.0.

 

Beyond just an open source license, we believe in an open development process. Many of us got our start writing infrastructure software by joining existing open source communities, and we are keen to provide the same opportunity to other developers. This page is your roadmap to joining the community.

Our Open Source Projects

Our open source projects fall into three broad areas.

Couchbase Server and Client SDKs

This is the core server side of our distributed key-value/document database and the client SDKs used to interact with it.

Language and framework specific clients and connectors, including official Couchbase and community driven projects.

Couchbase Mobile

A native document database for multiple platforms of mobile and embedded devices and components to sync to Couchbase Server. Store and sync JSON documents on iOS, Android (as well as other Java SE environments) and .NET environments.

Couchbase Labs

On GitHub we have a separate area where we post sample applications, projects that demonstrate integration with other systems and incubate new ideas.  Many of these new ideas grow from a single person's passion to a team of people collaborating. Many of them graduate to full-fledged projects and become a key part of our user's Couchbase deployments.

How you can contribute

We love working with contributors from outside Couchbase, Inc. Whether it’s code, documentation, usability feedback or bug reports, there are a few things it helps to know about our process and projects before contributing.

Reporting issues

If you come across a bug in software developed by Couchbase, we want to know about it. We track bug reports for most of our projects in our own issue tracker, although some are in individual Github project Issues. Like most projects, we have guidelines for what makes a useful bug report. Before you file your report, find the project in the list below so you can jump straight to the relevant tracker. bugs. Keep in mind the issue tracker is there to track feature enhancements and bugs, not provide support.  Couchbase has a number of support offerings for those situations where you need immediate, expert advice.

Give usability feedback

If there’s something about Couchbase that you find unintuitive, tell us about it. Whether it’s in the web UI, Couchbase Mobile, N1QL or some other aspect of Couchbase, you can help us to improve your experience of Couchbase by reporting a bug or emailing us.

Help improve the docs

We encourage feedback on our documentation whether it’s a typo-report or there’s something that’s just not clear. If you have something to tell us about our documentation, email us at documentation@couchbase.com

Get involved with the code

Whether you have a fix for a typo in a component, a bugfix or a new feature, we love to receive code from others! There are a few things you may need to do before a contribution can be accepted by Couchbase. On the technical side you’ll need to familiarize yourself with the build and test procedures for the code you’ll be working on. It’s also a good idea to reach out to the tech lead for that project and make sure you won’t be duplicating effort. On the administrative side, you’ll need to sign our contributor license agreement.

Contributor License Agreement

Before we can accept significant code patches from a new developer, we require a contributor license agreement (CLA). CLAs are common for projects under the Apache license, and typically serve to grant control of the code to a central entity. Because our code is available under the Apache License, signing the CLA doesn’t prevent you from using your code however you like, but it does give Couchbase the ability to defend the source legally and build and maintain a business around the technology.

 

To sign the CLA, join our review site, and then browse to the agreement when you are logged in. Once your agreement is on file, we can accept your patches.

The Couchbase Engineering Team Want to Help

It takes a lot of work to get from a potential new bug fix or feature idea, to well-tested shipping code. Our engineers want to help you get there. After all, the more outside contributors we have, the greater the diversity of use cases and feature requests we can address.

 

Depending on the project, the patch may go through a code review process, where one of our engineers will not only look at your change, but also run tests to verify your fix. Getting a patch into these Couchbase projects might be a little more work than your average pull request, but we believe the process yields a better result by going through review.  We have outlined the process so you know roughly what to expect.

 

Other projects, especially those that are still under early, active development, use a GitHub pull request process.

 

For each open source project under the Couchbase umbrella, we’ve listed a primary technical contact. That technical contact and the Couchbase community forums are a good place to engage others with your ideas. Before you spend all weekend hacking, we encourage you to reach out to a project engineer. Perhaps someone from Couchbase is already working on a fix to the same bug, and will want to work closely with you. Or maybe another community member started some work in that area, which would be a good point of departure for your work. The best way to find out is to ask.

 

Your engineering contact can also help with the technical aspects of getting a patch accepted, by showing you how to run the appropriate test suites, or adding the right person to code review, who can help you figure out that last API question or memory management issue.

Project Details

Couchbase Server and SDK Projects

Couchbase Server

Source Code | Issue Tracker | Code Review

Official Download and Documentation

Contacts: Couchbase Server Forum or Developer Mailing List

 

Note that Couchbase Server itself is built of a number of individual project subcomponents each in their own git repository. We use the repo tool from the Android Open Source Project as a way to manage which components and how they should be built. The source code combined to become an individual release is described in a repo manifest file.  The manifest project on GitHub has further information on how to use repo with the source in the individual repositories.

Java SDK and JVM Core

SDK Source Code | SDK Issue Tracker | SDK Code Review

JVM Core Source Code | JVM Core Issue Tracker | JVM Core Code Review

Official Download and Documentation

Contacts: Couchbase Java SDK Forum or Michael Nitschinger

.NET SDK

Source Code | Issue Tracker | Code Review

Official Download and Documentation

Contacts: Couchbase .NET SDK Forum or Jeff Morris

Node.js SDK

Source Code | Issue Tracker | Code Review

Official Download and Documentation

Contacts: Couchbase Node.js SDK Forum or Brett Lawson

PHP SDK

Source Code | Issue Tracker | Code Review

Official Download and Documentation

Contacts: Couchbase PHP SDK Forum or Brett Lawson

Python SDK

Source Code | Issue Tracker | Code Review

Official Download and Documentation

Contacts: Couchbase Python SDK Forum or Mark Nunberg

Ruby SDK

Source Code | Issue Tracker | Code Review

Official Download and Documentation

Contacts: Couchbase Ruby SDK Forum or Sergey Avseyev

C/C++ SDK

Source Code | Issue Tracker | Code Review

Official Download and Documentation

Contacts: Couchbase C SDK Forum or Mark Nunberg

Couchbase Mobile

Couchbase Lite iOS

Source Code | Issue Tracker

Official Download and Documentation

Contacts: Couchbase Lite Forum

Couchbase Lite Android

Source Code | Issue Tracker

Official Download and Documentation

Contacts: Couchbase Lite Forum

Couchbase Lite .NET

Source Code | Issue Tracker

Official Download

Contacts: Couchbase Lite Forum

Couchbase Lite Java

Source Code | Issue Tracker

Core Source Code | Core Issue Tracker

Contacts: Couchbase Lite Forum

Couchbase for PhoneGap

Source Code | Issue Tracker

Documentation

Contacts: Couchbase Lite Forum

Couchbase Sync Gateway

Source Code | Issue Tracker

Official Download and Documentation

Contacts: Couchbase Sync Gateway Forum

Couchbase Labs

Couchbase Labs projects range from quick examples of a particular technique or sample, to experiments, to testing tools, to new projects whose leaders hope it will turn into the next big thing.  Here we highlight only a few of the most important and widely known projects, and the full list can be found at Couchbase Labs on GitHub.

bleve search

Source Code | Issue Tracker

Sponsored by Couchbase, bleve is modern text indexing for Go.

ForestDB

Source Code

ForestDB is a fast Key-Value storage engine based on a Heirarchical B+-Tree Trie.

go-couchbase

Source Code

A Couchbase client library written for Go.

cbfs

Source Code

cbfs is a distributed blobstore using Couchbase Server.

cbugg

Source Code

cbugg is an issue tracker using Couchbase Server as the database.

From the Couchbase Community

Community Developed Client Libraries and Tools

In addition to the official SDKs, there are a number of community driven client libraries, frameworks and other integrations.  

Java

PHP

Ruby

Erlang

Perl

TCL

 

If you would like us to add a project to this list, email devadvocates@couchbase.com