1. 4
    Block-based UI Libraries for Data Flow? ask api editors visualization

I’ve been chewing on some ideas around some different paradigms for code notebooks for a while and am wondering if any lobsters might be able to help me out. A couple of days ago I came across this interesting Simulink replacement: https://www.pictor.us. The ideas I’ve been chewing on don’t really fit into the Pictorus model at all, but they’ve absolutely nailed a couple of the UI pieces around wiring functional blocks together. GNUradio does too, sort of, but despite how much I love GR… I fully admit it’s kind of ugly. There’s a bunch of AV tools that do this too, but they’re very much based around sending audio data between blocks. Obsidian’s Canvas does a great job of the layout but doesn’t have any notion of data attached to the arrows between the blocks.

Does anyone have any suggestions for beautiful open-source libraries that let you do block-based data flow without being tied to a specific domain? I’m pretty agnostic to actual language or tech. I have a slight bias towards native desktop (OpenGL or whatever) but would be happy with browser-based as well, either through a Canvas or using real DOM elements.

[Apologies, not sure if I got the tags right here…]

  1.  

    1. 5

      I’ve written a few graph-based libraries over the years mainly in an AV context, for instance in https://ossia.io - in the end the “graph” part is easy enough to do that I feel it’s better to do one with the specific affordances required for the project than to try to find a super generic library.

      Otherwise a fairly generic one in QtQuick is https://github.com/cneben/QuickQanava

      1. 2

        Oh very cool! Yeah, I’ve had the same thought on the “specific affordances” thing too and it’s good to have that validation that I’m not crazy thinking that. I haven’t done much UI programming in years (it’s all been either backend servers, data processing pipelines, or embedded systems) and trying to come back to it has been… frustrating.

        Thanks for pointing out Ossia! I have a different project that involves building out some kind of unique AV hardware and I was planning on using OSC to control it. I’m definitely going to have a closer look at this, both for doing complex OSC control and to look under the hood a bit at how the UI layer is implemented.

      2. 2

        “Block-based” means nodes and wires, correct? I usually associate “block-based” with Jupyter cells are block or Notion blocks or maybe even Blockly-based programming

        I don’t know if it’s generalized, but you might find the project https://unit.land interesting https://github.com/samuelmtimbo/unit