Couchbase Open Source Project
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 Public License.
Beyond just an open license, it’s important to us to have 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 our community.
Take me directly to the list of Couchbase open source projects.
How to Contribute
Couchbase maintains a long list of open source projects, so you need to understand the projects before you can start contributing. We love working with outside engineers on everything from our client library SDKs to the core server. And there are more ways to contribute than writing code. Good bug reports, as well as documentation and usability feedback, matter as much as patches.
Most of our projects are outlined below, with more details about each one, including links to file bugs, build from source, or contact the tech lead. Before skipping to the list of projects, please read the following sections to understand our overall process.
Bug Reports
Bugs for most of our projects are managed in our central tracker, with a few exceptions where bugs are tracked in another code hosting service like Github. Because there is so much activity in the bug tracker, you are encouraged to find your project in the list below, and follow the link to report or search bugs. We have a separate document about how to write a good bug report, please read it before you file new bugs.
Usability Feedback
We know that a major consideration in picking a database is ease of use. In our surveys, it ranks up there with reliability and performance as a key concern. If you are a heavy user of Couchbase Server, and some workflow, UI screen, or other aspect starts to annoy you, there’s a good chance you spend more time using it than the folks who wrote that code. As a database developer, it is easy to focus so much on “hard” aspects like performance and reliability that you can sometimes miss ergonomic issues. So any kind of feedback about the usability of Couchbase is very much appreciated. (If there’s something you really like, we love to hear that too).
The bug tracker is a fine place to provide usability feedback, although our writing to our mailing list or reaching out to the tech lead for your project is another good way to provide usability feedback.
Documentation Feedback
Our documentation system includes the ability to comment on individual pages, and we review all the comments we get. So if you notice an error in the docs, or something that’s just not clear, please leave a comment on the page. If you have higher level feedback, or would like to see more documentation on topics we aren’t covering, please email our docs editor, Karen Zeller, at karen.zeller@couchbase.com.
Getting Involved in the Code
There are a few things you’ve got to do before your patch will 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) to be filed. 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 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 signature is on file, we can accept your patches.
Working with Couchbase Engineers
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.
Every patch goes through an extensive 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 Couchbase might be a little more work than your average pull request, but we hope the process is rewarding.
For each open source project in the Couchbase umbrella, we’ve listed a primary technical contact. Before you spend all weekend hacking, we encourage you to reach out to our engineers. 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. It certainly beats working for days only to find out later that module you’ve been immersed in has just been rewritten in a different language.
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.
Open Source Projects
To have your project listed here email jchris@couchbase.com
Couchbase Server
The core server is made up of a variety of components. But, before you are ready to contribute, you'll need to do some work to build the server from source code. Once you have checked out and built the code, you may also want to run a quick workload to verify your build is working before you start hacking. We conduct rigorous code reviews throughout development to keep quality high and ensure programming best practices are being observed.
To report a bug visit the Couchbase Server bug tracker here. The tracker contains sub-projects for the various server components, but unless you know which component your bug belongs to, it’s typically fine to file against the umbrella project (Couchbase Server). In that case an engineer will likely move the bug to the appropriate component.
Couchbase Server SDKs
Couchbase maintains smart clients for the most popular programming languages, and there are a huge variety of open source projects that use Couchbase. We also list the community drivers and libraries available for each language. There is also a list of tools and connectors below.
Java / JVM
- Official Download and Developer Documentation
- Building from Source
- Bug Tracker
- Code Review
- Technical Contact: matt@couchbase.com
- Community Code:
.NET
- Official Download and Developer Documentation
- Building from Source
- Bug tracker
- Code Review
- Technical Contact: john@couchbase.com
PHP
- Official Download and Developer Documentation
- Building from Source
- Bug tracker
- Technical Contact: matt@couchbase.com
- Community Code:
Python
- Official Download and Developer Documentation
- Building from Source
- Bug tracker
- Code Review
- Technical Contact: pavel@couchbase.com
- Community Code:
Ruby
- Official Download and Developer Documentation
- Building from Source
- Bug tracker
- Code Review
- Technical Contact: sergey@couchbase.com
- Community Code:
JavaScript
- Official Download and Developer Documentation coming soon
- Building from Source
- Technical Contact: trond.norbye@couchbase.com
Other Languages
Tools
- CBFS
- Heroku Ruby libcouchbase
- vFabric Application Director
- https://github.com/kbatten/couchmigrator Import / Export
- B-tree stats
- YCSB Benchmark
- Benchmark
- JSON Loader
- Chef Recipe
- Storm Connector
- S3 exporter
- JSON importer
- Java dependency injection
- .NET CBC
- EC2 Backup
If you want to add your project to this list, email jchris@couchbase.com