Flowchart-based Notebook UI Idea

Hi everyone,

I’m new to the Jupyter community but I’ve been programming for about 5 years.

Like a lot of young programmers, one of my first interactions with programming was Scratch/BYOB. It has both simplicity and versatility but is obviously not suited for higher-level programming tasks. However, I believe that the proper combination of text and graphics in programming could help make code more readable and understandable, and this proper combination already exists in the form of flowcharts. They’re great for explaining complicated topics.

Jupyter Notebooks are almost perfectly suited for providing this experience because the idea of cells of code running sequentially already models a sequential graph. If you could branch these graphs with if statements and multithreading, you could convert code that was once dense and unreadable into a well-formatted graph that could be shown to non-programmers or beginners.

I’ve started working on an enhancement proposal in the Jupyter GitHub for this idea, but I realized I should at least get feedback from the community first. Is this an idea that’s worth pursuing? Would anyone here have use for such a UI?

Here’s the enhancement proposal if anyone would like to see it: https://github.com/CharlesAverill/enhancement-proposals/blob/60a6f97b25b5fe489b5ff6438e78ab1783345c4e/flowchart-notebook/flowchart-notebook.md

Thank you!



Thanks Charles! Linking to your Jupyter Enhancement Proposal: https://github.com/jupyter/enhancement-proposals/pull/50

Have you had a look at KNIME? It is a software offering graphs but it is rather far away from Jupyter Notebooks. One question would be how close the nodes should be coupled.
Loose: there are defined input and output variables
Tight: whatever variables have been defined in one node are available in the following
Should the nodes allow different programming languages? How many nodes (if any) should be off-the-shelf, like common operations?
It is a great question of how much abstraction you would like to introduce.

1 Like

I haven’t seen KNIME before, but at first glance I agree that it’s not as open-ended as what I’m working on. In Satyrn, my python-based demo of this idea, the user inputs Python code that is executed within the interpreter, so all defined variables are available in all nodes/cells. KNIME seems to be just for data manipulation, but I’m trying to open this up to all code. I might try to implement specific if/then edges or nodes, but I’m planning for the user to define most of the nodes they use.