Skip to content

Dashboarding #2018

Open
Open
@jasongrout

Description

@jasongrout

To keep this archived somewhere, here are the notes from our discussion on dashboarding at the ipywidgets workshop in Paris in Jan 2018 (see OpenDreamKit/OpenDreamKit#246, and https://www.lri.fr/etherpad/p/jupyter-widgets for the notes).

We can get an overview of current solutions to displaying the widgets on a web page, as sort of a web app. For example, Pascal's ipywidget-server, https://github.com/oschuett/appmode, or #1862

Pascal's solution: a separate server that is instantiated with the code to be run, a specific kernel https://github.com/pbugnion/ipywidgets_server

https://github.com/oschuett/appmode - strip out the classic notebook UI

#1862 (not finished) - read a notebook, execute all cells from the browser, display specific cell outputs

IBM Jupyter Dashboard server - easy drag-and-drop layout of cell outputs in a grid, one-click publish, secure execution of the notebook by not accepting code execution from the browser
https://github.com/jupyter-attic/dashboards_server and https://github.com/jupyter/dashboards and https://github.com/jupyter-attic/dashboards_bundlers

Do we reuse kernels (e.g., you give a link to someone with a widget from a specific running kernel), or start a new kernel for every dashboard view

  • Different kinds of uses cases: dashboards as "isolated" kernel execution (each dashboard has own kernel) vs dashboard as "broadcast" enviornment - by interacting with one I am affecting all others.

Can we expose a layout widget that lets you drag and drop to layout things, and then save the layout.

Integration with kernel gateway / remote kernel manager?

It's not obvious we need a live separate kernel. For some usecases, you may want to execute the code in-process (e.g., flask, django).

Should the layout depend on widgets and the kernel? Or should the layout be independent of widgets/kernel.

  • Making two layout systems can be confusing (a frontend UI layout, and a widget layout)
  • We could make a layout widget that lets you drag and drop children to lay out them. Then save the state of the widget.

Do we force the authoring environment to be a notebook? An authoring environment like shiny?

Perhaps we just have some very specific predefined layouts that can just be populated with children.

If we were able to publish a binder-ready repo for a dashboard, that could take care of a deployment usecase.

Needs:
- Subject-matter experts (know python, not js) easily expose their code/explorations as a webapp to stakeholders with no programming skills, so they don't want any notion of a notebook, code, etc. Code might be running internal software stacks, etc., so we don't have to distribute software, just expose a GUI to use the tools.
- Students exploring learning materials (similar to above usecase)
- Should be usable from different language kernels, such as R
- Layout should be doable programmatically
- E-posters at an academic conference (three-column layout)
- Include markdown/text/html, possibly with variable substitutions
- Security - not being able to execute arbitrary code from the browser - needs to be an option
- Programmatic layouts should use standard layout protocols, e.g., flexbox, grid, etc.
- Other styling, such as colors, fonts, etc.

Here is another issue talking about dashboarding: jupyterlab/jupyterlab#1640

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions