Skip to main content

Conclusions

Markup tools

Mermaid

Great for less complicated layouts, but can be used with patience for more complex stuff. Not necessarily a downside, doing complex stuff in an interactive editor is also complicated, but perhaps differently. Simon's use case, for example, is a simple application for which Mermaid does a perfect job. You can do more complex layouts as in the Kubewarden and Epinio diagrams, but small changes in markup can result in big changes in output appearance as the automated layout algorithm reworks paths from scratch again. Lots of grouping using subgraph is useful here. Mermaid's big advantage is that it's well integrated with Docusaurus. Also, easy to use with VScode extensions. Mermaid has an active community. GitHub renders Mermaid diagrams in Markdown, which is convenient.

PlantUML

In practice, it's quite similar to using Mermaid. Different syntax and capabilities but they felt similar to use.

Diagrams/Mingrammer

Again, a very similar way oof working to the previous two.

D2

Didn't get round to this one, but again. Similar.

Structurizr

For C4 and I didn't get round to this. C4 architectural diagramming felt like it might be a bit high level for the use cases in consideration here.

Interactive tools

Excalidraw

Seemed to be very intuitive and easy to use. Less features than Inkscape but more than enough for doing architecture diagrams. Easy grouping, ungrouping and object moving. Saves in Excalidraw/JSON format, but can export SVG. Also, exports PNG for display. The SVG is rendered by browsers but doesn't look as good as exporting PNG, for display, from Excalidraw. If being used for production I'd recommend saving in Excalidraw/JSON and exporting PNG for display.

Inkscape

Obviously, a comprehensive tool for graphic designers. There is plenty to learn before becoming proficient. For graphics from the ground up with full control over many features.

Lucid

Comprehensive features, reasonably easy to use. Proprietary. SUSE has a license arrangement. Do we need the power and features? I'm not sure.

Generally, ...

Hmmm....... I'm going to let this brew for a little while.

TL;DR

  • Use Mermaid as a first choice.
  • If interactivity is wanted (are you sure) or needed:
    • Use Excalidraw for simplicity
    • Use draw.io, Inkscape, or Lucid for features and power.
Mermaid code for the last diagram below:
flowchart
start[I have a diagram to do.]
mermaid((Mermaid))
style mermaid stroke:green
interactive{Interactive?<br/>Are you sure?}
simplicity{simplicity<br/>or<br/>features?}
open-source-s{Open Source?}
open-source-f{Open Source?}
excalidraw[Excalidraw]
draw.io["draw.io<br/>or<br/>diagrams.net"]
inkscape[Inkscape]
lucid[Lucid Chart]
start --> mermaid
mermaid -->|I think I need interactive| interactive
interactive --> |Yes| simplicity
interactive --> |No, not really| mermaid
simplicity -->|simplicity| open-source-s
simplicity -->|features| open-source-f
open-source-s -->|Open Source| excalidraw
open-source-f -->|Open Source| draw.io
open-source-f -->|Open Source| inkscape
open-source-f -->|Proprietary| lucid
meh[Meh, I can probably refactor this as 'diagrams-as-code' in Mermaid]
excalidraw --> meh
draw.io --> meh
inkscape --> meh
lucid --> meh
meh --> start
Graphical conclusion