I’m not the OP, but of the top of my head, I would like to have:
- scoping for node and edge styles (among other things, this would help
towards copy-pasting graphs into subgraphs)
- named styles (e.g. define *”shape=foo”* as red rectangles with italic
text)
- more consistency in graph attributes across layout engines
- more intuitive effect of graph attributes on layout
- easier way to style node content (the ‘old’ way was ugly, but the
restricted subset of html isn’t that nice, either)
- ability to switch layout engines in subgraphs (among other things,
this would help towards copy-pasting graphs into subgraphs)
Also (from the article) ”If your rankdir is vertical, then you need to use {} to change the record type’s direction.”, IMO, is not what most users would expect, and is a pain in the ass when experimenting to find an optimal layout engine/graph attributes pair.
I agree with most of the issues the sibling commenter mentions though I haven't encountered all of them. It's a declarative language that has adopted a C/ALGOL style syntax. I find the way properties and declarations mutate and propagate quite unintuitive and I hate the boilerplate.
I haven't thought about it enough but I am a big fan of Elm's declarative graphics [1]. I think starting with something like that would be interesting.
n1 = circle "node 1"
n2 = square "node 2" |> outlined red
main = graph [edge n1 n2, edge n2 n1]
It seems to me that the syntax is rather simple and minimal.