WIRED:There is an exciting development in public coding. It has the unlikely name of Git
I SPEND a lot of time watching programmers at work. Not actually at their work, you understand – that would be creepy. No, I watch the tidal wash of public code development online, in places where programmers gather to share their code and work collectively on it. One such online location is the unfortunately named “Github”, a repository for computer source code and collaboration that now hosts over a million projects. And the biggest potential treasure, one quickly gleans from Github, is the tool that gives it its name.
Git is a tool, written by Linus Torvalds, for distributed version control. What that means, in practice, is that it allows many coders to work on the same project, simultaneously, and then merge their work selectively: each can pick and choose from the contributions of his peers when compiling a final program.
A project run under distributed version control need not have a central, definitive edition. The Linux operating system kernel, Torvald’s operating system, and the first project to be managed using Git, has many different versions. One is the version Torvalds himself gives his official approval to, but there are many others. Google uses its own variant; your Android phone has another; Linux desktop distributions made by Ubuntu and Redhat have yet another. But they all keep track of the changes and edits made by Linux’s thousands of contributors through the magic of version control.
Could this really be used elsewhere? You see a glimmer of other potential applications in the world of Wikipedia. Like Git, Wikipedia’s version control keeps a record of every edit, every new addition – and lets Wikipedia’s editors move back and forth.
It is a feature of its success that new contributions are so easily reversible and audited but, in terms of modern version control, Wikipedia is in the stone age. A Wikipedia branched off a world where distributed systems like Git were the norm would be just one of many, voluntarily definitive versions. You would have Jimmy Wales’s Wikipedia, but also many others, all cherry-picking from each other: a Wikipedia Britannica, a Wikipedia Hibernica . . .
Well, except that human language is not the same as the computer languages that Git wrangles. Computer programs have a different kind of complexity. Merging the works of two different authors either leads to a working program or not. How could one cherry-pick sentences about Albert Einstein and convert them into a seamless whole?
In struggling to answer this, I have a few suggestions to make. First, there are plenty of other projects that might be more amenable to distributed control; perhaps more than a Wikipedia article. Business, for instance, is driven by spreadsheets, and a distributed, version-controlled form of that ancient template might be an amazing product.
Second, programming languages and their distributed tools have heavily influenced each other. Computer software used to be as inextricably personalised, idiomatic and intractable as the average English prose article.
Much of software engineering’s progress was down to creating forms and templates that did allow programmers to share and co-operate. There may be a version of Git waiting to be built for non-computer languages.
I was mailed out of the blue by a member of Anonymous, the distributed collective online group, in what might be called Anonymous’s “house style”: a staccato set of declarations, with common repeating themes and messages. Anonymous’s declarations are written collectively, with many merges and edits. But unlike what you’d expect from a text written by committee, they have quite a forceful tone to them.
I’m left wondering if this is what the future will be, as distributed version control begins to find its way into other forms.
The question I have, when I look at the sophistication and power of these tools for co-operation and decentralisation is not whether they will spread, but how, and when.
And who will gain the most power by adopting them first?