Don Marti

Sat 29 Mar 2014 07:39:33 AM PDT

The underground collaboration system we (mostly) already have?

(Update 17 May 2014: The Gitchain project is building a decentralized Git network using a DHT for objects and a Namecoin-like blockchain for refs.)

Underground publishing is nice, but what if you want to run something like an underground newspaper with an editing process? Or an underground wiki? Or an underground software or design project?

It seems to me that the tools to do it are already coming into being, and most of them have corporate uses, which means that most of the work to implement this is being done on the clock.

You can start your underground collaboration system with Git, but in order to actually organize on work you need an issue tracker, something like Bugs Everywhere. Fortunately you can use git as the backend for miscellaneous collaboration applications using databranches, so you can have just Git as the only data store. No separate database needed for the meta-info such as status, owner, deadline, comments.

The system doesn't need all of the stuff in How Git Could Grow into an Enterprise SCM System, but it would be nice to have multi-blob files, bup style, and essential to have some kind of network object store. Tahoe-LAFS? Or just run a bunch of parts of enterprise-ish software stacks that will work as DHT nodes, as Tor hidden services? Swift? You could have a variety of network object stores feeding the same projects, since they're all the same to Git.

(A first step in adding network object stores to Git would just be a tool that walks through a repository and inserts Git objects into the DHT, or gets objects from the DHT to fill in the gaps. Eventually the corporate SCM market is going to need Git repositories larger than the smallest hard drives they're willing to buy for their code monkeys, so this is likely to improve.)

Put any references you want to share long-term into Namecoin and there's your publishing. To read the publication, a user would get the reference from Namecoin and populate a local Git repository with the required objects. (Naturally most people would use an RSS-reader-like client to do this.)

For live collaboration action, a group could stand up a Git repository as a Tor hidden service (using Gitbucket would make this not such a tweaky sysadmin task) or use something like piehole, with the etcd instances as hidden services and relying on the DHT to share objects. Then periodically "archive" refs to Namecoin.

The final result is subversive as hell but all the parts are either already done or mainly useful for Enterprise IT.