Contribute

Bokeh is an open source project and only exists because of contributors like you. Bokeh is made possible by a diverse group of software developers, testers, writers, outreach experts, and much more. And we always love having new people help us make Bokeh a better tool for everyone!

In this contributor guide, you will find all information you need to join the growing team of Bokeh contributors. This includes information on how to contribute to Bokeh’s code and documentation, help out with community support, or support Bokeh with a donation.

Note

Everyone active in the Bokeh project’s codebases, issue trackers, and discussion forums is expected to follow the Code of Conduct.

Where to start

To work with Bokeh’s code and documentation, you first need to set up a development environment.

You can then contribute to Bokeh’s codebase in many ways:

Bokeh’s Python codebase

BokehJS (TypeScript)

Bokeh Server

Bokeh documentation

Additional resources

In addition to this contributor guide, there are many more resources available to help you get started quickly:

Bokeh Slack

The Bokeh Slack is a workspace for all contributors and the best way to get a quick response from experienced contributors and maintainers. Please request an invitation!

GitHub wiki and BEPs

The wiki on Bokeh’s GitHub repository contains the Bokeh Enhancement Proposals (BEPs). BEPs are the central governance and policy documents for Bokeh. This includes details about the contribution processes, especially in BEP 1: Issues and PRs management and BEP 6: Branching Strategy.

GitHub Discussions

The discussion section of Bokeh’s GitHub repository is a place to talk about details of implementations as well as proposed features and ideas for Bokeh.

Bokeh roadmap

The Bokeh roadmap contains goals for Bokeh as a tool and as a community.

Github repository

The source code for Bokeh, the bokeh.org website, and many other aspects of Bokeh are hosted on https://github.com/bokeh. A good way to get started is to look through open issues in our issue tracker.

Bokeh’s documentation

For an overview of Bokeh’s various documentation resources, see docs.bokeh.org.

Bokeh’s Discourse

User support for Bokeh is provided by volunteers on the Bokeh Discourse server. See the community section of Bokeh’s website for more information on Bokeh’s community resources.

More ways to contribute

In addition to improving Bokeh’s codebase and documentation, there are many other ways to contribute to Bokeh:

Add examples

If you or your organization are using Bokeh and are willing to share some examples of what you are working on, consider adding them to the Bokeh Showcase. You can also add new examples to Bokeh’s gallery with a pull request to the examples folder.

Help with community support

All user support for Bokeh is provided by volunteers. While support questions are discussed in various places, such as Stack Overflow, the central location for all user support questions is the Bokeh Discourse server. Feel free to answer user questions that you can help with. All interactions on Bokeh’s Discourse must follow Bokeh’s Code of Conduct.

Contribute to language bindings

BokehJS accepts an object graph represented by declarative bits of JSON. This means that any language that can generate JSON can also generate Bokeh plots for display in a browser.

There are currently three known bindings that expose Bokeh to languages other than Python:

  • rbokeh adds support for Bokeh to the R language. It was started by @hafen.

  • bokeh.jl brings Bokeh to Julia users. It was originally created by @samuelcolvin.

  • bokeh-scala exposes Bokeh in the Scala language. The project was created by the Bokeh core dev team member @mattpap.

The low-level object interface in Python mirrors the JSON schema exactly. Therefore, the best, most authoritative source of information for anyone writing bindings for Bokeh are the reference guide sections for the bokeh.core.properties and bokeh.models.

Another resource for working on bindings is Bokeh’s scripts/spec.py script. This Python script generates a JSON description of every model and property in Bokeh, including types, defaults, and help strings for each. You can use this information as a basis for creating new low-level bindings or checking existing bindings for completeness, for example.

If you would like to start working on a new binding or have a new binding added to this list, please contact the Bokeh core team through Slack.

Spread the word

Finally, as an open source project, Bokeh relies on word-of-mouth to reach new users. If you enjoy using Bokeh or are already contributing to Bokeh, please tell your friends and the people you work with about Bokeh.

Bokeh is also on Twitter and LinkedIn. Please follow those accounts for updates and news about Bokeh. And we always appreciate it if you tag Bokeh’s accounts when you talk about anything that you made with Bokeh!