20 Years of Git
Great conversation with Linus Torvalds, creator of Linux and also creator of Git, today’s de facto standard version control system: Two decades of Git: A conversation with creator Linus Torvalds.
In 2005, Linus used a proprietary software called BitKeeper for version control of the Linux kernel. The Linux kernel was—and is—a massive open source project, with thousands of developers worldwide contributing to the code. However, the company behind BitKeeper revoked the free license that the Linux community had been using. They needed to switch to another version control system.
As Linus explains in the interview, he didn’t like existing version control systems. He actively hated them. Not only were they awfully slow, but they required a complex setup for the main repository. Migrating the project to a new host was also a mess. Developer’s contributions to the source code were integrated as patches—files which indicated which files and lines of the source code were to be modified by a developer’s contribution. But applying and testing the patches often conflicted with proposals from other developers, introduced bugs, or broke existing functionality. Contribution and communication was handled through mailing lists.
So he decided to create his own solution. His goals: the system needed to be fast, support distributed development, handle large projects efficiently, and maintain data integrity. Developers could create branches to work on the code, send code to remote repositories, and merge code proposals. In just 10 days he had the first working version. A short time later he was using Git to manage the Linux kernel.
Unlike centralized systems, Git treats every repository as equal, allowing developers to work offline and merge changes in sophisticated ways. While Linus wrote Git for himself, the project grew adoption beyond the Linux community. But having written the software for himself, many of the early adopters didn’t like his opinionated choices, or asked for new features. Many people were openly aggressive and entitled about what Linus was supposed to do with Git. This seems part of the curse of successful open source projects. As Linus recounts in the interview, he had a few harsh years with Git.
Then in 2008 GitHub launched and the world changed. (Well, at least the software development world.) GitHub is a web-based platform built around Git. GitHub introduced several UI-based “social” features, like the possibility to create “pull requests”—requests to merge new code to an existing repository branch. Thanks to GitHub, Git became the de facto standard for versioning, enabling anyone to host their software project’s source code in the cloud and collaborate with anyone in the world.
Linus explains why he created Linux and then Git, and why he hasn’t launched any new major project in many years:
All the projects that I’ve had to make, I had to make because I couldn’t find anything better that somebody else did. But I much prefer other people solving my problems for me. (…) Me having to come up with a project is actually a failure of the world. And the world just hasn’t failed in the last 20 years for me.
GitHub was acquired by Microsoft in 2018 for $7.5 billion. Contrary to the initial concerns of the developer community, under Microsoft’s ownership GitHub has continued to expand, becoming one of the most important pieces of infrastructure in modern software development.