How to make it easier to create or contribute extensions

I’m a Panel user and contributor and as such standing on the shoulders of Bokeh.

I think one of the things that holds Bokeh and Panel back is that it not well understood how to create or contribute extensions.

For example if you would like to use the Perspective viewer interactively. How do you do that? I think users assume they will have to wait for the few Bokeh or Panel developers to contribute it. But that is not the case.You can do it. Or your rockstar frontend developer friend or colleague can help you.

It’s just not well documented.

So I’ve started a new project project Panel Extensions Template that tries to address this. Contributions of comments, examples, documentation, likes, tweets, reviews etc. are very, very welcome.

Check it out at https://github.com/marcskovmadsen/panel-extensions-template

image

1 Like

It’s just not well documented.

I always appreciate your comments, and certainly your contributions @MarcSkovMadsen. But I have to question this statement, at least on the Bokeh side. Creating Bokeh extensions is not a beginner topic, and probably never will be, even as things are able to improve to be simpler and more stable. But regardless, there is an entire whole chapter of the Bokeh User’s Guide dedicated to this with background technical information, that builds up a simple example step by step, and provides another half-dozen examples to follow:

https://docs.bokeh.org/en/latest/docs/user_guide/extensions.html

There’s always room for improvement so any concrete suggestions or additions are very welcome.

2 Likes

Hi @Bryan

Thanks for the constructive feedback.

I can see that at the level of experience i have now there are a lot of useful information and examples in the bokeh documentation.

As I remember my experience reading it 6 months ago the examples where not working and I needed some help. But reading the examples now I can see they should work.

I guess I should have gone back and consulted the bokeh docs. Sorry.

At least for improvements I think some inspiration can be found in how Streamlit tries to help/ nudge the community to create and share components.

See https://www.streamlit.io/components an https://docs.streamlit.io/en/stable/streamlit_components.html. They also provide a starter template.

Some of the things that could have helped me and still can help me is how to get an efficient develop, test, debug workflow. I have not yet understood that. I only do front end and typescript work when trying to contribute to panel. so I’m only able to debug via a console.log and a restart of the server or rebuild of the .ts and that is painful and slow.

For building panel extensions (i.e. wrapping existing .js libs.) I actually think It is a very similar process each time. So a good starter template, good examples and a basic explanation of the api can get you very far.

Thanks

1 Like

I’ve renamed the repo to awesome-panel-extensions.

It consists of two things

awesome-panel-extensions package including notebook examples and sphinx docs. For bokeh users the bokeh models are useable (at least you can try them out) from the awesome_panel_extensions.bokeh_extensions module. I could do more to make the upcoming bokeh models available to bokeh users. But I am in doubt if there would be a demand.

Awesome Panel Extensions Guide

https://awesome-panel.readthedocs.io/en/latest/guides/awesome-panel-extensions-guide/index.html

This documents how to create your own extensions to Panel including bokeh extensions. It includes some of the details on bokeh extensions i was not able to read out of the bokeh documentation.

I would still like to learn and describe how to achieve an efficient develop-test-debug setup (preferably in vs code)

Fyi. @Bryan