Hacker News new | past | comments | ask | show | jobs | submit login
Plant UML – Open-source UML Tool (plantuml.com)
181 points by kumarvvr on April 29, 2021 | hide | past | favorite | 46 comments



I have used Plant UML a lot and I love it. Anything that can help me draw less figures is a bonus and the markup language they use is pretty flexible and ergonomic.

However, I have one major gripe with Plant UML. About 3-4 years ago, my local install started showing memorial plaques for people who died in a terrorist attack in Paris [1]. While this attack was undoubtedly a horrible event, I still feel it is deeply unprofessional to include stuff like that in a program, and it makes me lose all trust in the developers. If they had just added a memorial section in the program, it would have been fine. However, for every error generating a diagram, Plant UML would show a popup window with a picture and a text in memory of that person.

This is similar to what the Notepad++ developer(s) did back in 2013-ish where they had a memorial build into a new release of the program. On startup, Notepad++ would write (literally type it out) some message into the default empty document [2].

It might be a bit harsh. But in my mind, if the developers of these programs can be so influenced as to push this onto their unsuspecting users, I feel they have misused my trust. It makes me think: "What are they going to put into it next? Malware? Perhaps watermark the output with a statement?"

Since these events, I have avoided Notepad++ entirely and been reluctant to use Plant UML, but used it out of necessity.

[1] https://github.com/plantuml/plantuml/issues/25 [2] https://notepad-plus-plus.org/downloads/v6.7.4/


While software isn't really the right place for that per se, I can definitely see the temptation. After all, you are providing something absolutely free, and you aren't including ads, tracking people, pestering about payment etc.. all this work has earned you a huge audience, and you want to use it to honor the memory of lives lost. Honoring the dead is pretty universally accepted as good thing.

It's a really big jump to say people who honor the dead with their software are going to insert malware in it next.

Use or don't use whatever you like, it's free and open source, but this seems like a pretty terrible reason to avoid otherwise great software.


PlantUML is a nice tool for small diagrams/teams/projects but it doesn't scale to big projects at all. I'm in an automotive project and we had tried to jump from Enterprise Architect to the puml and the latter one failed very quickly.

We realized it's just impossible to handle in a reasonable way hundreds of diagrams from different teams who have to show/maintain cross-component dependencies independently. Puml isn't designed for that at all. Another limitation of puml we faced: there is no way to control the position and layout of elements on diagrams. With complex diagrams, you'll quickly get a total mess and if you are lucky to manage how to get finalized nice diagram then any tiny element added later will ruin the whole diagram since puml decided to reposition everything.

Just wanted to share our experience. Yep, we are still using it for small generic diagrams to quickly depict some concepts as well as for sequence diagrams but never for documenting complicated component/class relations.


Using PlantUML for UML is akin to using Visio for UML. It is a diagramming tool and can make great diagrams. However, it is not a modelling tool. It can't track relationships between diagram elements and metadata about those elements, other than the metadata that can be extracted from the diagram.

I've used PlantUML on past projects, but almost always in conjunction with a separate program that stored data in a SQLite db and then generated PlantUML on command.

An example of something similar I am working on as a side project is using JQL to query all the issues in JIRA targeting a specific fix version, then generate the graphviz dot notation to create a hierarchical stoplight chart showing issue decomposition, issue id, issue status, and POC for an issue.


Thanks for sharing this. If I may ask, would Ilograph (diagramming tool I made) alleviate the two issues you've raised? It aims to show cross-cutting dependencies via perspectives, and has an interactive layout to make complex perspectives easier to read. It's definitely a "long term" diagram solution, as opposed to quick sketches. Would love to know how close it gets to the mark.

Example: https://app.ilograph.com/demo.ilograph.Ilograph/Request


I've seen you mention it before. At first glance it seems interesting and I definitely agree that having multiple perspectives available to view and explore the model of a complex system is key.

It reminds me of https://structurizr.com/ which builds upon the C4 model for visualizing architecture.

Using these tools successfully is also a question of the goal: are we using them to model and plan up-front or are we visualizing the status quo (for onboarding, change analysis or other purposes). If it's the latter then you need to investigate how to (partly) derive the model from the single source of truth - your code base of applications and infrastructure. Otherwise there is a strong likelyhood of the model diverging from the truth and thus losing its value.


> We realized it's just impossible to handle in a reasonable way hundreds of diagrams

Do you mean you update PlantUML source files by hand in order to follow software changes, instead of generating them from a real model or from a reverse engineering tool?

> there is no way to control the position and layout of elements on diagrams

This is a feature: there is no way to waste time fiddling with diagram layout, and you can tell that to the cheapskates who made you switch from Enterprise Architect to PlantUML.

If you want a "finalized nice diagram", and you should need it infrequently, use a proper vector graphics editor and omit details (e.g. unimportant class members) to reduce churn and editing effort in general.


> Do you mean you update PlantUML source files by hand in order to follow software changes, instead of generating them from a real model or from a reverse engineering tool?

Sorry, I didn't explain it clearly enough. In our project, it's not only about components/classes. We have architectural documentation which describes a high-level architecture of the whole project: services, deployments, interfaces, devices, middlewares, files, virtualized environments, databases, and their relations across different domains and software clusters so it's not possible to generate diagrams for such things.

>> there is no way to control the position and layout of elements on diagrams

> This is a feature: there is no way to waste time fiddling with diagram layout

Yep, I understand but... As I just said, when a project is big, and it has a big architectural document that describes different software clusters, their relations, deployments, and so on, then it's totally unacceptable when all teams on each sprint/release are getting such an important document with brand-new diagrams because of "that feature" since some new architectural piece was added to the diagrams.

> you can tell that to the cheapskates who made you switch from Enterprise Architect to PlantUML.

After all, we didn't make a full switch to puml. We are still using both. There were some problems with the Enterprise Architect so lead architects decided to check how puml will play in that role but they quickly rejected the idea after the evaluation of pros/cons. We are still allowed in our project to use puml to depict high-level architectural parts but I personally gave up after numerous attempts to get nice-looking diagrams.


These submissions/threads have been cropping up a bit lately. But I have yet to seen anyone comment on pikchr, https://pikchr.org/ (NOTE: doesn't have as close of a relation to UML as Plant UML)

After what felt like endless googling it is what I decided to spend some time with, haven't had time to do much yet so can't say how it performs for me but the idea and execution really resonates with me.


I want a balance between being able to make diagrams pretty and how much work I spend on it. PlantUML has much more thorough example documentation. Even though I bump up against corners in the customization I do want, it’s easier for the role it serves (both documentation but also the source kind of misty gets translated into an acceptable diagram without having to overspecify certain things as I saw in some of the source snippets on that page). This is definitely good if I want to spend a lot making something pretty that I can version control. If that were the case though I’d collaborate with a designer to write that in this tool and make the clarity better (but if they wanted to do a traditional SVG diagram in Illustrator using whatever workflow they want, I wouldn’t care either). If it’s not worth a designer’s time, it’s generally not worth it for me to spend hours on a skill that’s not natural for me. So I like a program that makes it easy to make it pretty enough but that I don’t have to think about too much (eg having it embedded in Wikis at work also helps in the learn 1 useful thing and use it multiple places).


pikchr is awesome. A project I did recently was a WASM-compiled pikchr library to generate diagrams directly in the browser [1]. Here's a very early demo of a live editor you can play around with [2].

Not fully-featured yet but what I'd like to eventually do is set it up in a similar way to the mermaidjs editor [3]. They encode the entire diagram in the url. That makes it really easy to link to from markdown documents and has the nice benefit that the diagram is immutable for a given url so you don't need a backend to store anything.

[1]: https://www.npmjs.com/package/pikchr-js

[2]: https://pikchr-editor.insert-mode.dev/

[3]: https://mermaid-js.github.io/mermaid-live-editor


The examples[0] look really good! Thanks for mentioning this.

[0] https://pikchr.org/home/doc/trunk/doc/examples.md


Here you can play with it: https://pikchr.org/home/pikchrshow


Just discovered Plant UML recently, and I've quickly come to love it. Just today I pasted a JSON payload & watched as it generated a diagram from the example. I do find the default theme not terribly attactive, but that can be can be mitigated with a single import, this site has a great collection: https://bschwarz.github.io/puml-themes/


PlantUML is like the markdown of software diagrams. It is amazing what you can do with it.

I recently discovered you can draw a whole Gantt chart just by describing the activities in natural-ish language.

It's kind of amazing though, it has one of the highest ratios of utility to presentation (as in, it works great and it looks horrible) of any tool I know.


Huge fan of the Javascript equivalent, although not as featureful: https://mermaid-js.github.io/mermaid/#/

Gitlab has support for it built-in, and so do many Markdown editors (https://marknoteapp.com/).


Mermaid only supports horizontal and vertical layout, which makes it not capable of drawing complex graphs.


UML only scratches the surface of how useful PlantUML is. I use it a bunch, both as a Confluence plug-in and in VS Code.


I love Plant UML.

I appreciate the C4 diagrams specified in UML for software developers ( https://c4model.com/ )

And all the diagrams that are downloadable ( eg. For Azure : https://github.com/plantuml-stdlib/Azure-PlantUML , AWS : https://github.com/awslabs/aws-icons-for-plantuml , GCP : https://github.com/davidholsgrove/gcp-icons-for-plantuml , ... and so much more)


Having used PlantUML a bit I now see these diagrams everywhere in software documentation. Most don't use the piss-yellow and red default theme but the stick man actor icons is a sure tell it's PlantUML.


I use Plant UML in combination with planter [1] to auto-generate a DB schema visualization during CI runs.

Recently I see a lot general statements on HN like "UML is dead" which I think is not the case. Especially in complex, data-heavy projects it's a great way to visualize how things work -- if kept up-to-date and precise.

[1] https://github.com/achiku/planter


I love Plantuml. This and xmind are my two favorite tools. Has anyone ever heard of a vscode plugin that will render the plantuml scripts into images and embed them into code? I'm thinking of a program (c, c++, java, python... whatever) that has plantuml in a comment. the plugin could render that as an image and show it in place of the comment. then it could provide an "edit" button to view/edit the comment.


not vscode, but i do this with org-mode in emacs-- it's how i draw my sequence diagrams for work!


I think some combo of mdx and kroki should come close...


PlantUML is not a UML tool, it is a tool for creating diagrams that look the same as UML ones.


There are 58 prior HN comments with plantuml.com, mostly in various discussions of diagramming tools, but not only that: https://ampie.app/url-context?url=plantuml.com And a bunch of pages on the same domain have also been mentioned in HN comments.

There was also a thread about Plant UML in 2019 with 48 comments: https://news.ycombinator.com/item?id=21426793


I considered this when looking for a new data modeling tool but the software, and the charts it produced, were so ugly I couldn’t do it.

I notice most programmer/engineer types don’t have this hangup. I’ve always felt the same about IDEs with the (what I call) “millions of tiny buttons” design.

For my data modeling I ended up going with a tool called Lucidchart.


Lucidchart makes good-looking diagrams. But my problem with them has always been their distance from the code. Its always going to be a difficult problem to keep documentation up-to-date with the implementation regardless of what tool you use. I prefer tools that reduce that impedance as much as possible.


The online editor is nice when you're in a hurry. PlantUML can also be hooked up into emacs org mode for inline diagrams. I've just been using the online editor to snag pngs to embed in google docs, then I upload the source diagram text as a separate file in the folder, or paste it in as appendix.


I really like PlantUML for drawing state machines and sequence diagrams, but I never use it to actually draw UML.


These UML diagram tools are always pretty nice, but strangely enough they all seem to omit the collaboration diagram, which I found to be one of the most useful types. Yes, technically you can kind of simulated with Component diagrams, but it's not quite as good.


I use to do my small class diagramm in Microsoft Word.... (yea not very professional, but so simple to do).

Now I have discovered PlantUml. It is nice because you write, and the display is automatically done.

And the display is mostly always perfect.


I prefer simples tools like Word or PlantUml than complex tools. Maybe i'm python developer, simple is better than complex


I've used this before -- it works well and integrates nicely with markdown, which makes it more convenient than using draw.io for plenty of use-cases imo


yeah, see also mdx, and kroki


I used to use this extensively and now no more. Sad.


Why?


plantuml is wonderful but the restricted layout control forces you to maintain small diagrams if you want readibility.

maybe that's a pro?


UML is an obsolete way to design things. But fortunately PlantUML manages much more than just that.


What is the modern way to design (and maintain) things?


Improvised diagrams, design docs and ui mockups.

The problem with UML was it was far too specific. The aim was to just about generate the whole program code using charts which isn't what anyone needed.


> Improvised diagrams, design docs and ui mockups.

Are those supposed to be thrown out after first or second release?

> The aim was to just about generate the whole program code using charts

That wasn't the aim of UML.

Any model (including UML) serves two main purposes: to create system design and to document that design.


Class diagrams, the most used of UML diagram types, are not exactly for system design, they're too low-level, and yes, "Round-trip engineering" that generates code from class diagrams (and class diagrams from code) was advertised as important feature of advanced UML tools.


Converting classes into UML diagrams can be usefull regardless if you classify UML as obsolete or not. It's a nice why to understand how a given class or interface is used throughout.


Always seems to be very popular with a certain type of engineer. I personally prefer to create much better looking diagrams in about 1/10th of the time using draw.io


I think you got your fraction reversed. Writing down the specs in plantuml will be a lot faster and generate much more consistent results at the cost of memorizing the syntax upfront. It is an investment, but if you frequently have diagrams in your docs and multiple people collaborate on them, then it's really worth it.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: