With the (exciting!) increase in interest in Bokeh over the last six months, there has also been an increased interest in the Bokeh server in particular. This has provided us some concrete feedback, and led us to some observations about what we got right, and where we could do better.
One thing we have done is move even more functionality into the client library. For instance the recent new Callback models that let you specify small snippets of JS to execute on callbacks, and selections, etc. This now allows for more rich interactions to be possible in static documents, without needing a server at all.
But there are still many cases where the server can provide even more sophisticated capabilities. So, I wanted to share that we are currently in the process of substantially re-working the Bokeh server, with two specific goals in mind:
* reduce the server footprint/complexity
The focus of the core server will be narrowed to its most important function: an RPC reflection facility that allows models defined in Python to be reflected into the browser while maintaining two-way synchronization and persistence. This narrowing of focus will allow the core server to be better documented, maintained, and tested.
* while affording extensibility
The default "built-in" set of Python/Backbone models will be extendable. For instance, besides the default set of Bootstrap widgets, we (or other users) could implement and provide new widgets based on other JS libraries. This is a recognition that Bokeh cannot wrap/expose all possible JS libraries that uses might like to work with, and also that BokehJS needs to able to be trimmed down so that people are not paying for things they aren't using. Additionally this looser coupling means models for things like more sophisticated data sources (e.g. for custom downsampling or streaming) can be developed and maintained and experimented on independently.
We have engaged with Chris McDonough (the author of Pyramid) for the Summer of 2015, to help with this server re-work. We are very excited about taking what we have learned from the first version of the server, and making something simpler and better (and most importantly: easier to use and deploy) for the Bokeh community. The result will be a more open platform for deploying vis and data apps on the browser. All good things! But there is definitely also one downside, however: we don't have the resources to invest in better documenting the current server, since it would be obsoleted in short order.
We do recognize this presents a burden for everyone trying to deploy the server today, so in the interim please keep asking questions on the mailing list and we will provide the best guidance we can.
Bryan Van de Ven
P.S. This does not mean we are not working any docs, though! In addition to the greatly expanded new User's Guide and completed Reference Guide, all-new Jupyter notebook-based tutorials are being developed right now that will be used in this week's PyData London tutorial, and continually improved in the future. You can see the work-in-progress here: http://nbviewer.ipython.org/github/bokeh/bokeh-notebooks/blob/master/index.ipynb#Tutorial