Window Manager Bloodlines and Graphviz

There are a LOT of Window Managers for Unix. I should know: I maintain something that's meant to approximate the definitive guide to them, and I've been maintaining it for a long time (over a decade). Something that's come to fascinate me is the ideas and paradigms that can be traced through window managers and decades, and to this end I've also been maintaining what I call the "Bloodlines" graph of the Window Managers. This shows the history of ideas and code being transferred from one window manager to another. Unfortunately, as the ecosystem has grown, the graph I've created has become large and quite unruly.

Initially when I came up with the idea of drawing an image/graph of the blood lines of window managers, I concluded that there must be an open source program that would support such a thing. And of course there is: it's called Graphviz, and it allows you to create a text-based description of a connected graph, and it can create multiple graphics types for you from the descriptive file.

The best current introductory piece I see online is this one: Drawing Graphs using Dot and Graphviz. Given that this looks better than anything I'd be likely to write, I'll suggest you go there for an intro to the language.

I've just significantly pruned the graph, and the current output from dot ("dot" being the primary graph generating binary in the Graphviz package) looks like this. One of the interesting things is that Graphviz provides different interpreters, and the same graph comes out radically differently (some material that didn't make sense in this format, like the dates, has been removed) when processed with neato.

I wanted to clump WMs by certain affiliations, like "keyboard-friendly," or languages, or "used by GNOME at some point," etc. But when last I checked (admittedly a while ago) it was impossible to have items in both a rankset (which is what forces WMs to align with their year of origin in the dot file) and a cluster. <sigh>