Hi HN, I made a diagramming tool specifically for explaining systems. It's something that I felt like I could've needed at my previous engineering jobs when I was explaining some software architecture or concept that were complex and I had trouble expressing on a single image diagram. Would love to hear HN's thoughts and feedback!
I've often needed something like this, but, sadly, once again, this isn't it.
No discredit to you; this is great work, but for me, personally: The world does not need more diagram editors.
Diagrams are fundamentally not the right tool for the problem I have.
The problem I have is that I have a technical system, for example, a network diagram, or an architecture diagram of a system or set of systems; and I need the data that represents that system, to be visualised in multiple diagrams, in such a way that you can have multiple views of the same data.
This means that when you make a change to the data, all of the diagrams are updated to reflect that change.
As an analogy to explain what I mean, consider a 3D model:
If you have a 3D model, you want to save it as a 3D model.
What you don't want, is to manually draw the way that model looks from 5 different perspectives; because if you alter the model, to say, add a new cube, or change the color of a face; you have to redraw every single diagram.
What would be actually novel, would be to allow you tag / label / whatever the components of your diagrams in some way, and they apply filters to the diagram to generate different views of the data, while maintaining one single master diagram.
I know, this is a hard problem, because layouts are fundamentally hard (if you've ever worked on layout engines you'll know exactly what I mean), and you end up looking like graphviz as soon as you try to use constraint solving to layout the elements in a diagram... I guess.
...but, at least it would be genuinely novel to try.
I don't really see much here that would, eg. get to use it over the many other indistinguishable diagram editors out there.
I think we already have this tool, it's just not a gui but any programming language. I'll quite often create a debug tool to dump out graphviz of something difficult to understand e.g. project structures, syntax trees, call-graphs, components of 3d models etc. It only takes minutes.
The problem I experience is that the gap between raw data and an elegant diagram is really quite large. You mention layout problems. Hairballs and insane wiring is bad (and sometimes unsolvable without abstracting detail) but something even harder is that layout has strong semantic meanings, not too far from the order of words in a sentence. Even a small neat diagram can be really confusing or even misleading e.g. closely conceptually related things get spatially separated, the most important things get tucked into a corner, utter trivia looks like the main flow etc. Layout is a subtle language all of it's own.
In practice I find it requires one-off programs to inject case specific guidance to produce tolerable results e.g. styling certain things, grouping others, complex rules on what to ignore etc. You could wrap up some of these in a gui but it's so computational that it would be a retrograde step.
I don't have any personal experience from it aside from viewing an existing architecture once, but from what I could tell, the ArchiMate language supports this, possibly via a concept called "viewpoints" (https://en.wikipedia.org/wiki/ArchiMate#Viewpoints). There is a free and open-source tool for it: https://www.archimatetool.com/ .
Do you mean something like Netflix Vizceral[1]? The problem with using data is that there's usually too much of it, and at that point you do end up with a graph that only something like graphviz can layout.
I know what you mean though; but it has to be IMO just enough data, that can then be tweaked by a human to help with the key purpose of such diagrams - human understanding.
I've used https://structurizr.com for that purpose before. It allows you to define the elements (containers, users, etc.) separately from the diagrams and then pull them into various views of the system.
It's kind of an old-school tool, but Enterprise Architect is a tool that does just this. It's also a completely overwrought model-based engineering thing but ignore that and it's a useful systems/data architecture model database tool.
Sure, for a data integration we needed the “high level” architecture diagram for business users (eg. Database here, data flows into it from azure data factory, which reads it from here, etc).
...and the low level resource group names, networks, firewall rules, etc. so it would actually work.
Exactly the same data, but less detail in the former.
Then the same diagram again, only this time it shows the data flows for the BI team.
The nodes in the diagrams are not different, the connections between them are, and some nodes (eg. Resource groups and NSGs aren’t relevant to some audiences.
Why can’t I have one diagram with layers (I can) that changes the layout to still be a nice diagram when I toggle some layers off (not possible in basically any diagramming tool I’ve ever used).
I run into this kind of issue which detailed architecture diagrams all the time; someone modified a design (or system) and the documentation is instantly out of date in all places except the one they remembered to update.
Um... so tldr; if you’ve ever had to document the exact network architecture down to protocol and port between systems because you actually need that level of detail to make it work, but also want to surface the same data to other people who really don’t care what the different network ranges in dev/sit/prod are.
Could you say that these layers are systems that make up a larger system? So, when you want to view a certain system, you see all its components as nodes. And if you click on a node, you can see its components.