Integration of PlantUML

Hello
I like to request to integrate PlantUML initially “only” a text based UML syntax. It is very matured and supports a wide range of Diagrams. The cool fact is that it is all text based. So easy to port, simple to store with code (e.g. in git) and easy to maintain.

It is already in almost all known wikis, IDEs and editors suppored:

You will find a lot of cool features on the PlantUML webside. Here a sequence diagram as example, just click through the topbar on the linked webside to see more examples.
grafik

Here some more no UML examples

What do you think? I’d love to see that also in Joplin. Currently I use it with many documents since I can easily check in versions and update across so many systems.

Cheers
Michael

8 Likes

I would like to second this proposal. mermaid is supported in Joplin, but it doesn’t have use case diagram.
Personally, the activity diagram syntax of PlantUML also feels more friendly than flowchart syntax in mermaid.

1 Like

One problem is that PlantUML is written en Java, and based on Graphviz.
Integrating both might be very heavy (the JRE isn’t light!) and not in the native language of Joplin, unlike Mermaid.

I didn’t know Joplin supported the latter. Tried code fences with mermaid type, as a wild guess, it works! Wow…

1 Like

As noted above we should expect PlantUML's implementation approach to be a limiting factor when supporting it from Joplin.

Either a PlantUML server needs to be installed locally or you need to send information to a remote server to be able to render the diagram. A local PlantUML server will significantly increase the size of the Joplin install and is unlikely to be viable on the mobile clients. Sending information to a remote server raises privacy concerns as well as making internet connectivity mandatory for rendering notes including PlantUML. So neither approach seems a good fit for Joplin.

The current Mermaid support might not perfectly suit all your preferences but it is a good fit for Joplin. I personally rely upon Joplin's cross platform support (mobile and desktop) and being able to use Mermaid diagrams on my mobile devices has proved quite useful. Not being able to render some content on some platforms would seem a slippery slope to head down.

Hello @DawMatt
I understand you reasons. This limitation was unclear to me. With these facts I agree that the mermaid support suits better.
Thanks for the update
Michael

Hi,
my company uses plantuml in their asciidoc documentation (as do many others AFAIK).
How about adding support for plantuml only for external plantumb servers? This would give people 2 options:

  • Using the public one at http://www.plantuml.com/plantuml/ (not great for confidential information but still fine for many use cases)

  • Installing a plantuml server locally or in the local network (it's not hard - there are preconfigured bundles and docker containers).

I would absolutely love it as I'd be able to copy&paste the diagrams between Joplin and asciidoc documentation.

I think you didn't read the previous comments:

One problem is that PlantUML is written en Java, and based on Graphviz.
Integrating both might be very heavy (the JRE isn’t light!) and not in the native language of Joplin, unlike Mermaid.

Either a PlantUML server needs to be installed locally or you need to send information to a remote server to be able to render the diagram. A local PlantUML server will significantly increase the size of the Joplin install and is unlikely to be viable on the mobile clients. Sending information to a remote server raises privacy concerns as well as making internet connectivity mandatory for rendering notes including PlantUML. So neither approach seems a good fit for Joplin.

So PlantUML won't happen in Joplin.

1 Like

You can probably add the integration using a plugin. Here's an example of a renderer plugin and the accompanying docs.

If you find that the Joplin renderer plugin system isn't up to task, feel free to post here with what's missing and what you would need to get it working. The Joplin plugin system is still new so there is room for improvement, although I think it's good enough for you as it is.

1 Like

Too bad. Maybe I'll have a go at writing a plugin as @CalebJohn suggested. The rendering API should be simple enough. Not sure I'm skilled enough in javascript though.

I have just installed the plantUML plugin, but I cannot make it work. I have just tested the example:

@startuml
Alice -> Bob: test
@enduml

But nothing gets rendered; what am I missing?

Thanks

Did you include the 3 leading and trailing backticks ?

Instead of

@startuml
Alice -> Bob: test
@enduml

You need: (remove the * I added)

*```plantuml
@startuml
Alice -> Bob: test
@enduml
*```

You are right, I forgot the ```plantuml
Thanks

Cool, happy you got it working, this is a great feature!

I'd missed that plugin - and plantUML is a product that I dearly love. Thanks for mentioning it.

Is the ditaa part of plantuml implemented?
Or maybe I should ask which parts of plantuml is implemented?

So somebody have spend sometime implementing it

1 Like