[HN Gopher] D2: A new declarative language to turn text into dia...
___________________________________________________________________
D2: A new declarative language to turn text into diagrams
Author : snikolaev
Score : 177 points
Date : 2022-08-30 16:33 UTC (6 hours ago)
(HTM) web link (d2-lang.com)
(TXT) w3m dump (d2-lang.com)
| JohnHaugeland wrote:
| It's interesting.
|
| This notation is pretty similar to the notation in the FOSS tool
| (admittedly that I wrote) over here:
| https://stonecypher.github.io/jssm-viz-demo/graph_explorer.h...
|
| Fortunately, no need for accounts or payment there.
| wongarsu wrote:
| Mermaid also does this, and is integrated in github/gitea/gitlab.
|
| To try it out, just open a new github issue and add
| ```mermaid graph TD; A-->B;
| A-->C; B-->D; C-->D; ```
|
| Or try the live editor: https://mermaid.live/
| jbreckmckye wrote:
| Mermaid has heaps of problems. I discovered this when I tried
| extending it myself.
|
| Firstly, neither its parser and its visualiser can be extracted
| from the library. You can't process a grammar on a backend and
| then render out an SVG. You can't generate an SVG as part of a
| CLI tool - not without spinning up a web browser in automation
| mode.
|
| Secondly, the grammar is messy. Really really awkward.
| Flowcharts are OK because they were the first Mermaid usecase,
| but other grammars are quite weirdly written, brittle, and try
| to be a mismash of other DSLs. Which in turn leads to very
| awkward token choices to avoid stepping on the toes of parts
| that are UML-like, parts that are DOT-like, etc etc
|
| My impression reading Mermaid's issues is that it was built
| from scratch by a JS developer who hadn't any previous
| experience with DSLs, parsers, or language design, and largely
| learned as he went along. That's acceptable for a proof of
| concept. But as a finished product Mermaid is a lumbering mess
| Terretta wrote:
| See also:
|
| https://structurizr.com/ - diagrams as code
|
| https://c4model.com/ - C4 model for visualising software
| architecture
|
| The consistency of structurizr + c4 is great for sharing
| information across scaled teams of teams.
| michaelsbradley wrote:
| also:
|
| The XState Visualizer generates nice looking statecharts.
|
| https://stately.ai/viz
|
| Click _See an example_ in the left pane, then click _Visualize_
| at the bottom of the right pane.
|
| On the roadmap are visualizations for XState's actors facility,
| i.e. multiple statecharts interacting with one another.
|
| If you login, you can save/fork statecharts and get shareable
| links for them. There doesn't seem to be a way to export the
| diagrams (as PNG or SVG) but maybe that will be added in the
| future.
| howeyc wrote:
| also:
|
| https://pikchr.org/
| keepquestioning wrote:
| Does this use Stable Diffusion?
| whalesalad wrote:
| Something was posted here recently in a similar light - does
| anyone recall what it was?
| jrib wrote:
| there are a few of these tools but
| https://news.ycombinator.com/item?id=31273777 was a recent
| reference to https://mermaid-js.github.io/mermaid/#/
| tonerow wrote:
| This was up yesterday
| https://news.ycombinator.com/item?id=32637689 It's similar in
| that it's a diagramming DSL
| ducktective wrote:
| Is there a declarative language or framework for creating ad-hoc
| GUIs that consume structured data from stdin stream and spit-out
| a GUI?
|
| Like feedgnuplot [1] but not only restricted to graphs.
|
| [1] https://github.com/dkogan/feedgnuplot
| ajstarks wrote:
| Not a GUI, per se, but there is decksh [1] and dchart: [2]
|
| [1] https://speakerdeck.com/ajstarks/decksh-object-reference
| [2] https://speakerdeck.com/ajstarks/dchart-charts-from-deck-
| mar...
| keyboardclicker wrote:
| Time for someone to copy the good parts and implement them as
| FOSS. Good luck getting enterprises to pay for diagrams.
| stuart78 wrote:
| At the end of the video the presenter mentions that they plan
| to open source the language when it reaches a greater stage of
| maturity.
| clcaev wrote:
| A code dump does not make it an open source project.
| Sustainable OSS projects are developed publicly.
| sharkster711 wrote:
| That's probably why they're doing a code dump
| stragies wrote:
| The language spec, or the rendering backend code? And
| even if the "complete package", if the "locally runable
| version" is an afterthought of the OnlineWebVersion, have
| previous situations like that not regularly resulted in
| *Paks wrapping an electron instance with some blobs under
| the hood?
| zactato wrote:
| Lucidchart has entered the chat.
| dalager wrote:
| https://plantuml.com/ is free and nice. Plays well with Markdown
| and C4 diagrams. The only UML-specific diagram type I use is the
| sequence diagram but that is very useful IMHO.
| be_erik wrote:
| It can be a bit clunky setting up the jar (or hosting it
| yourself), but it's still the best worst option. It scales
| pretty well and can draw some very complex flows, while still
| giving you the best in just plain ole text editing.
|
| I could have never maintained the diagrams I used for other
| developers on my teams or folks on the audit/regulation side of
| thing without it.
|
| The default styles are really unprofessional looking and I
| think a lot of folks look the other way once they see that. C4
| diagraming with PlantUML is also a breeze for systems diagrams.
|
| https://github.com/plantuml-stdlib/C4-PlantUML
| nerdponx wrote:
| A declarative language for diagrams without so much as a passing
| mention of Graphviz, or even Mermaid.js anywhere in the docs?
|
| It does look like a material upgrade from Graphviz, but even
| so...
| stragies wrote:
| graphviz svg output can be (with some tricks) CSS-styled + JS-
| animated, so the sky is the limit w.r.t. how fancy you want to
| make you DOT graphs, and their elements.
| convolvatron wrote:
| actually the effective limit seems to be around 50 nodes
| stragies wrote:
| Limit of what exactly? I've made much bigger than 50 nodes
| SVG-graphs using GV, and styled them with probably 50+ CSS
| styles and animated more than 50 nodes.
|
| So, could you please elaborate?
| deltree7 wrote:
| Sadly, any start-up tool firm can't have any other business model
| other than subscription.
| sharkster711 wrote:
| Does anyone know what the clipboard tool that was being used in
| the youtube demo is?
| jacobra2 wrote:
| I believe FlyCut.
| rgrieselhuber wrote:
| Looks cool. Any inherent limitations or performance issues with
| graphs that are very large? (20M+ elements)
| mkl95 wrote:
| Unless you use instanced rendering via some GPU API it's going
| to take some galaxy brain code to make that work.
| jbreckmckye wrote:
| Forget about rendering, just doing the layout would be
| extremely challenging.
| stragies wrote:
| Some of the graphs (near the bottom) of the GraphViz
| example page are quite large: https://graphviz.org/gallery/
|
| And there's a link to a gallery with even bigger ones, so
| #NumberOfNodes alone does not seem to be the main limiting
| metric. Maybe combined with the choice of rendering layout.
| samatman wrote:
| Why uh. Would you expect that to work?
|
| How much of your life were you planning to dedicate to
| scrolling from one side of the image to another?
| guhidalg wrote:
| I think he expects to be able to zoom out.
| rgrieselhuber wrote:
| Yup for zoomed out views. It's handy when visualizing large
| websites.
| abeppu wrote:
| The last question in the FAQ makes it clear that this can only be
| used in the context of their account-based online tool. Their
| free offering literally says "3 diagrams". Above this, the FAQ
| tries to compare their tool to Mermaid, Graphviz, PlantUML which
| are all open source, locally runnable, etc. Their comparison
| totally skips the fact that, because D2 can only be used in their
| service, a broad number of use cases (including programmatically
| generating diagrams inside some other application) basically
| aren't supported.
|
| Seems like it could have been cool, but likely will not seriously
| try it because of these limits.
| kevmoo1 wrote:
| Agreed! Interesting idea, but charging for this is not going to
| get them very far.
|
| Gotta find a way to do an "open core" or similar.
| geodel wrote:
| Agree. To be honest, I'd find it useful if it were closed
| source but native installable tool that can convert text to
| diagram which then could be exported to image/pdf etc.
| geraldwhen wrote:
| Yup. I use many paid, local tools. And because there's no
| network service nonsense it's not a problem at work.
| rvense wrote:
| Services as a software substitute...
| alixanderwang wrote:
| Those tools are mature 10-20+ year and we're just getting
| feedback for our little ol' alpha born ~yesterday. The
| limitations are temporary -- we are working on an offline,
| locally runnable experience (it's in the roadmap), but, alas,
| engineering bandwidth of a 6 person team.
|
| edit: I've updated the docs to make this clear
| BarryMilo wrote:
| How is this different/better than, say, Mermaid?
| sieabahlpark wrote:
| Would you believe me if I said this was just an ad and you
| wasted time on it?
|
| Just because HN isn't Reddit doesn't mean ads aren't thrown in
| with all the curated "content"
| armchairhacker wrote:
| May be an ad but this is something I would actually use if it
| wasn't paid.
|
| Like other said, maybe it will inspire someone to take this
| and make an open-source version
| rch wrote:
| If it was open source with a permissive license I'd start
| paying immediately, like I have with other projects.
|
| > if it wasn't paid.
|
| Maybe you intended to say 'if it wasn't _closed_ ', or
| similar.
| jacquesc wrote:
| Wow, thanks for the clarification. Totally missed this part.
| After having already evangelized this with my coworkers, I may
| need to take it back.
|
| If they made the core open and allowed users to use this
| language independently of their online service, there's still a
| ton of value they could have added with premium services on top
| of this. For writing the docs, sharing with teams, comments /
| versioning, etc. Visual figma type features essentially. A team
| bought into the specification would very likely pay for this.
|
| But it's hard to imagine it taking off being completely locked
| into their service. Ah well, a fine idea and looked pretty well
| executed.
|
| EDIT: maybe that's on their roadmap "When the language is more
| stable, we intend to open source D2. This will happen sometime
| in 2022.". Ok, back on board
| abeppu wrote:
| Also, to me this was a reminder of the importance of context
| and assumptions in good communication. Never having heard of
| this org, I clicked the link for this post, saw the top-level
| blurb describing the project and assumed that a 'language'
| which generates diagrams from declarations would be something I
| could _run_. I clicked on the 'Getting Started' section and was
| annoyed that there was no 'Installation' section. I started
| from a context that inclined me to think of this as a stand-
| alone project which ought to have certain characteristics.
|
| I think the author of this page started with the assumption
| that of _course_ given their business and product, a 'language'
| for diagrams is only giving users access to something that maps
| on to whatever internal representation their tool already uses,
| and allows technically inclined users to work with text and
| fewer clicks. To them, the assumption seems to have been that
| readers will already be users of their product, and the
| assumption that the 'language' is built into their tool _and
| nowhere else_ is so far in the background that it's only
| somewhat obliquely addressed as the last question in a FAQ.
| Per_Bothner wrote:
| People seem to be missing that this is a preview, not a product
| (yet). And that: "When the language is more stable, we intend
| to open source D2. This will happen sometime in 2022."
| setr wrote:
| In D2 Tour video, at 4:30, they say
|
| > When it's more stable, we will be open-sourcing the
| _language_.
|
| If thats the case, that only the _language_ will be open-
| sourced, not the visualization, then I 'm not entirely sure
| what that really gets you, beyond perhaps alternative
| editors?
|
| But its the layout algorithms that are actually notable.
| [deleted]
| stragies wrote:
| Perhaps then "Preview/Beta online service" should be part of
| the Headline/title.
| sophacles wrote:
| Perhaps reading the article is a useful way to get
| information? If the headline contained everything everyone
| would conceivably want to know, it would be the article.
| It's not like the headline was misleading: "a new $tool" is
| a common phrase for software in alpha and beta stages.
| stragies wrote:
| So, to you, "Tool" or "Language" do NOT imply that you
| can use it independently of a specific online service?
|
| I mean, I agree, that "new" is marketing speak for
| "alpha/beta", but -to me- there is a difference between a
| "language/tool" and a "Single-Vendor-WebService". Or is
| my understanding of the semantics of the English language
| outdated?
| geraldwhen wrote:
| This is a complete non starter for any regulated industry.
|
| Shame. Mermaid works almost okay and often looks like garbage.
| I wish there was an open source effort somewhere to do better,
| or even a paid locally runnable tool that has no service
| connections.
| JohnHaugeland wrote:
| Here's an option: https://stonecypher.github.io/jssm-viz-
| demo/graph_explorer.h...
| cush wrote:
| It's why I keep falling back to excalidraw over tools like
| mermaid with auto-layout. When I need to communicate an idea,
| often I really need to fuss with layout in order to get my
| point across, and having the control to drag things around is
| the only way to get there.
| tonerow wrote:
| It won't work for every use case but https://flowchart.fun is
| one open-source alternative
| alixanderwang wrote:
| Hi all, creator of D2 here. I posted this on Reddit to get some
| feedback but was hoping to improve the docs and offer a
| playground environment before posting on HackerNews. Ah well. I
| wanted to clarify some things:
|
| 1. D2 will be open source and usable outside of Terrastruct.
| Terrastruct will remain the best interface to D2, with
| bidirectional updates from GUI, but we already have vscode and
| vim plugins ready for local editing. We're a small team and
| working on one thing at a time.
|
| 2. We're aware of PlantUML, Graphviz, Mermaid, of course. These
| are mature offerings, but I see plenty room for improvement that
| we intend to tackle with D2. https://d2-lang.com/tour/faq#how-
| does-this-compare-to-mermai...
|
| Feel free to ask any questions!
| kaladin_1 wrote:
| Nice intro video on the landing page. I liked the capabilities
| shown.
|
| I do think you could have made it obvious in the Getting
| Started section that this is not a local runnable language. I
| spent some time looking for how to install it only for me to
| realise that it is some form of SaaS.
| alixanderwang wrote:
| Thanks! The caveat is on the intro/home page. We very much
| intend to support a high quality locally runnable experience
| before we'd call it a v1.
| flashgordon wrote:
| By the way do you have a BNF grammar (or something more of a
| formal spec for this?). The cheat sheet does look good though.
| alixanderwang wrote:
| No unfortunately not yet. The docs are like 75% caught up to
| all the language right now and it's still changing not
| infrequently, so we'll make some formal specs once it's
| stable. This reveal caught us off guard =).
| mdaniel wrote:
| > I posted this on Reddit to get some feedback
|
| > This reveal caught us off guard
|
| Hmmm
| alixanderwang wrote:
| hah, so the line of logic was: "let's post on reddit to
| get some low stakes feedback in preparation for a HN
| launch"
| [deleted]
| kgm wrote:
| I am taken a little aback by the name. There is, of course,
| already the D programming language, which has even had a major
| version number of 2 for quite some time.
|
| It also brings to mind the JavaScript library d3, which, while
| not _strictly_ for making diagrams, can easily lend itself to the
| purpose.
|
| Calling this thing "D2" seems potentially confusing.
| snowcorn wrote:
| We have:
|
| "D" the programming language [0]
|
| "D" the data language specification [1]
|
| "D" the programming language for DTrace [2]
|
| "D3" the javascript library [3]
|
| "D4" library/tool for Declarative Data-Driven Documents[4]
|
| "D4" implementation[5] of the data language specification[1]
|
| Overall, I think "D2" is objectively the best choice here. We
| have at least three "D"s, two "D4"s, and one "D3", so it makes
| sense to put it in as "D2". I certainly wouldn't want another
| "D" or, heaven forbid, a "D5".
|
| [0]: https://en.wikipedia.org/wiki/D_(programming_language)
|
| [1]:
| https://en.wikipedia.org/wiki/D_(data_language_specification...
|
| [2]: https://en.wikipedia.org/wiki/DTrace#Description
|
| [3]: https://d3js.org/
|
| [4]: https://github.com/joelburget/d4
|
| [5]: https://en.wikipedia.org/wiki/Dataphor#Languages
| tomwojcik wrote:
| As a gamer, after reading just "D2" my brain immediately
| assumed it's about Diablo 2 Resurrected.
| Ancapistani wrote:
| I thought of the D-2 extract on Reserve in Escape from
| Tarkov.
| MaxBarraclough wrote:
| Calling it now, someone will make a tool for automatic
| documentation of R codebases, and call it R2D2.
___________________________________________________________________
(page generated 2022-08-30 23:00 UTC)