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 of the 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:
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
- Bokeh’s documentation
For an overview of Bokeh’s various documentation resources, see docs.bokeh.org.
- Bokeh’s Discourse
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.
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:
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.
Report a vulnerability#
To report a security vulnerability, please use the Tidelift security contact. Tidelift will coordinate the fix and disclosure.
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!