Why? Why-oh-why did you write Rhizom?
(a.k.a: the story behind Rhizom)
I'm polyamorous, and I currently have more than one romantic relationship. I live with 3 other polyamorous people in a big flat in Paris (well, big for Paris...), and they also have more than one romantic relationship. Then there are the non-romantic relationships, that are also important. For some they are just as important as the romantic ones, if not more. Then there are our relationship's relationships, the former relationships, etc...
This network of relationships can sometimes evolve faster than I can wrap my brain and my flaky memory around, and we run into actual problems, like who we should invite at parties, who we can expect to spend a night in our flat and see half-awake in the morning, etc.
In the first season of the TV series "The L Word", a chart mapping the relationships of the character Alice has been a central motif, growing to take over an entire wall. This is part of the solution, but it has drawbacks: it takes space, it's hard to update, and it's visible for everyone to see in the room. In this century, we can do better.
So, I started writing something that could generate a graph of people's names, with different link colors for different types of relationships. I used a tool that I know and that is pretty famous: Graphviz. You describe the relationships in a file, and it processes it to create a image or a PDF. The image and the PDF can then be put on a shared Dropbox folder. This was good, but also pretty strict on the syntax, which means I had to do all updates myself. Of course, my flatmates didn't come to me to report changes in their relationships, so the graph quickly went out of date. The graphic possibilities offered by GraphViz were also rather limited, and when the generated graph looked weird (sometimes there were crossed links when there was an obvious place for them on the side), there was no way to re-position it.
So I thought I should make something better. We needed it to be interactive to re-position the links as we see fit, and we also needed it to be viewable from any computer, so using web technologies was a logical choice. Plus, as they say, "when all you have is a hammer, every problem starts looking like a nail", right?
I looked for suitables libraries and technologies, and settled on Flask and D3.js, since I'm using them for my day job (I try to use personal software projects to broaden my knowledge of something I can re-use at work). I wrote something that could display our relationship network over the 2014 end-of-year holidays, and hosted it on our home server in the living-room. This way, the information is not stored outside our flat. I'm using Mozilla Persona to manage authentication, so I don't have to do it, and people don't have to create yet another account on yet another web service.
A few months later, it became obvious that me and some of my flatmates had disagreements on how the graph should be managed, and especially when and if we should remove people from the graph. As good and powerful as D3.js is, keeping everyone on the graph would just make it huge and unclear, and I like my tools to be clear and well designed. My flatmates however, did not like the idea of removing someone they care about from what could look like a community just because they stopped being in a relationship with them. Both point of views are valid, but can't coexist on the same graph. So I re-engineered the application to be able to manage multiple graphs, each one with its set of people, links, properties and view/edit/admin permissions. I also added a way to create different types of links with different colors.
My flatmates could create their own graph, and we could keep the current and up-to-date graph as clear as possible. My flatmates then proceeded on to create many other graphs with very different meanings, for example a "gossip" graph with people who want to date other people (or who look like they do
Those changes also meant that anybody could create their own graph on the application, without being able to see our graphs, and without impacting other people. As a result, I could just give the address to our friends and let them use the tool. In summer 2015, we found out that we had a common friend with the Catalan polyamorous community (well, we had several common links actually, without knowing it). Our "common link" is part of an activism project for the promotion of non-monogamies in the Catalan language called Amors Plurals. He liked the tool, and offered to translate it to Catalan. Boom, Rhizom went international.
So that's where Rhizom is today. I expect it to grow a lot as soon as I talk about it to more people. That's the power of relationship networks, you know...