Hi all, I’m frequent user of Holoviz tools but new to this discourse. I wanted to raise as a discussion topic an idea for making Panel more accessible to new users, with the overarching theme being the reduction of transaction costs for new users trying to generate a working product. I realize my narrative here is heavily anecdotal (and long-winded…), but I’m curious to see if these ideas resonate with others. The tl;dr suggestion, though, is “lots of simpler examples, with more opinionated suggestions of Panel API and basic deployment.”
I started using python UI tools around 2019 (I knew 0 javascript at the time and needed to quickly generate proof of concept dashboards working for a ~10 person company with no front end devs). I dabbled extensively with Dash and Panel and settled on Panel because the constraint of plotly-only viz at the time infuriated me and the proprietary vibes for Dash scared me off. Since then I’ve settled on my recipes for working in Panel (using it on multiple projects over the years) and have evangelized about it to anyone who will listen.
I’ve been thinking recently about when I first started dabbling with these tools. I wasn’t concerned with any of the nuance these tools provide (API options, caching, etc); I just wanted something that gave me the interactivity I needed with the figure I wanted running in real time. To that end, I was looking over examples in docs trying to plagiarize something that looked good enough and was close enough to copy and modify into what I needed. Then, I would think about making it prettier / faster.
To pause and offer some high praise, as a more advanced user, I absolutely love the Panel docs refresh, and consult it all the time as I build out more nuanced apps these days. I should also point out that I think the pieces of what I’m focusing on mostly if not entirely exist within the current docs. I worry, however, that the transaction costs to “just give me an app” are too high when new users interact with these docs as they begin to explore dashboard tools.
To me, the missing piece in these docs are some highly-visible, highly-simplified examples of dashboards (essentially way more examples of a flavor of these examples in the APIs section). To put this in LLM prompting terms (more on LLM thoughts in a moment), I think it would be awesome to have a gallery of examples each addressing a prompt like the following:
I have a pandas dataframe and want to view a scatterplot / histogram / map / etc of some variables in a python panel app. The choice of these variables should be column names of the dataframe, each of which should be its own dropdown widget (or other common widget examples). Please use hvplot / bokeh / matplotlib / plotly / etc for the visualization. Can you write me a script?
(FWIW, I tried this as a prompt; other than hallucinating an invalid extension, this is decently close to how I tend to write Panel code these days, which feels like an in-between of the Declarative API and Callbacks API.)
I think these examples are also an appropriate opportunity to be more opinionated in recommending usage patterns with Panel. What do you think is the best recipe for rapidly building an app that can be improved / augmented in the future? Panel is so (fantastically) flexible to an advanced user that there’s also a paradox of choice for a new user. (And if there are truly no best recipes for new users of Panel–I realize the docs discuss the API trade-offs, then documenting multiple solutions to these examples like in the APIs section would probably be good.)
One other transaction cost focus-- deployment. I’ll just say similar to above, the new docs are outstanding, but I think it would be good to nudge new users specifically in higher-level docs to a more painless deployment option for quick dashboarding needs (and then link to the other options more nested away in the docs). Deployment was in my opinion Streamlit’s most brilliant marketing move a few years ago-- before quick deploy tools were mainstream, their strongest calling card was the ability at the time to deploy an app in one line of code. Having spent a ton of time at that point fighting cloud deployments (we had no cloud expertise at the time, and this was before the fantastic deployment docs addition to Panel), I was ready to switch for this alone, but did not out of concern at the time that they didn’t seem committed to staying open source.
A brief note on the LLM elephant in the room, I believe the docs I’m proposing can of course be generated with help from LLMs, but I think it’s a mistake to leave users to always generate them on their own with LLMs from scratch. Instead, I think curating these simple examples will serve as a nice ground truth for users who want to look at more trustworthy code (and as a bonus, will probably help with LLM results).

