I'm guessing for a lot of people draw.io and Excalidraw are probably the go-to. If you use draw.io (or something else), what do you like about it, or what do you wish was better?
[1] - https://app.vexlio.com/ for the curious
I'm guessing for a lot of people draw.io and Excalidraw are probably the go-to. If you use draw.io (or something else), what do you like about it, or what do you wish was better?
[1] - https://app.vexlio.com/ for the curious
39 comments
If you made math stuff easy to draw I'd use your tool in a heartbeat. Unfortunately there's probably not a large market for that sort of thing.
Graphviz - same basic reason as Mermaid, though no markdown support. Versioning text is a lot easier than versioning binaries.
Draw.io - if you've got to have a binary, this is it. In particular, it allows you to embed the drawing information in the image so that you can import a .png file into draw.io and get the drawing.
Regarding graphviz/dot, I have been using it from what feels like the dawn of time and am somewhat sad that we haven’t improved upon it. The syntax, styling imitations, etc. put me off enough that I tend to avoid it.
And if I need to generate a graph programmaticaly then I instinctively reach for Graphviz as it's solid and can produce the graphs in so many different file formats that they're easy to include wherever they're needed. Your code is a lot simpler as it doesn't need to handle any of the rendering logic, it just needs to work out which nodes are connected by which edges.
https://excalidraw.com/
https://github.com/excalidraw/excalidraw
There are a few good options in the code to SVG (PNG, JPG, whatever) space besides Mermaid. The venerable graphviz has been around since the 90s, I think, and uses the DOT language. The newer D2 language probably has the nicest overall aesthetics as well: https://play.d2lang.com/
It's really useful for embedding diagrams in your code. Not so much for uses outside of code though.
Draw.io is OK too, but the interaction is much slower when editing. The strict position/shape of arrows makes me want to clean things up way more than necessary and waste time.
I'd maybe consider miro or draw.io if I was working on something with other people and expected lots of edits and change history.
Mermaid is an interesting concept, but putting things in the reasonable location can be next to impossible and a single new connection can blow up the whole layout. And the integration is never quite polished - so many times I've been scrolling down a github page just to suddenly stop and resize a diagram. Then the panning/zoom is a bit clunky. (I know it's a client issue, but unless the defaults become reasonable, it's a mermaid issue too)
It makes it a lot easier to keep the documentation in sync with the code than having to remember to go to Confluence and update things. And avoids the pain of dealing with Atlassian's slow-loading site.
Recently, though, I've been using D2[3] a lot and really liking it. The diagrams don't look as aesthetically pleasing to my eyes, but being able to design everything with a simple language is pretty cool, and helps with automation.
[1]: Datadog owns Cloudcraft, hence the bias. Plus, I work in the Cloudcraft team, haha.
[2]: https://www.cloudcraft.co
[3]: https://d2lang.com
[1]: https://www.openoffice.org/product/draw.html
[2]: https://www.archimatetool.com/
[3]: https://graphviz.org
[4]: https://eclipse.dev/papyrus/
It connects to your system using OpenTelemetry and it lets you automatically document all the components, dependencies, APIs, etc. I prefer it to static, drag and drop whiteboards because I get immediate visibility without having to waste time moving boxes and arrows.
(Of course you can still create sketches if you want, but the real value is in getting the information you need immediately)
Increasingly, I'm describing my diagrams to an LLM and letting _it_ generate the Mermaid.
For Enterprise-Grade Slideware™, I'll use either Lucidchart or draw.io.
For my personal projects, I'll use Mermaid.
Draw a circle, add a label to the circle, draw a box right to it, draw an arrow from the circle to the box, and so on.
Of course, its made for developers trying to make applications, not end users.
In a pinch and when on a call, it’s always Microsoft paint.
very rarely use mermaid, but good for some simple README/markdown style diagrams.
The diagrams I draw are all done with something like graphviz, plantuml, mermaid, Structurizr, or d2.
Very rarely I'll use excalidraw to throw together a one-off.