Collaborative Graph Editing with GitGraph
Anyone interested in graph editing really needs to watch this series of posts on the gremlin-users list.
Joshua Shinavier started the thread with a post that read in part:
I would like to draw attention to a new utility for Blueprints which was motivated as follows. Lately, I have been faced with the problem of trying to synchronize graph-y data between a mobile phone and a desktop application. This is hard not only because the data model I had in mind, RDF, is complicated, but also by some basic requirements (on top of just getting the data to look the same on both devices):
1) it should be possible to load only a portion of the data on the phone, and to push and pull changes to that portion without corrupting the overall graph
2) it should be easy to revert changes, and it would be nice to be able to branch
3) collaborators should be able to contribute changes to the graph, as well
This morning, it occurred to me that we could have these features in Blueprints if we just serialize graphs in a way which plays well with Git. I then spent all day coding, and the result is GitGraph, a persistent Graph implementation (currently layered on top of TinkerGraph) which stores its data in a hierarchy of canonically
ordered, diff-friendly plain text files. You can check a GitGraph directory into GitHub, fork, edit and merge it just as you would a piece of software. Also cool:
1) you can load subdirectories of a GitGraph as standalone graphs, and edit them independently of the rest of the graph
2) placing two or more GitGraphs in the same directory creates a super-GitGraph which you can load as one graph. You can then create edges which span the two graphs and create new top-level vertices. You can go back to a view of the individual graphs at any time.
3) no additional API, apart from the GitGraph constructor
Not hard to see why that provoked a wave of enthusiastic posts.