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.
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
If you would like to help with Bokeh’s Python code:
If you would like to help with anything related to BokehJS:
If you would like to help with the Server component of Bokeh:
If you would like to help improving Bokeh’s documentation:
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:
Donate to Bokeh¶
Consider making a donation to Bokeh. Your generous gift will help the project pay for developer time, additional professional services, travel, workshops, and other important needs.
Bokeh is a Sponsored Project of NumFOCUS, a 501(c)(3) nonprofit charity in the United States. NumFOCUS provides Bokeh with fiscal, legal, and administrative support to help ensure the health and sustainability of the project. Visit https://numfocus.org/ for more information.
Donations to Bokeh are managed by NumFOCUS. For donors in the United States, your gift is tax-deductible to the extent provided by law. As with any donation, you should consult with your tax adviser about your particular tax situation.
If your company uses Bokeh and is able to sponsor the project financially or through in-kind support, please get in touch with us at firstname.lastname@example.org.
For more information on fiscal and in-kind donations, see the Support section in Bokeh’s GitHub repository.
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!