damonsk / onlinewardleymaps

OnlineWardleyMaps.com - Draw Wardley Maps in seconds using this free online tool
https://onlinewardleymaps.com/
MIT License
247 stars 60 forks source link

'Include' or 'require' style statements - is this supported or planned? #99

Open mrchrisadams opened 3 years ago

mrchrisadams commented 3 years ago

Hi there.

I'm enjoying using online wardley maps, and in particular, I love that there's now a mymap.wmap file format (I've been referring to them as mapfiles, as I haven't found any existing name for them yet) - thank you for making it!

Is there any support, or plan to allow requiring a mapfile, do you can extend an existing map with further markup?

My use case is having an existing map, which represents the state of things as they are, but wanting being able to create maps derived from this main map, to illustrate changes, propose plans, or draw attention to specific areas.

I think this would address one of the biggest problems I see with maps right now, in that there's no easy way to control the level of detail or abstraction on a map without making an entirely new map, and over time, they end up being a real pain to manage.

Some examples where importing maps would have been really helpful

Here's an example of me using maps to illustrate the mapping out the value chain for a digital product, then showing where you'd focus efforts to make it more environmentally sustainable:

https://www.thegreenwebfoundation.org/news/plotting-a-path-to-a-greener-web-with-wardley-mapping/

And here's an example of using maps in sequence to explain why you might choose to spend 12.6 billion buying of whatsapp if you were facebook:

https://awmug.wordpress.com/2018/03/18/why-i-think-you-would-have-bought-whatsapp-if-you-were-facebook-mapped/

And finally here's another example of some more analysis on the consequences of microsoft buying github, through the lens of ILC: https://awmug.wordpress.com/2018/10/02/2018-06-05-mapping-microsoft-and-github/

In all these cases, I'm using a base map, then end up repeatedly copying slides to derive new versions that map to explain certain strategies, draw attention to certain areas and so on.

This problem seems to persist even when I look at other text based ways of mapping, like the Mapscript IDE, too.

Possible ways to represent imports from other maps:

There is already a convention for cloning a map, and what I'm proposing isn't THAT different from when we point a browser at the address below:

https://onlinewardleymaps.com/#clone:FlQbJ5WUhlHbKUugD6

Perhaps some syntax inspired by deno or go's import syntax, would work. Both accept fully qualified urls for example, and Deno's in particular is a nice mix being able to import from a FQD, and then being able to name the thing you're importing:

# deno example
import { myHelpfulMap } from "https://onlinewardleymaps.com/#clone:FlQbJ5WUhlHbKUugD6"

Another option might be something more like PlantUML's syntax where they support imports like so, for libraries:

!includeurl https://raw.githubusercontent.com/RicardoNiepel/C4-PlantUML/master/C4_Component.puml

The syntax already refers to the idea of submaps, so it doesn't seem like a huge conceptual leap:

submap Website [0.83, 0.50] url(submapUrl)
url submapUrl [https://onlinewardleymaps.com/#clone:qu4VDDQryoZEnuw0ZZ]

While I'm familiar with javascript, I'm not so experienced with React, but I've been able to get the environment running locally, so if you can point me to:

  1. where the code exists for fetching a map with the current clone syntax
  2. where keywords are defined for the parser

… then I'd be happy to have a stab at it, as I am a big fan of the project.

Anyway, hope that helps.

arifrifai commented 3 years ago

As you mention PlantUML. I think the "embed" feature to any web page like PlantUML will be useful. Is it already implemented?

bemosior commented 3 years ago

Relationships between maps (alternative-to... derived-from... based-on...) could be helpful. I wonder if there's an easy way to at least link to maps in comments or annotations in the meantime?

Preskton commented 10 months ago

I might try to take a stab at this - totally appreciate the base user story and need for this type of feature.

Initial thoughts: