I just got into developing web dashboards, and I’ve been spending the last few weeks conducting a trade study of several frameworks for developing Python codes into browser-based GUIs. I spent a few days writing up a prototype application in Dash and also a few days writing up the same prototype application in Bokeh. I thought that this community might be interested in hearing my thoughts.
I actually loved using Bokeh, and I consider it to be the framework better suited to my application. I like attaching callbacks to the object that started the callback, as opposed to Dash, where I need to attach callbacks to the object that will be changing. I also like not having to worry about saving/loading the current state of the application.
Nonetheless, I’ve decided to go forward with Dash, and this is for one reason only: it’s because the documentation for Bokeh is simply too sparse to support my needs. Not only are there not examples for most of the functions in the Reference section, even the Reference section itself poorly documents functions. Many class methods don’t state the arguments required when calling the method or what the optional arguments are. Sometimes I need to go to the parent of the parent of the class to figure out how to use it.
I think that this is likely the main reason that Dash has overtaken Bokeh as the most commonly used framework for creating online dashboards. The documentation for Dash (while still not fantastic) is leaps and bounds better than Bokeh. This has led to Dash having a larger user base, which further helps its documentation, as StackOverflow has far more questions related to common uses of Dash than Bokeh has. I expect this feedback loop to continue to grow, which will cause Dash to increase its lead over Bokeh in the coming years.
I really like this project, and I feel that the project developers and maintainers need to hear this information. I know that improving the project documentation is in your project’s roadmap, and you’re probably thinking, “Who’s this guy who hasn’t contributed anything to our project and isn’t willing to do so to tell us how to do our volunteer work?” and you’re right. Nonetheless, I urge you to set aside further development of this development and to sink as many resources as possible into documentation lest your past and present efforts be in vain as users and developers abandon a great tool that’s simply too hard to learn how to use.