Publicly released in April 2013, Bokeh is an interactive visualization library for modern web browsers. It is suitable for the creation of rich interactive plots, dashboards and data applications. In fact, Bokeh does so in an elegant and concise way, without losing the ability to provide high-performance interactivity over large or streaming data sets. This library shows other remarkable qualities:

  • Flexibility - with Bokeh you can create common plots or handle custom use-cases, it is up to you!
  • Interactivity - Bokeh offers tools, widgets and UI events that allow you to drill-down into details of your data.
  • Power - Bokeh is powerful! You can add custom JavaScript to help you with specialized cases.
  • Shareability - with Bokeh you can easily publish your plots, dashboards and apps in web pages or even Jupyter notebooks.
  • And the best part? Bokeh is an open source project!

Mainly written in Python and with a special focus on offering rich and interactive visualizations for web browsers through JavaScript, Bokeh differs from other data visualization libraries (such as Matplotlib). In addition, the project is in constant development, with hundreds of open issues.

In the following pages a structured analysis on Bokeh is carried out: the main focuses will be on the vision underlying the project and its possible future success, followed by a study on the architectural decisions made and on the code level perspective. Finally, we will conclude with a deep analysis guided by the main characteristics of Bokeh.


The team is constituted by the following members:

which, although coming from different backgrounds, share a vivid interest for Data Visualization. Lured by the appealing characteristics mentioned above, the team decided to embrace Bokeh, deep dive into its design choices and code base and analyse it for the Software Architecture course, with the goal of learning from both the project and the course, and ultimately share their findings and the lessons learnt with the world!

Plotting Bokeh, an Analysis to its Present and Future

There is more than meets the eye. Data is everywhere. There are patterns in every aspect of life but sometimes we cannot see them, we cannot understand them and even worse, we cannot retrieve any value from them! Bokeh is one of the many tools that aims to solve this problem: it connects the dots and lessens the distance between what we see and what we understand. In this essay we will look into Bokeh and what motivated its creation, development and vision!

Plotting Bokeh, an Analysis of its Architectural Variables

In order to architect, one must envision. In the last essay we discussed the vision underlying our project. Now we go into further detail in our architectural analysis of Bokeh. We shed some light on the different architectural views that describe Bokeh; we address design choices and patterns applied to this project; and finally we look into its non-functional properties.

Plotting Bokeh, an Analysis of its Quality

Testing is the key to success. Quality is never an accident. All code is guilty, until proven innocent. Folk knowledge in Software Engineering is full of sayings like these ones. Nevertheless, we still live in a world where code quality is most of the times undervalued. The importance of testing, refactoring and evaluating technical debt should however not be neglected, since they are of major importance to safeguard code quality and architectural integrity.

Plotting Bokeh, an Analysis of its Collaboration

Product development involves two, fundamental, elements: a technical one and a social one. One can only dream of a successful project when both these components are harmoniously aligned. In previous essays we analysed both elements. We focused specially on Bokeh’s technical side, studying its properties, processes, development, deployment, architecture, code quality and testing. Nevertheless, we also shed some light on the social component, describing the importance of the different groups of individuals involved in the project.