My potential future boss at a company which deals in a commodity wants to present customers with an interactive front end which might be like what you could find on a financial site. He basically said, “Dash + Plotly has a good rep, but go shopping.” So the prototype site will eventually need to be hooked to available stock, and ideally gets a frontend for the customer or our rep to buy some logistics. It is eventually expected to connect to multiple apps which could span the enterprise, and we want to build as little of the web framework part as we can.
It will be hybrid commerce and analytics site site. We want to give internal and external customers to have the interactive intelligence they need to make good choices. Dash would be a really good choice.
However, Dash is closely tied to the lightweight web framework Flask, so we would have to build more infrastructure than where Django, where we would expect to mostly install and configure our web framework. Plus, all the literature says use Flask to serve a one (dynamic) web page site, use Django for the enterprise. My quick impression of what the Berkely Lab does is that it seems to serve one very impressive, complex, dynamic web page after another without the need to simulate a session in HTTP.
Our application, needs to do commerce so it will need sessions, it will face external customers so it needs to be branded and pretty, and has interactive visualizations (so it needs Dash), and when it becomes mature it is expected to interact with every nook and cranny in the enterprise so it needs an enterprise-grade server side web framework, like Django.
At this point I’m down to HoloViz Panel and Plotly Dash.
For our use case Dash wins or ties on every feature except having an option to use an enterprise-scale Python web framework like Django, or maybe Pyramid, and options to manage state. (A state management utility would cover that gap.). Unfortunately, those are two very important gaps.
The big issue with Panel is it’s lack of maturity, and to a lesser degree lack of commercial support. However, it looks like the Panel project could become quite a worthy competitor to Plotly, especially with its ties to the HoloViz visualization ecosystem.
- Dash: quite mature
- Panel: newish
- Dash: large
- Panel: smaller
Python Visualization (Eco)system
- Dash: none
- Panel: HoloViz
Ease of use
- Dash: easier
- Panel: higher learning curve
Administration and Configuration Flexibility
- Dash: less flexible
- Panel: more flexible
- Nate: Panel is harder to use partly because it is more flexible.
Python Web Framework
- Dash: Flask
- Panel: Tornado, but it is only a little more than trivial to use Django instead.
- Note: We would prefer to use Django.
- Dash: always
- Panel: optional
Pseudo-State and Session
- Dash: Client side execution adds difficulties managing state.
- Panel: Server side options can be easier, at a performance cost. Since client-side is an option this can be tuned or evolved.
- Note: We will need state/sessions.
- Dash: React
- Panel: Don’t know
Graphic Back End
- Dash: Plotly to D3.js
- Panel: Bokeh to ?.js
- Dash: SQLAlchemy
- Panel: Don’t know
- Not relevant due to architectureThis text will be hidden