Contribute

Get involved with Vitess development

Pages in this section


You want to contribute to Vitess? That's awesome!

In the past the maintainers have reviewed and accepted many contributions. Examples are the Java JDBC driver, the PHP PDO driver or VTGate v3 improvements.

We welcome any contribution! Before you start on larger contributions, make sure to reach out first and discuss your plans with us. The slack #developers channel is a good venue for reaching out to maintainers.

For someone new to Vitess, here are some basic pre-requisites.

Learning Go #

Vitess server code is all written in Go aka golang. We love it for its simplicity (e.g. compared to C++ or Java) and performance (e.g. compared to Python).

Contributing to our server code will require you to learn Go. We recommend that you follow the Go Tour to get started.

The Go Programming Language Specification is also useful as a reference guide.

Learning Vitess #

Before diving into the Vitess codebase, make yourself familiar with the system and run it yourself:

  • Read the What is Vitess page, in particular the architecture section.

  • Read the Concepts and Sharding pages.

    • We also recommend watching our latest presentations.

    • After studying the pages, try to answer the following question (click expand to see the answer):

      Let's assume a keyspace with 256 range-based shards: What is the name of the first, the second and the last shard? -01, 01-02, ff-
  • Go through the Kubernetes and local getting started guides.

    • While going through the tutorial, look back at the architecture and match the processes you start in Kubernetes with the boxes in the diagram.

Building Vitess #

How-to-build guides are available for Ubuntu, MacOS and CentOS. Most of the maintainers are building on Ubuntu or Mac.

GitHub workflow #

Vitess is hosted on GitHub and the project uses the Pull Request workflow.

Coding Guidelines #

Pull Requests should follow these guidelines.