Theory Maker and markdown
Theory Maker is a free and simple web app for making diagrams of theories of change etc. I already wrote about it. Its special feature is that you can also create boxes to group the pieces of your network, for example to mark off different phases, regions or stakeholders.
There are lots of great apps and programs out there for making theories of change, both dedicated like DoView and general like Visio, Powerpoint etc, just as there are many great word processors. But my favourite word processor is just a text editor because I use markdown whenever I can. So Theory Maker is supposed to be the markdown of Theory of Change generators.
The most similar tool out there is Mermaid. Mermaid does a lot more than just network graphs. Theory Maker is optimised for network graphs and nothing else. In fact, it is optimised just for causal graphs which are typically DAGs, i.e. directed and acyclic, although by all means you can throw in a loop or three if you like.
With Mermaid, if you have spaces in the names you have to use quotes or brackets, and you have to write both ends of every arrow, something like this:
"Output 1"->"Outcome" "Output 2"->"Outcome" "Outcome"->"Goal"
I think Theory Maker is just more intuitive. There are four ways to do the same thing, and you can pick whichever method you like depending on what is convenient. If you like to look at proximal results and work backwards, as many project planning methods encourage us to do, the simplest is probably this:
Goal .Outcome ..Output 1 ..Output 2
So, because we are thinking causally, for each element we want to know what contributes to it. The contributing facts are listed below each element, indented by one point.
If you like thinking the other way round, you can use spaces instead of dots. But then you will probably have more repeats.
Output 1 Outcome Goal Output 2 Outcome Goal
As Pearl says, robust little causal schema like “to light the campfire you need a pile of dry flammable material, not too much wind and a flame” are how we understand our world. It is probably an important part of how our brains work and is a successful strategy for AI: One variable is understood as being at least partly determined by a manageable number of other, local variables. If these schema weren’t roughly right enough of the time, if for everything we wanted to change we really had to understand endless myriads of other factors, near and far, we would never be able to function in the world.
(Mermaid has some great features by the way including a live editor which has a link to remember and edit your graph. Example).
Another interesting alternative is mindmapping, with tools like Freeplane. It can be really quick and easy but it isn’t plain text, and mindmaps are optimised for strict hierarchies in which each child has only one parent. Theory Maker doesn’t have any such restriction (and nor does Mermaid).
One of the ideas behind markdown is that even the mark-up for features like bold, paragraph numbering, etc, should be self-evident. So to get bold you just type
**bold**. I have tried to make Theory Maker in the same way, so that if you see this you should be able, with a little thought, to read it.
-Strategic and Operational Goals Goal 1 Goal 2 Goal 3 -Outcomes Outcome X; to=Goal1 Goal2 Outcome Y; to=Goal1 Goal3 -Activities Activity a; to=OutcomeX OutcomeY Activity b; to=OutcomeY Activity c; to=OutcomeY
Or, using aliases:
-Strategic and Operational Goals g1 :: Goal 1 g2 :: Goal 2 g3 :: Goal 3 -Outcomes o1 :: Outcome x; to=g1 g2 o2 :: Outcome y; to=g1 g3 -Activities Activity a; to=o1 o2 Activity b; to=o2 Activity c; to=o2
Plus, it should be easy to type too. Graphivz and Mermaid both use an arrow for the arrows, which looks great:
… but the arrow is a bit of a pain to type, at least on my keyboard.