Linus on Version Control

Long, fascinating post by Linus Torvalds on version control, software respositories, and the social aspects of managing a large code base. Ostensibly in reply to a KDE developer’s question about using git, it touches on a much broader set of issues, and it’s interesting how many of them aren’t technical at all. For instance, on the need for a central repository:

For a kernel example: the “public” git tree is on the public kernel.org servers (including “git.kernel.org”), but that is actually not a machine that any developers really ever push to directly.

Many kernel developers use other kernel.org machines (because we have the infrastructure), but others will use their own setups entirely, because they might have issues like bandwidth (ie kernel.org may be reasonably well connected, but while it has mirrors elsewhere, the main machines are in the US, so some European developers prefer to just use servers that are closer).

So if you look at my merge messages, for example, you’ll see things like merges from lm-sensors.org, git.kernel.dk, ftp.linux-mips.org, oss.sgi.com etc etc. The point being that yes, there is a central place that people know about, but at the same time, much of the *development* really happens outside that central place!

To me, version control is one of those areas where regular people have a something to learn from the way nerds work. (There are plenty of examples of the inverse, which will be left as an exercise for the reader.) Perforce, one of the better version control systems, has integration with Windows for version control of Microsoft Office documents; it’s free for one or two users. I’ve used it intermittently in the past and I think it’s the right way to go, but I don’t know that it’s intuitive enough for the casual user. Sharepoint is headed in that direction, but Microsoft doesn’t have a good reputation in the SCM universe. I think this could be an area of differentiation, not just equivalence and compatibility, for Open Office; some kind of even very simple integration with Subversion for document control would be a huge win, methinks.

Then the non-technical among us can start learning these hard-won lessons, like Linus’s message to the KDE people.