THE 2000S

Git

In 2005, Linus Torvalds found himself in an embarrassing situation. BitKeeper, the version control system the Linux community had been using for years, was no longer freely available to kernel developers. The story began with Andrew Tridgell, a respected developer, who decided to study BitKeeper’s protocol through reverse engineering. Larry McVoy, BitKeeper’s creator, considered this approach a violation of the terms of use and revoked the free license granted to Linux developers.

Torvalds attempted mediation for a few weeks, without result. Faced with this impasse, he had to find an alternative. He examined existing systems, but none satisfied him. He who considered version control managers one of the least interesting areas of computing, just after databases, embarked on creating his own tool. His experience with BitKeeper had at least taught him one thing: the advantages of a distributed system where each developer has a local copy of the repository.

Torvalds then disappeared for a week. When he resurfaced, he presented the first version of Git. Initial development progressed at a remarkable pace. In ten days, Git was capable of managing its own source code. This speed did not come from a massive amount of code written, but from deep reflection on data organization. Torvalds had designed an architecture that favored conceptual simplicity and performance.

The system relied on several technical choices. Each developer had a complete copy of the repository, which eliminated dependency on a central server and solved write access issues. Git used SHA-1 cryptographic hashing to identify objects in the repository. This approach guaranteed code integrity and made any modification of the history impossible without detection.

Branch and merge management constituted one of Git’s major innovations. These operations, known for being complex in previous systems, were simple and fast. Torvalds sometimes performed dozens of merges per day during intense periods of Linux kernel development. This fluidity transformed the way developers worked.

A few months after its creation, Torvalds entrusted Git’s maintenance to Junio Hamano. He recognized in him a developer with excellent technical judgment. Under his direction, Git evolved to become more accessible while retaining its qualities of speed, reliability, and flexibility.

Git’s adoption happened gradually. Google’s Android project chose it as its version control system in 2009, which brought important validation from a large company. The creation of GitHub in 2008 by Tom Preston-Werner, Chris Wanstrath, and P.J. Hyett accelerated the tool’s democratization. The platform offered a user-friendly web interface and social networking features for developers.

Microsoft, long reluctant about open source software, gradually changed its position. In 2012, the company began contributing to libgit2, a Git development library. The following year, it integrated Git support into Visual Studio and offered hosting via Azure DevOps. In 2017, Microsoft migrated Windows development to Git, creating the world’s largest Git repository with 300 GB of source code.

Microsoft’s acquisition of GitHub in 2018 for $7.5 billion marked a symbolic moment. This transaction illustrated Microsoft’s transformation and confirmed Git’s dominant position in the software industry. Stack Overflow’s 2018 statistics revealed that 88.4% of developers used Git, far ahead of Subversion (16.6%) or Mercurial (3.7%).

Git’s design reflected the specific needs of Linux kernel development. The ability to handle a large number of simultaneous contributions, the speed of operations, robustness against errors: these characteristics, combined with its distributed nature, made it a tool suited to large-scale open source projects. Developers could work autonomously on their local copies, then synchronize their modifications with the rest of the team when they wished.

In 2024, Git remains the de facto standard for version control in the software industry. It has transformed the way developers collaborate and share their code. The principles of its distributed architecture have inspired many other tools and practices in the field of software development.