52 comments

[ 0.22 ms ] story [ 115 ms ] thread
Hi hn,

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

Really cool, thanks for sharing! Would you have chosen Etherpad if you had to do it again? (I'm thinking of adding text collaboration to an open-source project I maintain). Did you get requests to support non-Etherpad servers?
> Would you have chosen Etherpad if you had to do it again?

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?

Thanks for the reply.

> 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.

Looks cool!

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.

> It's been almost 3 years since I created PlantUML [1] and got a lot of fun

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.

I vouched for this comment, but it seems you are shadow banned, meaning all your posts don't show, except for people who have showdead=1. You might want to work on your personal insult debate style and then email dang and ask for it to be removed.
How about we all ask HN to stop abusing users with this despicable practice?

Ban people or don’t. Instead, HN deliberately wastes people’s time. There’s no excuse for it.

I don’t understand. What do you mean you created PlantUML?
Pretty sure he meant to say “collabUML”
It was a typo. Fixed now.
The post title says open source but the repo is missing any license file and the readme doesn't specify your license either (although the license file would be better since GitHub's detector doesn't scan the readme for licensing text)
Good catch! I just added an MIT license.

Thanks for reporting.

It's been almost 3 years since I created PlantUML

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...

Thanks for reporting, I posted this close to my midnight, after that, I wasn't able to edit my comment anymore.

I have contacted hn by email to ask for help.

It is nice, that you open source it, instead of throwing it away, but you might want to add, that you seem to have no real plan of maintaining this any further:

https://news.ycombinator.com/item?id=34556346

"with no plans to go back touching js/ts for anything serious"

Or am I missinterpreting things?

I updated the README to reflect the project state.

> "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.

We use plantuml all the time for sequence diagrams, we check the code into git and use the generated images in the documentation, then the readme.md provides detailed doc of our subsystems, plus people can comment on exact lines of code in the plantuml source during pull requests…

So thanks for building this, it’s awesome!

Grady Booch would love this.
I challenge you to get his attention to this tiny project, if successful, I'd invite you a beer/coffee.
It would be easier to fly out to Hawaii where he lives and "bump" into him.
Grady Booch / Rational went overboard with UML. UML is very nice when used in moderation but basing all development on their tools and creating exportable to code designs as they envisioned is total madness.
i know people are upvoting this because it got open sourced but i'm wondering if anyone actually uses UML outside of university classes i attended? if anyone would give his experience i would appreciate it
Sure! Docs-As-Code with PlantUML and in our case Sphinx (AsciiDoctor is just as good, in our case Sphinx-Needs moved the needle) is a nice low effort "persist your architecture ideas in the repo" solution. You can check that every PR has a piece of documentation and design coming with the new feature. We're getting more from being in- to semi-formal and not trying to use UML as a programming language.
I hated I'll with a passion before, but in my actual job it would provide a better pivot point to explain structure and protocols compared to a GitHub issue in plain text. Ironic.
I have absolutely used it for designing before building complex things and documenting complex things after they've been built. At the design phase, I find it's useful to iterate on high-level UML to anticipate the architectural challenges that lay ahead vs iterating on implementation when I've already found myself in the weeds. If you peruse AWS documentation you'll see UML diagrams of all kinds right through it. And you're probably very familiar with sequence diagrams if you do anything network or concurrency related.
Software level design documentation in aerospace make extensive use of UML (my shop even use PlantUML). Sequence diagrams in particular are quite useful.

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.

Yeah, UML overall is a bit overengineered, but sequence diagrams can be incredibly useful.
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.

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.

We're in the same boat with component diagrams, where the layout engine is insufficient. What did you choose to do for alternatives?
I found using groups, colors and direction hints gets mostly around the issues. Enough that the benefits outweigh the downsides of switching to something else (that doesn't get source control, requires separate edit/export steps etc).

   group sys { 
      one -down-> two
   }
> 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.

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 use selective UML concepts to express my designs. My current tool of choice so far is StarUML which also lets me export the designs as nice looking HTML
At first, I read this as "plant-based UML". I was expecting it to be a vegan option.
On a small project I used sequence diagrams to document a custom Api/data flow, so that another team (different company) had a reference for implementing the client to my (bespoke) JSON/REST server.

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.

I have been involved in many teams where we used PlantUML for sequence diagrams, which are specially helpful to explain a complex process.

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.

TL;DR: Not the UML you're taught in school, but check out C4 Model https://c4model.com/

--

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.

I've used plantUML for state/timing/sequence diagrams in the digital logic space
Why not put this thing online, real Collab mode? Just have each session with a different uuid in the URL, so that one can share it with other team... Full private mode could be smth one would need to pay for, to fund hosting costs.

(Real lazy to compile the client each time just to do colab work on UMLs)

If the author agrees and provided the other dependants (the two sites this is built upon) don't mind, I can put a little backend for this. Not too difficult.
Actually, both dependencies are specified:

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).

> Why not put this thing online, real Collab mode? Just have each session with a different uuid in the URL, so that one can share it with other team

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?

Great tool! Would you be open to CollabUML adding PlantUML Font Awesome icons?

You can see the demo PlantUML for "Area diagram demo" that I'm using:

https://github.com/joelparkerhenderson/demo-plantuml

Actually, those icons look very nice, right now, the app uses the public plantuml server, which means that I can't control any settings it runs with.
I still don't understand why not everyone uses diagrams as code.

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.

love the tool! Came across plantuml and presented it to my colleagues 1 year ago, it got all the attention and it's the defacto tool in my current workplace.