little tool for building Wardley maps
README.md

wardley.love: rudimentary tool for creating Wardley Maps

So far it's just a graph drawing tool atop a background drawing of a Wardley Map template. It doesn't even enforce that the graph stays within the bounds of the template.

This repo is an example of a Freewheeling App, designed above all to be easy to run, easy to modify and easy to share.

Its immediate upstream is snap.love, a graph-drawing tool. Unlike Graphviz and PlantUML, this tool is for small graphs where you want complete control over layout. Unlike PowerPoint or draw.io, this tool results generates text files that are more amenable to version control. The catch: it's a lot more limited than all these tools; all you can do so far is draw rectangles and edges between them.

drawing

Getting started

Install LÖVE. It's just a 5MB download, open-source and extremely well-behaved. I'll assume below that you can invoke it using the love command, but that might vary depending on your OS.

Run this app from the terminal, passing its directory to LÖVE.

You'll see a single box on screen. Drag the surface or press arrow keys to pan around. Try dragging the border of the box. You'll see an edge stick out. Release the mouse button, and a new box (node) will pop out at the other end of the edge. Try dragging the top-left bar for each box. They move relative to each other. Try typing inside. The text wraps within and the box grows taller to accomodate it. Try dragging the parallel lines to the right of a box. The width of the box changes.

Try quitting and restarting. Your changes will still be present. By default, snap.love writes to a file called graph in a directory relative to this app. To switch to a different file, drop it on the snap.love window. You can also pass in a filename when starting the app from the terminal.

Hacking

To make changes to this app without restarting the app each time, download the driver app. Example session:

making changes without restarting the app

Some reference documentation on how to create your own apps.

To publish your changes:

  • delete all files with a numeric prefix from the repo, and then
  • move all files with a numeric prefix from the save directory to the repo.

Keyboard shortcuts

While editing within a node:

  • ctrl+f to find patterns
  • ctrl+c to copy, ctrl+x to cut, ctrl+v to paste
  • ctrl+z to undo, ctrl+y to redo
  • ctrl+= to zoom in, ctrl+- to zoom out, ctrl+0 to reset zoom
  • alt+right/alt+left to jump to the next/previous word, respectively
  • mouse drag or shift + movement to select text, ctrl+a to select all

When cursor is not in an editor:

  • arrow keys pan the surface
  • shift+arrow keys pan faster
    • pagedown and pageup are aliases for shift+down and shift+up respectively

Exclusively tested so far with a US keyboard layout. If you use a different layout, please let me know if things worked, or if you found anything amiss: http://akkartik.name/contact

Known issues

  • Both freewheeling apps and the driver for them currently benefit from being launched in terminal windows rather than by being clicked on in a desktop OS. See the driver app for details.

  • No scrollbars yet. That stuff is hard.

Mirrors and Forks

This repo is a fork of lines.love, an editor for plain text where you can also seamlessly insert line drawings. Its immediate upstream is snap.love, a graph-drawing app. Updates to it can be downloaded from:

  • https://git.sr.ht/~akkartik/wardley.love
  • https://nest.pijul.com/akkartik/wardley.love (using the Pijul version control system)

Further forks are encouraged. If you show me your fork, I'll link to it here.

Feedback

Most appreciated.

=======<<<<<<<