CINXE.COM
Contribute — Bokeh 3.6.1 Documentation
<!DOCTYPE html> <html lang="en" data-content_root="../" data-theme="light"> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> <meta property="og:title" content="Contribute" /> <meta property="og:type" content="website" /> <meta property="og:url" content="https://docs.bokeh.org/en/latest/docs/dev_guide.html" /> <meta property="og:site_name" content="Bokeh" /> <meta property="og:description" content="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..." /> <meta property="og:image" content="http://static.bokeh.org/og/logotype-on-hex.png" /> <meta property="og:image:alt" content="Bokeh" /> <meta name="description" content="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..." /> <meta name="image" property="og:image" content="http://static.bokeh.org/og/logotype-on-hex.png"> <link rel="icon" sizes="16x16" href="https://static.bokeh.org/favicon/favicon-16x16.png" type="image/png"> <link rel="icon" sizes="32x32" href="https://static.bokeh.org/favicon/favicon-32x32.png" type="image/png"> <link rel="apple-touch-icon" sizes="180x180" href="https://static.bokeh.org/favicon/apple-touch-icon.png" type="image/png"> <title>Contribute — Bokeh 3.6.1 Documentation</title> <script data-cfasync="false"> document.documentElement.dataset.mode = localStorage.getItem("mode") || "light"; document.documentElement.dataset.theme = localStorage.getItem("theme") || "light"; </script> <!-- this give us a css class that will be invisible only if js is disabled --> <noscript> <style> .pst-js-only { display: none !important; } </style> </noscript> <!-- Loaded before other Sphinx assets --> <link href="../_static/styles/theme.css?digest=26a4bc78f4c0ddb94549" rel="stylesheet" /> <link href="../_static/styles/pydata-sphinx-theme.css?digest=26a4bc78f4c0ddb94549" rel="stylesheet" /> <link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=fa44fd50" /> <link rel="stylesheet" type="text/css" href="../_static/copybutton.css?v=76b2166b" /> <link rel="stylesheet" type="text/css" href="../_static/sphinx-design.min.css?v=95c83b7e" /> <link rel="stylesheet" type="text/css" href="../_static/custom.css?v=13f4dcba" /> <!-- So that users can add custom icons --> <script src="../_static/scripts/fontawesome.js?digest=26a4bc78f4c0ddb94549"></script> <!-- Pre-loaded scripts that we'll load fully later --> <link rel="preload" as="script" href="../_static/scripts/bootstrap.js?digest=26a4bc78f4c0ddb94549" /> <link rel="preload" as="script" href="../_static/scripts/pydata-sphinx-theme.js?digest=26a4bc78f4c0ddb94549" /> <script>const BOKEH_CURRENT_VERSION = '3.6.1';</script> <script src="../_static/documentation_options.js?v=f731707b"></script> <script src="../_static/doctools.js?v=9bcbadda"></script> <script src="../_static/sphinx_highlight.js?v=dc90522c"></script> <script src="../_static/clipboard.min.js?v=a7894cd8"></script> <script src="../_static/copybutton.js?v=4ea706d9"></script> <script src="../_static/custom.js?v=651ff418"></script> <script src="../_static/design-tabs.js?v=f930bc37"></script> <script data-domain="docs.bokeh.org" defer="defer" src="https://plausible.io/js/script.js"></script> <script>DOCUMENTATION_OPTIONS.pagename = 'docs/dev_guide';</script> <script> DOCUMENTATION_OPTIONS.theme_version = '0.16.0'; DOCUMENTATION_OPTIONS.theme_switcher_json_url = 'https://docs.bokeh.org/switcher.json'; DOCUMENTATION_OPTIONS.theme_switcher_version_match = '3.6.1'; DOCUMENTATION_OPTIONS.show_version_warning_banner = true; </script> <link rel="index" title="Index" href="../genindex.html" /> <link rel="search" title="Search" href="../search.html" /> <link rel="next" title="Setting up a development environment" href="dev_guide/setup.html" /> <link rel="prev" title="bokeh.util" href="reference/util.html" /> <meta name="viewport" content="width=device-width, initial-scale=1"/> <meta name="docsearch:language" content="en"/> <meta name="docsearch:version" content="3.6.1" /> </head> <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode="light"> <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> <div id="pst-scroll-pixel-helper"></div> <button type="button" class="btn rounded-pill" id="pst-back-to-top"> <i class="fa-solid fa-arrow-up"></i>Back to top</button> <dialog id="pst-search-dialog"> <form class="bd-search d-flex align-items-center" action="../search.html" method="get"> <i class="fa-solid fa-magnifying-glass"></i> <input type="search" class="form-control" name="q" placeholder="Search the docs ..." aria-label="Search the docs ..." autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"/> <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> </form> </dialog> <div class="pst-async-banner-revealer d-none"> <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> </div> <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> <div class="bd-header__inner bd-page-width"> <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> <span class="fa-solid fa-bars"></span> </button> <div class=" navbar-header-items__start"> <div class="navbar-item"><a class="navbar-brand logo" href="../index.html"> <img src="https://static.bokeh.org/branding/logos/bokeh-logo.svg" class="logo" alt="The Bokeh logo"> </a></div> <div class="navbar-item"> <div class="version-switcher__container dropdown pst-js-only"> <button id="pst-version-switcher-button-2" type="button" class="version-switcher__button btn btn-sm dropdown-toggle" data-bs-toggle="dropdown" aria-haspopup="listbox" aria-controls="pst-version-switcher-list-2" aria-label="Version switcher list" > Choose version <!-- this text may get changed later by javascript --> <span class="caret"></span> </button> <div id="pst-version-switcher-list-2" class="version-switcher__menu dropdown-menu list-group-flush py-0" role="listbox" aria-labelledby="pst-version-switcher-button-2"> <!-- dropdown will be populated by javascript on page load --> </div> </div></div> </div> <div class=" navbar-header-items"> <div class="me-auto navbar-header-items__center"> <div class="navbar-item"> <nav> <ul class="bd-navbar-elements navbar-nav"> <li class="nav-item "> <a class="nav-link nav-internal" href="first_steps.html"> First steps </a> </li> <li class="nav-item "> <a class="nav-link nav-internal" href="user_guide.html"> User guide </a> </li> <li class="nav-item "> <a class="nav-link nav-internal" href="gallery.html"> Gallery </a> </li> <li class="nav-item "> <a class="nav-link nav-internal" href="reference.html"> Reference </a> </li> <li class="nav-item current active"> <a class="nav-link nav-internal" href="#"> Contribute </a> </li> <li class="nav-item "> <a class="nav-link nav-internal" href="releases.html"> Releases </a> </li> <li class="nav-item "> <a class="nav-link nav-external" href="https://mybinder.org/v2/gh/bokeh/tutorial/main?filepath=notebooks%2F01_introduction.ipynb"> Tutorial </a> </li> <li class="nav-item "> <a class="nav-link nav-external" href="https://discourse.bokeh.org"> Community </a> </li> </ul> </nav></div> </div> <div class="navbar-header-items__end"> <div class="navbar-item navbar-persistent--container"> <button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> <i class="fa-solid fa-magnifying-glass"></i> <span class="search-button__default-text">Search</span> <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> </button> </div> <div class="navbar-item"><ul class="navbar-icon-links" aria-label="Icon Links"> <li class="nav-item"> <a href="https://github.com/bokeh/bokeh" title="GitHub" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><i class="fa-brands fa-square-github fa-lg" aria-hidden="true"></i> <span class="sr-only">GitHub</span></a> </li> </ul></div> </div> </div> <div class="navbar-persistent--mobile"> <button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> <i class="fa-solid fa-magnifying-glass"></i> <span class="search-button__default-text">Search</span> <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> </button> </div> <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> <span class="fa-solid fa-outdent"></span> </button> </div> </header> <div class="bd-container"> <div class="bd-container__inner bd-page-width"> <dialog id="pst-primary-sidebar-modal"></dialog> <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> <div class="sidebar-header-items sidebar-primary__section"> <div class="sidebar-header-items__center"> <div class="navbar-item"> <nav> <ul class="bd-navbar-elements navbar-nav"> <li class="nav-item "> <a class="nav-link nav-internal" href="first_steps.html"> First steps </a> </li> <li class="nav-item "> <a class="nav-link nav-internal" href="user_guide.html"> User guide </a> </li> <li class="nav-item "> <a class="nav-link nav-internal" href="gallery.html"> Gallery </a> </li> <li class="nav-item "> <a class="nav-link nav-internal" href="reference.html"> Reference </a> </li> <li class="nav-item current active"> <a class="nav-link nav-internal" href="#"> Contribute </a> </li> <li class="nav-item "> <a class="nav-link nav-internal" href="releases.html"> Releases </a> </li> <li class="nav-item "> <a class="nav-link nav-external" href="https://mybinder.org/v2/gh/bokeh/tutorial/main?filepath=notebooks%2F01_introduction.ipynb"> Tutorial </a> </li> <li class="nav-item "> <a class="nav-link nav-external" href="https://discourse.bokeh.org"> Community </a> </li> </ul> </nav></div> </div> <div class="sidebar-header-items__end"> <div class="navbar-item"><ul class="navbar-icon-links" aria-label="Icon Links"> <li class="nav-item"> <a href="https://github.com/bokeh/bokeh" title="GitHub" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><i class="fa-brands fa-square-github fa-lg" aria-hidden="true"></i> <span class="sr-only">GitHub</span></a> </li> </ul></div> </div> </div> <div class="sidebar-primary-items__start sidebar-primary__section"> <div class="sidebar-primary-item"> <nav class="bd-docs-nav bd-links" aria-label="Section Navigation"> <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> <div class="bd-toc-item navbar-nav"><ul class="nav bd-sidenav"> <li class="toctree-l1"><a class="reference internal" href="dev_guide/setup.html">Setting up a development environment</a></li> <li class="toctree-l1"><a class="reference internal" href="dev_guide/creating_issues.html">Creating issues</a></li> <li class="toctree-l1"><a class="reference internal" href="dev_guide/pull_requests.html">Making a successful pull request</a></li> <li class="toctree-l1"><a class="reference internal" href="dev_guide/documentation.html">Writing documentation</a></li> <li class="toctree-l1"><a class="reference internal" href="dev_guide/testing.html">Running tests</a></li> <li class="toctree-l1"><a class="reference internal" href="dev_guide/writing_tests.html">Writing tests</a></li> <li class="toctree-l1"><a class="reference internal" href="dev_guide/python.html">Contributing Python code</a></li> <li class="toctree-l1"><a class="reference internal" href="dev_guide/bokehjs.html">Contributing to BokehJS</a></li> </ul> </div> </nav></div> </div> <div class="sidebar-primary-items__end sidebar-primary__section"> </div> <div id="rtd-footer-container"></div> </div> <main id="main-content" class="bd-main" role="main"> <div class="bd-content"> <div class="bd-article-container"> <div class="bd-header-article d-print-none"> <div class="header-article-items header-article__inner"> <div class="header-article-items__start"> <div class="header-article-item"> <nav aria-label="Breadcrumb" class="d-print-none"> <ul class="bd-breadcrumbs"> <li class="breadcrumb-item breadcrumb-home"> <a href="../index.html" class="nav-link" aria-label="Home"> <i class="fa-solid fa-home"></i> </a> </li> <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">Contribute</span></li> </ul> </nav> </div> </div> </div> </div> <div id="searchbox"></div> <article class="bd-article"> <section id="contribute"> <span id="contributor-guide"></span><h1>Contribute<a class="headerlink" href="#contribute" title="Link to this heading">#</a></h1> <div class="toctree-wrapper compound"> </div> <p>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!</p> <p>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 <a class="reference internal" href="#contributor-guide-start"><span class="std std-ref">contribute to Bokeh鈥檚 code and documentation</span></a>, <a class="reference internal" href="#contributor-guide-community-support"><span class="std std-ref">help out with community support</span></a>, or <a class="reference internal" href="#contributor-guide-donate"><span class="std std-ref">support Bokeh with a donation</span></a>.</p> <div class="admonition note"> <p class="admonition-title">Note</p> <p>Everyone active in the Bokeh project鈥檚 codebases, issue trackers, and discussion forums is expected to follow the <a class="reference external" href="https://github.com/bokeh/bokeh/blob/main/docs/CODE_OF_CONDUCT.md">Code of Conduct</a>.</p> </div> <section id="where-to-start"> <span id="contributor-guide-start"></span><h2>Where to start<a class="headerlink" href="#where-to-start" title="Link to this heading">#</a></h2> <p>To work with Bokeh鈥檚 code and documentation, you first need to <a class="reference internal" href="dev_guide/setup.html#contributor-guide-setup"><span class="std std-ref">set up a development environment</span></a>.</p> <p>You can then contribute to Bokeh鈥檚 codebase in many ways:</p> <div class="sd-container-fluid sd-sphinx-override sd-mb-4 docutils"> <div class="sd-row sd-row-cols-1 sd-row-cols-xs-1 sd-row-cols-sm-1 sd-row-cols-md-2 sd-row-cols-lg-2 docutils"> <div class="sd-col sd-d-flex-row docutils"> <div class="sd-card sd-sphinx-override sd-w-100 sd-shadow-sm docutils"> <div class="sd-card-header docutils"> <p class="sd-card-text">Bokeh鈥檚 Python codebase</p> </div> <div class="sd-card-body docutils"> <p class="sd-card-text">If you would like to help with Bokeh鈥檚 Python code:</p> <ul class="simple"> <li><p class="sd-card-text"><a class="reference internal" href="dev_guide/python.html#contributor-guide-python"><span class="std std-ref">Contributing Python code</span></a></p></li> <li><p class="sd-card-text"><a class="reference internal" href="dev_guide/testing.html#contributor-guide-testing"><span class="std std-ref">Running tests</span></a></p></li> <li><p class="sd-card-text"><a class="reference internal" href="dev_guide/writing_tests.html#contributor-guide-writing-tests"><span class="std std-ref">Writing tests</span></a></p></li> <li><p class="sd-card-text"><a class="reference internal" href="dev_guide/creating_issues.html#contributor-guide-issues"><span class="std std-ref">Creating issues</span></a></p></li> <li><p class="sd-card-text"><a class="reference internal" href="dev_guide/pull_requests.html#contributor-guide-pull-requests"><span class="std std-ref">Making a successful pull request</span></a></p></li> </ul> </div> </div> </div> <div class="sd-col sd-d-flex-row docutils"> <div class="sd-card sd-sphinx-override sd-w-100 sd-shadow-sm docutils"> <div class="sd-card-header docutils"> <p class="sd-card-text">BokehJS (TypeScript)</p> </div> <div class="sd-card-body docutils"> <p class="sd-card-text">If you would like to help with anything related to <a class="reference internal" href="user_guide/intro.html#term-BokehJS"><span class="xref std std-term">BokehJS</span></a>:</p> <ul class="simple"> <li><p class="sd-card-text"><a class="reference internal" href="dev_guide/bokehjs.html#contributor-guide-bokehjs"><span class="std std-ref">Contributing to BokehJS</span></a></p></li> <li><p class="sd-card-text"><a class="reference internal" href="dev_guide/testing.html#contributor-guide-testing"><span class="std std-ref">Running tests</span></a></p></li> <li><p class="sd-card-text"><a class="reference internal" href="dev_guide/writing_tests.html#contributor-guide-writing-tests"><span class="std std-ref">Writing tests</span></a></p></li> <li><p class="sd-card-text"><a class="reference internal" href="dev_guide/creating_issues.html#contributor-guide-issues"><span class="std std-ref">Creating issues</span></a></p></li> <li><p class="sd-card-text"><a class="reference internal" href="dev_guide/pull_requests.html#contributor-guide-pull-requests"><span class="std std-ref">Making a successful pull request</span></a></p></li> </ul> </div> </div> </div> <div class="sd-col sd-d-flex-row docutils"> <div class="sd-card sd-sphinx-override sd-w-100 sd-shadow-sm docutils"> <div class="sd-card-header docutils"> <p class="sd-card-text">Bokeh documentation</p> </div> <div class="sd-card-body docutils"> <p class="sd-card-text">If you would like to help improving <a class="reference internal" href="../index.html#about"><span class="std std-ref">Bokeh鈥檚 documentation</span></a>:</p> <ul class="simple"> <li><p class="sd-card-text"><a class="reference internal" href="dev_guide/documentation.html#contributor-guide-documentation"><span class="std std-ref">Writing documentation</span></a></p></li> <li><p class="sd-card-text"><a class="reference internal" href="dev_guide/creating_issues.html#contributor-guide-issues"><span class="std std-ref">Creating issues</span></a></p></li> <li><p class="sd-card-text"><a class="reference internal" href="dev_guide/pull_requests.html#contributor-guide-pull-requests"><span class="std std-ref">Making a successful pull request</span></a></p></li> </ul> </div> </div> </div> </div> </div> </section> <section id="additional-resources"> <span id="contributor-guide-resources"></span><h2>Additional resources<a class="headerlink" href="#additional-resources" title="Link to this heading">#</a></h2> <p>In addition to this <a class="reference internal" href="#contributor-guide-start"><span class="std std-ref">contributor guide</span></a>, there are many more resources available to help you get started quickly:</p> <dl class="simple"> <dt>Bokeh Slack</dt><dd><p>The Bokeh Slack is a workspace for all contributors and the best way to get a quick response from experienced contributors and maintainers. Please <a class="reference external" href="https://slack-invite.bokeh.org/">request an invitation</a>!</p> </dd> <dt>GitHub wiki and BEPs</dt><dd><p>The <a class="reference external" href="https://github.com/bokeh/bokeh/wiki">wiki on Bokeh鈥檚 GitHub repository</a> 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 <a class="reference external" href="https://github.com/bokeh/bokeh/wiki/BEP-1:-Issues-and-PRs-management">BEP 1: Issues and PRs management</a> and <a class="reference external" href="https://github.com/bokeh/bokeh/wiki/BEP-6:-Branching-Strategy">BEP 6: Branching Strategy</a>.</p> </dd> <dt>GitHub Discussions</dt><dd><p>The <a class="reference external" href="https://github.com/bokeh/bokeh/discussions">discussion section of Bokeh鈥檚 GitHub repository</a> is a place to talk about details of implementations as well as proposed features and ideas for Bokeh.</p> </dd> <dt>Bokeh roadmap</dt><dd><p>The <a class="reference external" href="https://bokeh.org/roadmap/">Bokeh roadmap</a> contains goals for Bokeh as a tool and as a community.</p> </dd> <dt>Github repository</dt><dd><p>The source code for Bokeh, the bokeh.org website, and many other aspects of Bokeh are hosted on <a class="github reference external" href="https://github.com/bokeh">bokeh</a>. A good way to get started is to look through open issues in our <a class="reference external" href="https://github.com/bokeh/bokeh/issues">issue tracker</a>.</p> </dd> <dt>Bokeh鈥檚 documentation</dt><dd><p>For an overview of Bokeh鈥檚 various documentation resources, see <a class="reference internal" href="../index.html#about"><span class="std std-ref">docs.bokeh.org</span></a>.</p> </dd> <dt>Bokeh鈥檚 Discourse</dt><dd><p>User support for Bokeh is provided by volunteers on the <a class="reference external" href="https://discourse.bokeh.org/">Bokeh Discourse server</a>. See <a class="reference external" href="https://bokeh.org/community/">the community section of Bokeh鈥檚 website</a> for more information on Bokeh鈥檚 community resources.</p> </dd> </dl> </section> <section id="more-ways-to-contribute"> <span id="contributor-guide-more-ways"></span><h2>More ways to contribute<a class="headerlink" href="#more-ways-to-contribute" title="Link to this heading">#</a></h2> <p>In addition to improving Bokeh鈥檚 codebase and documentation, there are many other ways to contribute to Bokeh:</p> <section id="donate-to-bokeh"> <span id="contributor-guide-donate"></span><h3>Donate to Bokeh<a class="headerlink" href="#donate-to-bokeh" title="Link to this heading">#</a></h3> <p>Consider making a <a class="reference external" href="https://numfocus.org/donate-to-bokeh">donation to Bokeh</a>. Your generous gift will help the project pay for developer time, additional professional services, travel, workshops, and other important needs.</p> <p><em>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</em> <a class="reference external" href="https://numfocus.org/">https://numfocus.org/</a> <em>for more information.</em></p> <p><em>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.</em></p> <p>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 <a class="reference external" href="mailto:info%40bokeh.org">info<span>@</span>bokeh<span>.</span>org</a>.</p> <p>For more information on fiscal and in-kind donations, see the <a class="reference external" href="https://github.com/bokeh/bokeh#support">Support</a> section in Bokeh鈥檚 <a class="reference external" href="https://github.com/bokeh/bokeh">GitHub repository</a>.</p> </section> <section id="add-examples"> <span id="contributor-guide-examples"></span><h3>Add examples<a class="headerlink" href="#add-examples" title="Link to this heading">#</a></h3> <p>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 <a class="reference external" href="https://discourse.bokeh.org/c/showcase/">Bokeh Showcase</a>. You can also add new examples to <a class="reference internal" href="gallery.html#gallery"><span class="std std-ref">Bokeh鈥檚 gallery</span></a> with a <a class="reference internal" href="dev_guide/pull_requests.html#contributor-guide-pull-requests"><span class="std std-ref">pull request</span></a> to the <a class="reference external" href="https://github.com/bokeh/bokeh/tree/3.6.1/examples">examples</a> folder.</p> </section> <section id="help-with-community-support"> <span id="contributor-guide-community-support"></span><h3>Help with community support<a class="headerlink" href="#help-with-community-support" title="Link to this heading">#</a></h3> <p>All user support for Bokeh is provided by volunteers. While support questions are discussed in various places, such as <a class="reference external" href="https://stackoverflow.com/questions/tagged/bokeh">Stack Overflow</a>, the central location for all user support questions is the <a class="reference external" href="https://discourse.bokeh.org/">Bokeh Discourse server</a>. Feel free to answer user questions that you can help with. All interactions on Bokeh鈥檚 Discourse must follow Bokeh鈥檚 <a class="reference external" href="https://github.com/bokeh/bokeh/blob/main/docs/CODE_OF_CONDUCT.md">Code of Conduct</a>.</p> </section> <section id="contribute-to-language-bindings"> <span id="contributor-guide-bindings"></span><h3>Contribute to language bindings<a class="headerlink" href="#contribute-to-language-bindings" title="Link to this heading">#</a></h3> <p><a class="reference internal" href="user_guide/intro.html#term-BokehJS"><span class="xref std std-term">BokehJS</span></a> 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.</p> <p>There are currently three known bindings that expose Bokeh to languages other than Python:</p> <ul class="simple"> <li><p><a class="reference external" href="https://github.com/cjdoris/Bokeh.jl">Bokeh.jl</a> brings Bokeh to Julia users. It was created by community member <a class="reference external" href="https://github.com/cjdoris">@cjdoris</a>.</p></li> <li><p><a class="reference external" href="https://github.com/poldavezac/BokehServer.jl">BokehServer.jl</a> also implements Julia bindings to BokehJS, including a server for synchronizing plots from Julia. It was authored by community member <a class="reference external" href="https://github.com/poldavezac">@poldavezac</a>.</p></li> <li><p><a class="reference external" href="http://hafen.github.io/rbokeh/">rbokeh</a> adds support for Bokeh to the R language. It was started by <a class="reference external" href="https://github.com/hafen">@hafen</a>. (This project is currently archived.)</p></li> <li><p><a class="reference external" href="https://github.com/bokeh/bokeh-scala">bokeh-scala</a> exposes Bokeh in the Scala language. The project was created by the Bokeh core dev team member <a class="reference external" href="https://github.com/mattpap">@mattpap</a>. (This project is currently archived.)</p></li> </ul> <p>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 <a class="reference internal" href="reference/core/properties.html#bokeh-core-properties"><span class="std std-ref">bokeh.core.properties</span></a> and <a class="reference internal" href="reference/models.html#bokeh-models"><span class="std std-ref">bokeh.models</span></a>.</p> <p>Another resource for working on bindings is Bokeh鈥檚 <a class="reference external" href="https://github.com/bokeh/bokeh/tree/3.6.1/scripts/spec.py">scripts/spec.py</a> script. This Python script generates a JSON description of every model and property in Bokeh, including types, defaults, and <a class="reference internal" href="dev_guide/documentation.html#contributor-guide-documentation-edit-properties-help"><span class="std std-ref">help strings</span></a> for each. You can use this information as a basis for creating new low-level bindings or checking existing bindings for completeness, for example.</p> <p>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 <a class="reference external" href="https://slack-invite.bokeh.org/">Slack</a>.</p> </section> <section id="report-a-vulnerability"> <span id="contributor-guide-vulnerability"></span><h3>Report a vulnerability<a class="headerlink" href="#report-a-vulnerability" title="Link to this heading">#</a></h3> <p>To report a security vulnerability, please use the <a class="reference external" href="https://tidelift.com/security">Tidelift security contact</a>. Tidelift will coordinate the fix and disclosure.</p> </section> </section> </section> </article> <footer class="prev-next-footer d-print-none"> <div class="prev-next-area"> <a class="left-prev" href="reference/util.html" title="previous page"> <i class="fa-solid fa-angle-left"></i> <div class="prev-next-info"> <p class="prev-next-subtitle">previous</p> <p class="prev-next-title">bokeh.util</p> </div> </a> <a class="right-next" href="dev_guide/setup.html" title="next page"> <div class="prev-next-info"> <p class="prev-next-subtitle">next</p> <p class="prev-next-title">Setting up a development environment</p> </div> <i class="fa-solid fa-angle-right"></i> </a> </div> </footer> </div> <dialog id="pst-secondary-sidebar-modal"></dialog> <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> <div class="sidebar-secondary-item"> <div id="pst-page-navigation-heading-2" class="page-toc tocsection onthispage"> <i class="fa-solid fa-list"></i> On this page </div> <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> <ul class="visible nav section-nav flex-column"> <li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#where-to-start">Where to start</a></li> <li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#additional-resources">Additional resources</a></li> <li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#more-ways-to-contribute">More ways to contribute</a><ul class="nav section-nav flex-column"> <li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#donate-to-bokeh">Donate to Bokeh</a></li> <li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#add-examples">Add examples</a></li> <li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#help-with-community-support">Help with community support</a></li> <li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#contribute-to-language-bindings">Contribute to language bindings</a></li> <li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#report-a-vulnerability">Report a vulnerability</a></li> </ul> </li> </ul> </nav></div> </div></div> </div> <footer class="bd-footer-content"> </footer> </main> </div> </div> <!-- Scripts loaded after <body> so the DOM is not blocked --> <script defer src="../_static/scripts/bootstrap.js?digest=26a4bc78f4c0ddb94549"></script> <script defer src="../_static/scripts/pydata-sphinx-theme.js?digest=26a4bc78f4c0ddb94549"></script> <footer class="bd-footer"><div class="container-fluid p-0 links"> <div class="container"> <div class="row"> <div class="col-lg-3 col-md-6 col-sm-4 links-item"> <h6>Project</h6> <ul class="nav flex-column"> <li class="nav-item"> <a class="nav-link" href="https://bokeh.org/roadmap/">Roadmap</a> </li> <li class="nav-item"> <a class="nav-link" href="https://github.com/bokeh/bokeh/wiki/BEP-4:-Project-Roles">Team</a> </li> <li class="nav-item"> <a class="nav-link" href="https://bokeh.org/branding/">Branding</a> </li> </ul> </div> <div class="col-lg-3 col-md-6 col-sm-4 links-item"> <h6>Documentation</h6> <ul class="nav flex-column"> <li class="nav-item"> <a class="nav-link" href="https://docs.bokeh.org/en/latest/docs/user_guide.html">User Guide</a> </li> <li class="nav-item"> <a class="nav-link" href="https://docs.bokeh.org/en/latest/docs/gallery.html">Gallery</a> </li> <li class="nav-item"> <a class="nav-link" href="https://docs.bokeh.org/en/latest/docs/reference.html">Reference Guide</a> </li> </ul> </div> <div class="col-lg-3 col-md-6 col-sm-4 links-item"> <h6>Hands On</h6> <ul class="nav flex-column"> <li class="nav-item"> <a class="nav-link" href="https://mybinder.org/v2/gh/bokeh/bokeh-notebooks/master?filepath=tutorial%2F00%20-%20Introduction%20and%20Setup.ipynb">Tutorials</a> </li> <li class="nav-item"> <a class="nav-link" href="https://demo.bokeh.org">Demos</a> </li> <li class="nav-item"> <a class="nav-link" href="https://bokeh.org/community/">Support</a> </li> </ul> </div> <div class="col-lg-3 col-md-6 col-sm-4 links-item"> <h6>Contribute</h6> <ul class="nav flex-column"> <li class="nav-item"> <a class="nav-link" href="https://github.com/bokeh/bokeh">GitHub</a> </li> <li class="nav-item"> <a class="nav-link" href="https://docs.bokeh.org/en/latest/docs/dev_guide.html">Contributor Guide</a> </li> <li class="nav-item"> <a class="nav-link" href="https://bokeh.org/sponsor/">Sponsor</a> </li> </ul> </div> </div> </div> </div> <div class="container-fluid p-0 copyright"> <div class="container py-2"> <div class="row"> <div class="col-md-10"> <p class="m-0"> Bokeh is a fiscally sponsored project of <a href="https://numfocus.org">NumFOCUS</a>, a nonprofit dedicated to supporting the open-source scientific computing community. Donations help pay for cloud hosting costs, travel, and other project needs. </p> <p class="m-0"> 漏2024 Bokeh Contributors. The website content uses the <a href="https://github.com/bokeh/demo.bokeh.org/blob/main/LICENSE.txt">BSD License</a> and is covered by the <a href="https://github.com/bokeh/bokeh/blob/main/docs/CODE_OF_CONDUCT.md">Bokeh Code of Conduct</a>. </p> </div> <div class="col-md-2"> <a class="btn btn-primary" href="https://numfocus.org/donate-to-bokeh">Donate</a> </div> </div> </div> </div> </footer> </body> </html>