Page MenuHomePhabricator

Support diagrams on Phabricator and mediawiki.org
Open, LowestPublic

Description

Software diagrams (such as class diagrams, sequence diagrams, state machines etc.) are a great way of conveying architecture at a highly abstract level, but they are a chore to create so we don't use them much. There are various easy-to-use diagram generators / editors but even then uploading images, sharing sources etc. is way too much effort.

mediawiki.org and Phabricator should make use of some software to generate diagrams straight from wikitext in an easy-to-create, easy-to-edit way so they get used a little more in our projects. Some candidates:

For Phabricator, this would have to be a Remarkup extension maintained by us (upstream has removed dot support due to security concerns and is not interested in other diagram languages - T9408, T12285).

Event Timeline

Tgr created this task.Dec 26 2017, 3:59 AM
Restricted Application added a subscriber: Aklapper. · View Herald TranscriptDec 26 2017, 3:59 AM
Aklapper triaged this task as Lowest priority.Dec 26 2017, 8:19 AM
Harej added a subscriber: Harej.Jan 29 2018, 8:10 PM

If we're talking about something used by both MediaWiki and Phabricator, it sounds like what this calls for is a service with accompanying MediaWiki and Phabricator extensions to interface with the service.

Discourse integration would also be nice, so all our technical spaces can use the same diagram markup. Discourse has plugins for Mermaid and PlantUML although neither has much commit activity.

If we're talking about something used by both MediaWiki and Phabricator, it sounds like what this calls for is a service with accompanying MediaWiki and Phabricator extensions to interface with the service.

PlantUML works like that, there is a server component that you can host locally. Mermaid runs in the browser (which means users with JS disabled wouldn't see the graphs, although I'm sure it's not too hard to run it as a Node service). GraphViz has plenty web service wrappers and even a full-JS implementation.