Theory Maker is a free, open-source project by (Steve Powell). The code for Theory Maker is here and for the web interface is here if you want it. It is under rapid development and run on a shoestring so please don't rely on it being there next week. I plan to keep it running for years, but who knows.
I also restart the server every day or so as I update the code, so make sure you save a copy of your text or save your diagram as a permanent link, so you don't lose your work.
I don't plan ever to charge for Theory Maker or to make money from it directly. It is a project for airing some ideas I have about Theories of Change to accompany a book I am writing.
Many people have helped me in developing the app, not limited to: Anamaria Golemac Powell, Esad Bratović, Simone Ginsburg, Randall Puljek-Shank, many colleagues on LinkedIn, …
Do us a favour and tweet about Theory Maker!
“Theories of change: great idea, but fiddly to draw and revise.”
“Try Theory Maker, the quick, free web app.”
Theory Maker is a free web app for making any kind of causal diagram, i.e. a diagram which uses arrows to say what contributes to what.
You make the diagrams just by typing the names of the elements (called
variables) in a structured way into a (resizeable) window, and you get a live diagram as output which reflects what you type.
In particular, it is optimised for making theories of change, logframes, etc. - special kinds of pragmatic causal theory which are particularly popular at the moment in the world of monitoring and evaluation (M&E).
Theory Maker is most often used by M&E staff for quickly sketching out project theories and evaluation plans. But scientists, especially social scientists, and policy makers use it too.
Theory Maker is experimental, open-source, incomplete and in rapid development. Please don't rely on it for your urgent project proposal. But as you can immediately download any diagrams you make, you don't have much to lose, so go ahead and try it out. However, the rules which turn the text into diagrams may yet change from time to time, so a text which works now might produce a slightly different diagram in a month's time.
Please tweet me me your comments, problems and suggestions.
Plus, Theory Maker is based on a theory of Theories of Change. So when you diagram your theory using Theory Maker, the examples help you to make a real theory, expressed using variables and rules to link them up, not just a nice picture. I have just started to set out some of this theory in the examples provided here. There is a lot more to come.
Theory Maker tries to make it easy to make a diagram using only text typed according to simple rules. It is most useful for quick prototyping, discussions and presentations, not for all the details of project plans.
There are plenty of toolkits for making various kinds of network graphs and UML diagrams. Some are offline, some are online, for example plantuml. But Theory Maker is optimised for, as the name says, theories of change, logframes, etc.
One special Theory Maker feature is that you can also create boxes to group the variables of your diagram, for example to mark off different phases, regions or stakeholders. You can also nest the boxes inside one another, like Russian dolls. And you can show and hide the boxes with a click. This is particularly useful in the field of project monitoring and evaluation, in which we often want to group variables together to show non-causal groupings e.g. project phase, geographical distribution etc. Many project templates like the Logical Framework Approach don't have a standard way to group variables, which often tempts users to use arrows to link them instead, implying a causal link where there isn't one.
Easy to add cross links in mainly hierarchical theories, e.g. from one sub-Outcome to more than one Outcome - Recognises and makes auto links for standard decimal naming conventions beginning with a number. Paste in text with this kind of numbering to automatically create a hierarchical plan, e.g.
You can create aliases for your variables to save tiresome retyping
Add notes, “calendar bars” and many other bells and whistles
Based on a theory of theories of change.
Lots of live templates and suggestions for your theory of change, ready for you to edit (don't worry, you aren't editing the originals).
Checkboxes to include/exclude boxes and their variables
You can include other diagrams in your main diagram, and display or hide them with one click.
Each new diagram gets a unique permanent link which you can bookmark to return to later or send to a friend. Anyone can save changes to this link. There is also an original link which no-one can change.
Theory Maker automatically breaks up long names which have full stops (“.”) - The text after the full stops gets put into smaller boxes.
Add assumptions as labels to arrows just by typing
(Assumption: my assumption) at the head of an arrow.
It doesn't give you much control over the actual layout (like whether something appears at the top or bottom). This tool tries to keep the layout simple, but that doesn't necessarily mean things are where you expect them to be. Don't bother trying to get the nodes and boxes to move about: If you want to tweak a diagram further, you can download the .svg version of it and manipulate it further in Inkscape, Libreoffice Draw or Illustrator.
Sorry but you can't use non-Latin characters.
There is no registration or log-in. You just type text. You can type a title for your diagram and click to save a version and bookmark the link. If you don't, don't forget to copy and paste (somewhere safe) the text you typed, because it won't be there next time you visit the site.
Produce modified link if attempt is made to autosave results in overwrite. This is about line 410 in app.R but does not work.
Sometimes with classic syntax, the last of double properties are applied to whole diagram. Note this bug exists also with ;outlinecolour=red; but it doesn't exist with easy shortcode syntax so maybe won't fix.
In Ls Ps g Hi I;arrowdirection=both;arrowwidth=7
Double or more dots in label cause problems with dot syntax so are deleted.
Q: How can I use the diagram in a document? A: 1) Select the format you want, click the download button, save the diagram and paste into your document. SVG, PDF and Word (these are .emf files, best for Microsoft Office documents) will provide better quality than .png - but there can be some problems with different formats in different operating systems. 2) Right-click on the diagram to copy or save it - but it will be in .svg format, which you can paste into some document types (like Libreoffice) but not others (Microsoft office).
Q: What is the difference between QuickToc and Theory Maker? A: None. Theory Maker is the new name.
Q: I typed a date:
21.12.1961 at the start of a line and now the diagram looks funny. A: Theory Maker thought you were using decimal notation. Add some letters at the start of the line, e.g.
date: 21.12. 1961.
Q: Help, I made a mistake typing something and got lost! A: trying undoing your changes: Press control-z one or more times on Windows or Linux.
Q: Why is my arrow label or style not appearing? A: Whichever method you use to define the arrows, you have to define them next to the variable at the beginning of the arrow, not the end.
Q: How can I split a line? A: Use
/// like this:
first line blah///second line blah
Q: How can I end one box without starting another? A: Just put a line with the same number of
-s as the box you want to end, and no other text.
Q: What does
download CSV mean? A: Instead of a picture, you can download an Excel-compatible table of all your variables.
Q: How can I get a better-quality download? A: Instead of PNG, select SVG or PDF.
Q: What if I want to work on different diagrams at the same time? A: Just open Theory Maker in different browser windows.
Q: I want control over layout like lining variables up or controlling the order of the variables. A: You can.
Q: I want to make my diagram super fancy and fit our corporate template. A: If you want to tweak a diagram further, you can download the .svg version of it and manipulate it further in a program like Inkscape, Libreoffice Draw or Illustrator.
At some point in the future this page will tell the full story on how to tweak the appearance of your boxes, variables and lines. It is still incomplete, sorry!
help button above the text box and the examples in the Gallery are more up to date than this page.
-Box with colours; boxcolor=blue3; boxfont=Georgia Variable 1; outlinecolor=orange5 Variable 2; edgelabel=My label
There is a whole range of really obscure colour names you can use (like
burlywood, really?). Most common names like
yellow work, but you can get a range of attractive shades from light to dark by adding a number from 1 to 9 after any of these names: blue, orange, red, grey (or gray), green, purple. Oh, and
colour is the same as
grey is the same as
a; colour=orange3; outlinecolour=blue3 b; colour=orange6; outlinecolour=blue6
Uses the rather tasty Brewer colour schemes.
At the moment, you can only set any font name available on your computer which consists of just one word. On my computer I have these and more:
You can change:
There is one more secret option: if you set
; style=invisible, your variable disappears!
You can change:
invisible). At the moment,
dottedboxes are automatically rounded and
dashedboxes are automatically squared off.
Note that boxes are just groupings of variables, so if you don't have any variables inside a box, your box won't show.
In Theory Maker, arrows (lines between variables, also called “edges”) are created implicitly when you create variables. You change the appearance of an arrow on the line corresponding to the beginning of the arrow, i.e. the opposite end to where the arrowhead usually appears.
Changing edges created by using spaces
a b; edgelabel=my label; edgestyle=dotted
Changing edges created by using dots
b; edgelabel=my label; edgestyle=dotted .a
Changing edges created by using decimal notation
a a.1::b; edgelabel=my label; edgestyle=dotted
Changing edges created by using
a b; to=a; edgelabel=my label; edgestyle=dotted
All these four specifications create this same image:
You can change:
; edgelabel=My edge label
; arrowwidth=4(any number from 0 upwards. .5 is really thin, 40 is ridiculously thick)
invismakes the whole edge disappear including any label, whereas
invisiblemakes just the line disappear)
none- use this to change the arrowheads)
w- use this to attach the arrow at the north, south east or west border of the target variable)