-
Notifications
You must be signed in to change notification settings - Fork 0
GSOC 2016 Ideas
Bokeh is a Python interactive visualization library that targets modern web browsers for presentation. Its goal is to provide elegant, concise construction of basic exploratory and advanced custom graphics in the style of D3.js, but also deliver this capability with high-performance interactivity over very large or streaming datasets. Bokeh can help anyone who would like to quickly and easily create interactive plots, dashboards, and data applications.
The client library BokehJS is written in CoffeeScript, The major supported language binding is in Python, however there are community developed language bindings for R, Scala, and Julia.
The best way to contact us is probably the public mailing list. However, we have also begun to try out a public Slack channel at https://bokehplots.slack.com/messages/general/ which you are welcome to come hang out on.
- Bokeh uses GitHub, and our issue and PR processes are outlined in BEP 1
- The main documentation site includes a Developer Guide for helping to get started with working on Bokeh.
There are many potential areas of development briefly outlined in the Bokeh Roadmap. Below are some suggestions that might make good project ideas for GSOC 2016 applicants. This list is not comprehensive, and we would certainly consider other well-supported proposals.
Built-in support for graph and tree visualizations is a long-standing feature request. There are two potential avenues (either or both of which could be pursued):
-
Adapt/Integrate with existing Python libraries, to make it easy for Bokeh to draw graph visualizations using existing Bokeh glyphs and capabilities. [Easy, Python]
-
Develop graph/tree data structures that can be used and understood by BokehJS directly. This approach would be useful for all Bokeh language bindings. [Intermediate, Coffeescript, Python]
The high-level bokeh.charts
API is intended to make it extremely easy to create standard chart types in just a line or two of code. It currently has a small variety of statistical charts such as Histogram
, HeatMap
, Area
, Horizon
, Bar
, etc. We would like to increase the number of standard chart types supported. Ideas include:
- Contour Plots
- Quiver / Streamline Plots
- Violin Charts
- Sankey Diagrams
- Polar Plots
- Treemaps
There are many other possibilities. Implementing any particular new chart type is a fairly isolated, contained, and high level chunk of work. [Easy to Intermediate, Python]
To encourage the use and adoption of BokehJS as a first-class library in its own right that would appeal to JavaScript developers directly, it would be beneficial to create and demonstrate closer integrations (e.g. plugins, extensions, etc.) with common JavaScript frameworks (React, Semantic UI, Ember, Angular, etc.) so that BokehJS can be utilized more easily by JavaScript developers [Intermediate, CoffeeScript, JavaScript]
It would be useful to create a Bokeh model that could represent and drive animations and transitions in Bokeh documents. In brief, it should be possible to specify:
- An initial set of Bokeh property values
- A final set of Bokeh property values
- A transfer function and transition time interval
Given such a Transition
Model, BokehJS would smoothly interpolate the starting set of property values to the ending set, according to the transfer function and time interval. Implemented in such a way, animations and transitions could be specified from any Bokeh language binding. [Intermediate, CoffeeScript, Python]
Bokeh currently uses Hammer.js to provide a basic level of support for tools and interactions on touch platforms. However there are still interaction on touch platforms that are missing or lacking in comparison to what is available on non-touch platforms. Identifying areas for improvement, implementing feature parity on touch platforms, and developing ways to automatically test for mobile/touch platforms are all valuable possible contributions. [Hard, CoffeeScript]
[Hard, CoffeeScript + others] Bokeh's architecture makes it possible to develop and and create Bokeh visualizations from any language that can create the appropriate JSON to drive BokehJS. The project itself maintains a Python language binding, and other community members have developed bindings for R, Scala, and Julia. If you would you like to extend this list to include other languages, we can help direct that effort.