I believe panel-components provides important functionality that is missing from Bokeh/ Panel today. Something that will make it easier to create awesome-analytics-apps in Panel.
But I am still trying to understand whatpanel-components is and what I can do with it and how.
Bokeh extensions are powerful but takes a lot of time to develop..
Bokeh extensions can be slow so you should only use them when nescessary.
My hypothesis is that the initial rendering of Bokeh Extensions is slowing things down. Why use bokeh to render some kind of Accordion where you don't need bidirectional communication? Or set a css_class for button_type on a Button?
Bokeh extensions are layed out by the Bokeh layout engine which is (a lot ?) slower than than the browser layout engine. So if you have responsive (`sizing_mode="stretch_width") components your app is slowed down each time you resize the window or replace components.
My hypothesis is that because Bokeh Extensions normally have a lot of properties/ parameters that are bidirectionally synced this creates a lot of data transfer that is not really needed.
It's really, really difficult to create general bokeh extension layouts that supports all the use cases that people would like to have. For example adding icons inside buttons or children of different kinds inside responsive layouts like grids.
Creating and sharing complex layouts as Jinja 2 templates is no something that domain experts or data scientists know a lot about. But creating, instantiating and combining Python functions and classes are. So the api of panel-components is much, much more straightforward to use for normal users. And I believe it would be much, much easier for the community to create and share components.
The api of panel-components is also more familiar to Dash users, making it easier to use.
I believe panel-components provides important functionality that is missing from Bokeh/ Panel today. Something that will make it easier to create awesome-analytics-apps in Panel.
But I am still trying to understand what
panel-components
is and what I can do with it and how.But you should always start with the why.
So I think it's very important to describe why
panel-components
is needed and what problem it tries to solve.The why should answer for example the following question
Why not just use a combination of Panel Jinja based templates and Bokeh Extensions instead of
panel-components
?