Mermaid became quite a common markdown feature. It is supported in a lot of places already. It can easily be integrated as it is pure client side javascript.
Plantuml plugin within Confluence is pretty nice for documentation, and arguably a super-power because it makes it easier to make good docs ("a picture is worth a thousand words").
The source shows up in edit mode (no external app needed; and it's always correct) and it handles the rendering for you, thus reducing friction.
In other places I've seen people attach a PNG. If you're lucky, they've also attached the corresponding (and up-to-date) source in visio/draw/ppt/whatever random app format, in which case making a small edit might only takes ten of minutes. In the worst case, it's missing source, the source file is not the same as the PNG, or they used some program you don't have, and you have to totally redo it. For most people if the friction is too high, it just doesn't get updated.
Logged in specifically to agree and upvote this comment!
- on-demand preview of changes before i hit save
- source code is always embedded with the diagram and anyone can reference and edit
- source controlled history via confluence history
I've used mermaid extensively but ultimately abandoned it because it didn't have a good flow for sharing the source and history. Confluence + PlantUML is a great solution.
I didn't realize there were multiple now! We use "PlantUML for Confluence" [1] now but have had that for a few years. The live preview thing some of the others seem to have would be nice.
Thanks. Please do identify when they're open source -- I have been bitten by filling a small app of unknown longevity with my system diagrams and flowcharts, only to have it disappear.
i mean i will inject my opinions when i have to use these things in anger, right now it is just a raw list for future usage. i do put little stars or warnings against some items when i have an opinion.
Plantuml won't even run with uBlock on. Well it will run, but no diagram. Not that interested in trying to divine just which little thing it wants on to work given there are so many alternatives.
Okay. That's a bummer. But also: PlantUML is a lot more, or a lot different than another online diagramming tool. Their strength is expressing the diagrams using plain text. Having used my share of tools, l have never not hated drawing sequence diagrams, but in plain text it is a dream. They have command line tools, IDE integrations, etc.
Let's not forget the venerable UMLet (https://www.umlet.com). It's simple, cross platform, and supports a variety of UML diagrams using a text-based syntax.
As we're listing alternatives, Lucidchart also supports generated UML Sequence Diagrams, which lets you use their GUI after generation to customize it / alter as desired
And this will draw render a sequence diagram in any browser. I've used this to have as documentation in the /docs folder of project Git repository for some of my teams. It is great because it is pretty easy to update and maintain changes via VCS.
You actually don't even need the HTML scaffolding for that, and can author a js-sequence-diagrams diagram straight into a text file, append a simple script to render the document, and save as .html! Example: https://unpkg.com/browse/js-sequence-diagrams-autorenderer@1... - click on "view raw" to see it in action.
Looks a lot cleaner, and the .html itself is a valid diagram as the script tag that bootstraps the renderer is prefixed with a comment hash.
EDIT: I used to have this in a gist that I'd load via rawgit.com, but since that's no longer active, I figured I'd update my script and make it publicly available through unpkg :)
I would really like a sequence diagram that allow for diagonal arrows, not just horizontal ones. A message takes time to arrive to its destination and sometimes it's interesting what else could happen during this time, for example the backend sending another response to the requester. Also requests don't arrive to the destination in the exact order they where made. All of these are impossible to represent with horizontal arrows.
It doesn't quite do what was asked, while it handles angled lines, it doesn't seem to support overlapping angled lines, which in comms systems is common
There’s an asynchronous notation in sequence diagrams if responses can go back in different order. Still uses horizontal arrows but the arrowhead is different.
I don’t think diagonal arrows really help with this and will be harder to deal with because they could get overlapping really quickly.
But if things are truly out of sequence use something other than a sequence diagram. Just a regular flow chart, or activity diagram, or state diagram.
I use https://sequencediagram.org/ quite frequently these days, I like how you can get a link with the actual diagram encoded in it, makes it trivial to store and share.
Thanks for sharing! Sequence diagrams are awesome.
I've used websequencediagrams.com and PlantUML to create them before, and honestly I much prefer using an open source CLI tool for this than a closed source service, even if it's free to use. The day the site goes offline all my Git versioned diagrams would be useless.
If the authors are reading: have you considered releasing a standalone CLI tool? It could even be open sourcing the site itself and packaging it as a Docker image. If not, exposing an API like wsd.com has would be very useful.
Much appreciated. That still does network requests and I wasn't able to make it work fully offline after downloading all the assets, but pretty nice nonetheless.
Really? I downloaded the js file linked and set up an index.html with that snippet. The only requests being made were for FontAwesome stuff which you could also download and change the references to in that `embed.js`.
Yeah, I gave up at changing the minified JavaScript, and would still prefer a saner and official offline solution from the author.
But it's not a request, I doubt I'll ever use this because of my initial points. If it was a CLI tool that converted plain text input to image I'd consider trying it out.
Why not use Mermaid (JS => SVG) or PlantUML (Java => SVG, PNG, etc)?
Especially Mermaid [1] is supported by a lot of Markdown editors and can be directly rendered in browsers by including the javascript library. Without any data protection issues.
PlantUML needs a server or an installation (Java) which can be self hosted as well. And provides a ton of integrations [2]. And of course it supports sequence diagrams [3]
I'll throw diagrams.net (formerly draw.io) into the discussion.
Their UI is incredibly well designed/intuitive. Does swim lanes quite well - along with most other charts/diagrams... and there's a desktop version too.
I use both regularly and tbh they aren’t comparable. Swimlanes.io is the perfect example of one small niche idea well executed while diagrams.net is also well executed but the other side of the scale. If you want a quick swimlane diagram you can have it published in the time it takes you to prep the canvas in diagrams.net
Not sequence diagrams but a tool to make diagrams in general yEd - http://yworks.com -- been using it since a long time - it's Java based, so works on all platforms and it's free to use.
Sequence diagrams seem like the go--to format for displaying data flow in a microservice-type environment, but even though there is a plethora of implementations in various languages and technologies that generate diagrams of this kind, they all lack certain functionalities, number one being the support for threads. Some solutions do provide the "par" fragment, but this is inadequate when message ordering corresponds to cronological ordering. Numbering messages may help, but I find it easier to grasp what is going on visually with multiple activations per lifeline (the best implementation of this I've found to date is the Quick Sequence Diagram Editor [http://sdedit.sourceforge.net/], but that project doesn't seem to be active or maintained).
I've recently tried to find a suitable solution for this on StackOverflow, but I've been rejected under the "Opinionated question" remark (::sigh::), so I could just as well do it here.
Is there a (Java based) sequence diagram generating tool/library that has the following functionalities:
. supports multiple threads and thread referencing in messages (multiple activations per lifeline)
. supports delayed messages (message trasmission and message reception can occur at different times, i.e. sending a message does not imply immediate reception on the other side)
. no custom language/pseudocode as input, but builder-style approach (I use Java to generate a text description of the diagram and then pass it to the library for parsing - I could just call the methods the parser calls and remove the unneccesary middle man)
. highly customizable visual style (PlantUML, the most flexible I've found in this regard, is notoriously bad at styling, mostly due to a lack of a coherent styling paradigm)
If not, how many people would be interested in such a thing? I may start it as an open source project myself...
I'm not familiar with those features, and agree that PlantUML generated diagrams have a distinctive look, but why not contribute to PlantUML instead of starting yet another project of this type? It's written in Java, so it meets that requirement.
This was my intention as well so I tried familiarizing myself with PlantUML code (made a small contribution as a result), but in the end, I came to the conclusion that the overhead of getting to know its ins and outs would be greater than to get a new project to a usable state from scratch. PlantUML is, unfortunately, burdened with years of development choices that make it tough to modify in a way to conform to what I need. Most of these functionalities were (I'm 100% sure for the multiple threads and customization of the visuals), at some point, mentioned in various forum discussions as "possibly under development" by the developer, just to be followed with years of silence on the topic. And if they aren't able to deliver those, I'm not going to be, for sure.
I've been using this for years. Is really good and the best feature is that diagrams don't look like crap by default, which is not the case for most code to diagram tools out there. Looking at your Plant UML.
"Markup for diagram" is great so long as others have a way to edit the markup when you use the diagram in your document.
Blockdiag/Seqdiag has a pretty good RST integration for Sphinx.
Lately I've been using the ZenUML diagram plugin for Confluence which lets you do sequence and other diagrams using Mermaid-JS.
Considering that the author of swimlanes.io seems to have mastered the part where the diagram is encoded into a URL, it feels like making plugins to popular documentation systems is the obvious next step to making this useful for engineering orgs.
For sequence diagrams in text format you can take diagwiz for a spin. There is also an online version of the tool. Disclaimer: It is working, but it's still just an experiment and might change a lot.
Diagrams seem to be on everybody's mind recently ;)
Question: are there any good tools to automatically represent (almost) any code as diagrams?
Use case: I wrote a pretty complex simulation in Python, which is a little hard to explain to my colleagues. I would like to have, e.g., a sequence or a swimlane diagram to help others understand what is going on. I would like this diagram to be automatically generated by other software (IDE extension, plugin, package, etc.).
I like the tool but I hate that you use resources from Google servers and font awesome. That's against German (and I guess European) data protection laws, the DSVGO. That's because you route my traffic (well, I have a blocker, but for other users) without consent to servers which are not needed for your operation.
I never understood why website operators don't just serve their scripts and fonts locally.
Generating quick sequence diagrams helps a lot to articulate ideas. Ever since wfh, I have used these tools a lot of communicate design flow with team mates.
There's PGF/TikZ[1], but from what i've seen, it appears a bit clunky. These days I usually see packages which are basically convenience wrappers living above TikZ for common usecases (e.g. visualizing neural networks in papers)
I mean what's the storage from a technical standpoint? If you're saving every version of every swimlane that anonymous users create, it seems like that would add up in your database.
I just don't see the point. If it only supports one type of diagram (and judging by the name, it seems like it only ever will), why would I use this over PlantUML?
The problem is that you want something that a small team can collaborate on; that allows them to control where it's stored and viewable; that works with baffling NHS bureaucracy; and is very easy to use. You want something that allows actions to be attached and completed. And you might want to allow it to link to other documents. (For example, "we tried change idea 1, and we didn't see any improvement, here's the data").
The other problem is that most software will apply colour vertically to a column, but you probably don't want that. You want something that allows horizontal stripes.
I see that. But without privacy policy, they cannot be held accountable for changes that can be introduced later on.
I checked that there are no backend communication and there are no open websockets. But still kind of scary to use this without a clear Privacy Policy. I love the product by the way :)
it's a noname "product" without even an "about" page. they cannot be held accountable regardless. a privacy policy in this context is 100% meaningless. you are asking too much IMHO.
1. Plant UML: http://www.plantuml.com/plantuml/umla/SoWkIImgAStDuNBCoKnELT...
PlantUML supports many diagram types, and there's a nice VS Code plugin with side by side live preview.
2. https://www.websequencediagrams.com/
Has a hand-drawn style option which is nice:
https://i.imgur.com/lh4jaVL.png