V 0.3.0 … almost

Version 020 was blobs.
David Harel called nodes-as-sets “blobs”. They make graphs very expressive, particularly when you are trying to understand or model a complex topic. You can make high level general associations alongside specific detailed links. It gives context to “the big picture”, whilst allowing the eye – and the mind – to zoom in to a specific detail, without losing that context. Implementing them meant adding ports – a construct that allows you to store where a specific edge connects to a node. Architecturally, this is significant, because the design now has an extra layer. The graphics for this was finished in March. But the list-view model updates weren’t in. That then got updated to a proper hierarchical tree-view. And then it was so close to being a proper higraph – it just needed hyperedges.
So the 020 went by at speed, and 030 – hyperedges – became the new goal.
If adding a layer to simple construct like a node is complex, changing edges from single segment to multi-segment, and from single start & end to multiple ends is the square of that. It turns out that a hyperedge is essentially a sub-graph of binary edges. Oh, and it works for spline or straight-line edges. This took from April to now. Along the way, undo and redo has been (mostly) added. And myriad bugs squashed. Zooming and scrolling work far more predictably. Autosave is working. Some user preferences can be set. Node and blob text can be moved around.
So we are now within a few technical issues of “Minimum Viable Product” – something usable at an alpha-release level. Packaging for Windows is more or less working. The github repo needs tidying up – files are rather all over the place. But these are very doable things. The long yards are done.

A higraph with multiple blobs, nodes within the blobs, and 2 hyperedges. Selecting and moving a blob will automatically move all its children.
To the best of my knowledge, this is the first generic hyperedges-as-lines graph drawing tool available, and more certainly the first higraph drawing tool. There is only one feature that Harel specified that is not implemented. Partitions – an AND construct for sets, rather than the default OR semantic. We shall have to see if there is need or demand. The other deviation from Harel’s paper is that we have left nodes in. Nodes are essentially terminators of the parent-child tree. They turn out to be quite intuitively useful.
Version 040 has 13 categories of feature, and a whole slew of details (+100) potential feature items, and the list is not complete. But lets get 030 out the door, build some models (the original intent!) and see if anyone else is interested in it.
