Show HN: PlantUML based collaborative UML editor is now open source
github.com
github.com
It's been almost 3 years since I created CollabUML [1] and got a lot of fun seeing what the hn community was doing with it, since then, I have been thinking many times on making the repository public. Better late than never, right?
It is worth sharing how this started, I was taking interviews including a system-design phase, I used to launch my IDE's to render PlantUML diagrams while I thought that it would be more cool to just share a url instead of sharing my screen.
I made a plan and took the weekend to build it, while I have invested minimal time/effort in this, this side-project is the one that has got the most attention so far.
Anyway, play with it [2] and let's see what we get.
Thanks hn!
- [1]: https://news.ycombinator.com/item?id=22955971
- [2]: https://collabuml.com
Hard question, it really depends on my goal, for building a quick prototype, I'd certainly use Etherpad again because it is trivial to launch it, and, more or less, it has worked reliably for the last years. On the other hand, collaborative editors have lots of progress with CRDTs now, it is worth re-evaluating options.
I'd bet that the key would be whether Etherpad can be easily customized to fit your goal.
Of course, as a dev, I was fantasizing about potentially writing my own collaborative editor someday if there was a way to make the project financially viable , for sure, this is the least important thing to make it get there.
> Did you get requests to support non-Etherpad servers?
Not really, I think I have got less than 5 emails about this project so far.
> I'm thinking of adding text collaboration to an open-source project I maintain
If you don't mind sharing, what's that project about?
> If you don't mind sharing, what's that project about?
I maintain another text-to-diagram language, and we host a playground (https://play.d2lang.com). I want to let people make collaborative rooms on there.
Integrating collaboration in the simple way I did it should be a piece of cake, feel free to contact me privately if you need any help running etherpad, it is mostly tweaking a few settings and putting nginx on front of it.
I assume you meant to write that you created collabUML 3 years ago, and not accidentally take credit for creating PlantUML itself, which is 14 years old and was created by Arnaud Roques in 2009.
Ban people or don’t. Instead, HN deliberately wastes people’s time. There’s no excuse for it.
Thanks for reporting.
An unfortunate typo, PlantUML is a 99.9% Java project residing here [1]. The source is worth reading as it has few external dependencies and a lot of functionality is implemented from scratch, e.g. a JSON parser [2].
[1] https://github.com/plantuml/plantuml
[2] https://github.com/plantuml/plantuml/tree/master/src/net/sou...
I have contacted hn by email to ask for help.
https://news.ycombinator.com/item?id=34556346
"with no plans to go back touching js/ts for anything serious"
Or am I missinterpreting things?
> "with no plans to go back touching js/ts for anything serious" > Or am I missinterpreting things?
If for any reason this project became something I'm focused on, I'd just migrate it to Scala.js which is what I feel more comfortable with.
So thanks for building this, it’s awesome!
People often find that level of documentation a bit redundant if you have access to the code, but if you're pressed for time and the diagrams actually describe the crucial parts it can be a huge timesaver when you have to fix something in a 10 year old component.
I've had less success with component diagrams to represent our systems because the layout engine in PlantUML is (or used to be) quite limited. This resulted in diagrams that didn't communicate the system as well as if I manually drew boxes and lines.
There is a fantastic plugin for Jetbrains IDEs that generates the diagrams in real time which is great for fast feedback, and can be used for driving out diagrams while presenting video calls.
Overall, my conclusion is that you can pick the parts that are useful to you and the people you communicate ideas with.
group sys {
one -down-> two
}That's exactly how I use it!
> We make extensive use of sequence diagrams using PlantUML at my work. We don't rigorously adhere to the correct UML arrow types and so on, instead preferring it as a fast way to clearly communicate data flow over time. The fact that it's in a text format means it can be conveniently edited and stored in source control.
Similar situation, Github now supports rendering Mermaid (https://github.blog/2022-02-14-include-diagrams-markdown-fil...) but I'm yet to give it a try.
I frequently draw simplified architecture and data/entity diagrams that tend to be "mostly" UML.
Generally on a whiteboard while discussing design/architecture - rarely do they end up as permanent artifacts/documentation.
To me, I have saw considerable performance improvements when sharing sequence diagrams to devs that are not very familiar with a project or its domain.
Unfortunately, sometimes it is complicated to understand when a diagram is worth it because while an experienced dev can find something obvious, an less experienced one can struggle on that for a while.
EDIT: I forgot mentioning that these diagrams were super helpful when presenting solutions to technical customers/partners, instead of preparing a PoC, we could just create the diagrams to explain the proposal flows.
--
Pure UML is pretty rare in my experience, and most likely used only in very strict environment that don't change often (security, airplanes,...).
UML concepts and diagrams however are extremely useful to collaborate on complex systems or flows. However people don't tend to make good diagrams, unless they're very restrictive. I find that sequence diagrams are usually the ones with the best quality out there because you have to adhere to a strict (and rather simple) représentation.
For things that are not flows-like I would recommend using the C4 Model https://c4model.com/ :
- It provides a simple and constrained way to describe systems and their interactions.
- The first two levels are the most useful IMO as they provide a lot of information, while being rather static over time. Level 3 and 4 typically require frequent changes as your code evolves.
The implications of having an easy tool to document and express ideas in a visual way and have it all up to date are enormous.
You can see the demo PlantUML for "Area diagram demo" that I'm using:
(Real lazy to compile the client each time just to do colab work on UMLs)
1. https://github.com/ether/etherpad-lite 2. https://plantuml.com/ -> go to the bottom, there is an editor that renders the diagram, collabuml uses such a public api.
I'm happy to provide details about running etherpad if necessary.
> I can put a little backend for this. Not too difficult.
Etherpad is the collaborative backend, plantuml is the uml renderer (there is a way to run a server with this).
I'm not sure how that would change much from its current behavior, you can put a random value at the url and work with it, actually, we have used the tool in my team several times.
> Full private mode could be smth one would need to pay for, to fund hosting costs
I used to have an text at the bottom of the page mentioning this, my idea was to get a couple of customers before investing considerable time in developing the tool, there is a lot that could be done!
> (Real lazy to compile the client each time just to do colab work on UMLs)
Do you mean compiling the text into the diagram?
See for example, https://www.informit.com/articles/article.aspx?p=1405569