A quick note on Bokeh Server development

Hi all,

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.

Thanks,

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

Really excited about this!

Thanks for all the great work and for keeping engaged with the community.

···

On Thursday, June 18, 2015 at 4:19:58 PM UTC-4, Bryan Van de ven wrote:

Hi all,

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.

Thanks,

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

Nice! Keep up the great work!

···

On Thursday, June 18, 2015 at 11:47:13 PM UTC+2, JMk wrote:

Really excited about this!

Thanks for all the great work and for keeping engaged with the community.

On Thursday, June 18, 2015 at 4:19:58 PM UTC-4, Bryan Van de ven wrote:

Hi all,

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.

Thanks,

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

This is really good stuff and the new tutorials are certainly appreciated.

I am very interested in the ability to get the x,y values of selected points so that those data can be used to both update the plot and perform other actions within Python. This latest example illustrates this process by changing the position of the horizontal line based on the selection. However, the callback is not in Python and I don’t see a good way to get the selected data points back into the Python world.

This seems to be key feature for truly interactive visualizations. Is this where we can expect to future development leading to simple of methods of doing this?

Thanks!

Thank you so much for the update. Looking forward to the upcoming Bokeh server. Keep up the good work.

···

On Wed, Jun 24, 2015 at 1:55 AM, [email protected] wrote:

This is really good stuff and the new tutorials are certainly appreciated.

I am very interested in the ability to get the x,y values of selected points so that those data can be used to both update the plot and perform other actions within Python. This latest example illustrates this process by changing the position of the horizontal line based on the selection. However, the callback is not in Python and I don’t see a good way to get the selected data points back into the Python world.

This seems to be key feature for truly interactive visualizations. Is this where we can expect to future development leading to simple of methods of doing this?

Thanks!

You received this message because you are subscribed to the Google Groups “Bokeh Discussion - Public” group.

To unsubscribe from this group and stop receiving emails from it, send an email to [email protected].

To post to this group, send email to [email protected].

To view this discussion on the web visit https://groups.google.com/a/continuum.io/d/msgid/bokeh/9c241fea-fd35-4083-9e51-467245be84b0%40continuum.io.

For more options, visit https://groups.google.com/a/continuum.io/d/optout.

yabebal