
Most open source projects change one corner of computing. A few change how everyone works. If I had to pick one that changed how all software gets made, open and closed alike, it would be Git.
Linus Torvalds wrote it in April 2005, in about two weeks, after the proprietary tool the Linux kernel had been using, BitKeeper, withdrew its free license. He handed it to Junio Hamano, who has maintained it ever since. Nineteen years later, nearly every software project on earth lives in it.
The design decision that mattered
Before Git, the common version control systems, CVS and Subversion, were centralized. There was one server with the history. You checked out a working copy, and every commit, log and branch operation went over the network to that server. Branching was expensive and merging was feared. If you didn't have commit access, you couldn't record your work in version control at all.
Git made every copy complete. When you clone a repository, you get the entire history, and your copy is as capable as anyone else's. That one decision changed everything that followed:
- Everything is local and fast. Commits, logs, diffs and branches don't touch the network.
- Branching is free. A branch is a 41-byte file pointing at a commit. People make dozens a day.
- Anyone can do real work. You don't need permission to commit. You commit in your own copy, and ask someone to pull your changes.
- Forking stops being hostile. In the old world, forking a project meant a public split. With Git, everyone has a fork by definition.
How it works underneath
Git is simpler inside than its command line suggests. It's a content-addressed object store:
- A blob is a file's contents, stored under the hash of those contents.
- A tree is a directory, a list of names pointing to blobs and other trees.
- A commit points to a tree, one or more parent commits, an author and a message.
- Branches and tags are just names pointing at commits.
Because every object is named by the hash of its content, and every commit includes its parent's hash, the history is tamper-evident. Change anything in the past and every hash after it changes. It's the same chaining idea people later got excited about in blockchains, and Git had it in 2005. Git is in the middle of moving from SHA-1 to SHA-256 for those hashes, a long migration that's now supported for new repositories.
What it made possible
The pull request. GitHub, founded in 2008, put a web interface and a social layer on top of Git. Its pull request, a fork plus a proposed merge plus a discussion, became the standard way strangers contribute to each other's software. Code review, continuous integration and the whole modern development workflow are built around it.
Open source at scale. The Linux kernel merges changes from thousands of developers in each release. Kubernetes, Python, Rust and countless others accept contributions from people they've never met. That scale isn't possible on a system where every contributor needs commit access to a central server.
Everything as code. Once Git was everywhere, people started putting more than source code in it: infrastructure definitions, configuration, documentation, even legislation in a few places. "GitOps," where the desired state of a system lives in a repository and tooling makes reality match it, is that idea taken to its conclusion.
Where you host it matters
Git itself is distributed. The platforms most people use with it are not. GitHub, owned by Microsoft since 2018, hosts most open source projects, and with them the issues, pull requests, discussions and CI pipelines that live outside Git itself. If GitHub disappears, every clone still has the code. The conversation around it is another matter.
That's why self-hosted and community-run forges matter:
- GitLab, open core, with a free self-hosted edition.
- Gitea, a lightweight self-hosted forge written in Go, and Forgejo, which forked from Gitea over governance concerns and declared itself a fully independent project this February. It powers the non-profit Codeberg.
- SourceHut, minimalist and email-driven, in the style of the kernel's own workflow.
None of them prevents you from also mirroring to GitHub. Several make it easy. But keeping the canonical home of your project somewhere you control means nobody else gets to decide what happens to your issues, your history or your access.
Why it's the best example of open source
Git solves a problem that every software team has, it's free, it's under the GPL, and its success never depended on a company. It came from one frustrated developer solving his own problem, and then handing it to someone else to maintain. Then it became the infrastructure for everyone else's open source. That's the whole model, working exactly as intended.
Since then
Added October 2026. Git turned twenty in April 2025. The point about hosting stopped being theoretical for me in September 2026, when GitHub suspended my account without notice on the day inbuxa launched. The code was safe in every clone, and my projects now live on hardware I run, as I described in Six Days Without GitHub. And I told the story of Git's creation as part of Linux's 35th birthday in Just a Hobby.