10 Years of Git: An Interview with Git Creator Linus Torvalds - Linux Foundation (2024)

9 MIN READ

The Linux Foundation | 06 April 2015

10 Years of Git: An Interview with Git Creator Linus Torvalds - Linux Foundation (1)Ten years ago this week, the Linux kernel community faced a daunting challenge: They could no longer use their revision control system BitKeeper and no other Source Control Management (SCMs) met their needs for a distributed system. Linus Torvalds, the creator of Linux, took the challenge into his own hands and disappeared over the weekend to emerge the following week with Git. Today Git is used for thousands of projects and has ushered in a new level of social coding among programmers.

To celebrate this milestone, we asked Linus to share the behind-the-scenes story of Git and tell us what he thinks of the project and its impact on software development. You’ll find his comments in the story below. We’ll follow this Q&A with a week of Git in which we profile a different project each day that is using the revision control system. Look for the stories behind KVM, Qt, Drupal, Puppet and Wine, among others.

Why did you create Git?

Torvalds: I really never wanted to do source control management at all and felt that it was just about the least interesting thing in the computing world (with the possible exception of databases ;^), and I hated all SCM’s with a passion. But then BitKeeper came along and really changed the way I viewed source control. BK got most things right and having a local copy of the repository and distributed merging was a big deal. The big thing about distributed source control is that it makes one of the main issues with SCM’s go away – the politics around “who can make changes.” BK showed that you can avoid that by just giving everybody their own source repository. But BK had its own problems, too; there were a few technical choices that caused problems (renames were painful), but the biggest downside was the fact that since it wasn’t open source, there was a lot of people who didn’t want to use it. So while we ended up having several core maintainers use BK – it was free to use for open source projects – it never got ubiquitous. So it helped kernel development, but there were still pain points.

That then came to a head when Tridge (Andrew Tridgell) started reverse-engineering the (fairly simply) BK protocol, which was against the usage rules for BK. I spent a few weeks (months? It felt that way) trying to mediate between Tridge and Larry McVoy, but in the end it clearly wasn’t working. So at some point I decided that I can’t continue using BK, but that I really didn’t want to go back to the bad old pre-BK days. Sadly, at the time, while there were some other SCM’s that kind of tried to get the whole distributed thing, none of them did it remotely well. I had performance requirements that were not even remotely satisfied by what was available, and I also worried about integrity of the code and the whole workflow, so I ended up just deciding to write my own.

How did you approach it? Did you stay up all weekend to write it or was it just during regular hours?

Torvalds: Heh. You can actually see how it all took shape in the git source code repository, except for the very first day or so. It took about a day to get to be “self-hosting” so that I could start committing things into git using git itself, so the first day or so is hidden, but everything else is there. The work was clearly mostly during the day, but there’s a few midnight entries and a couple of 2 a.m. ones. The most interesting part is how quickly it took shape ; the very first commit in the git tree is not a lot of code, but it already did the basics – enough to commit itself. The trick wasn’t really so much the coding but coming up with how it organizes the data.

So I’d like to stress that while it really came together in just about ten days or so (at which point I did my first *kernel* commit using git), it wasn’t like it was some kind of mad dash of coding. The actual amount of that early code is actually fairly small, it all depended on getting the basic ideas right. And that I had been mulling over for a while before the whole project started. I’d seen the problems others had. I’d seen what I wanted to avoid doing.

Has it lived up to your expectations? How is it working today in your estimation? Are there any limitations?

Torvalds: I’m very happy with git. It works remarkably well for the kernel and is still meeting all my expectations. What I find interesting is how it took over so many other projects, too. Surprisingly quickly, in the end. There is a lot of inertia in switching source control systems; just look at how long CVS and even RCS have stayed around, but at some point git just took over.

Why do you think it’s been so widely adopted?

Torvalds: I think that many others had been frustrated by all the same issues that made me hate SCM’s, and while there have been many projects that tried to fix one or two small corner cases that drove people wild, there really hadn’t been anything like git that really ended up taking on the big problems head on. Even when people don’t realize how important that “distributed” part was (and a lot of people were fighting it), once they figure out that it allows those easy and reliable backups, and allows people to make their own private test repositories without having to worry about the politics of having write access to some central repository, they’ll never go back.

Does Git last forever, or do you foresee another revision control system in another 10 years? Will you be the one to write it?

Torvalds: I’m not going to be the one writing it, no. And maybe we’ll see something new in ten years, but I guarantee that it will be pretty “git-like.” It’s not like git got everything right, but it got all the really basic issues right in a way that no other SCM had ever done before.

No false modesty 10 Years of Git: An Interview with Git Creator Linus Torvalds - Linux Foundation (2)

Why does Git work so well for Linux?

Torvalds: Well, it was obviously designed for our workflow, so that is part of it. I’ve already mentioned the whole “distributed” part many times, but it bears repeating. But it was also designed to be efficient enough for a biggish project like Linux, and it was designed to do things that people considered “hard” before git – because those are the things *I* do every day.

Just to pick an example: the concept of “merging” was generally considered to be something really quite painful and hard in most SCM’s. You’d plan your merges, because they were big deals. That’s not acceptable to me, since I commonly do tens of merges a day when in the merge window, and even then, the biggest overhead shouldn’t be the merge itself, it should be testing the result. The “git” part of the merge is just a couple of seconds, it should take me much longer just to write the merge explanation message.

So git was basically designed and written for my requirements, and it shows.

People have said that Git is only for super smart people. Even Andrew Morton said Git is “expressly designed to make you feel less intelligent than you thought you were.” What’s your response to this?

Torvalds: So I think it used to be true but isn’t any more. There is a few reasons people feel that way, but I think only one of them remains. The one that remains is fairly simple: “you can do things so many ways.”

You can do a lot of things with git, and many of the rules of what you *should* do are not so much technical limitations but are about what works well when working together with other people. So git is a very powerful set of tools, and that can not only be overwhelming at first, it also means that you can often do the same (or similar) things different ways, and they all “work.” Generally, the best way to learn git is probably to first only do very basic things and not even look at some of the things you can do until you are familiar and confident about the basics.

There’s a few historical reasons for why git was considered complicated. One of them is that it was complicated. The people who started using git very early on in order to work on the kernel really had to learn a very rough set of scripts to make everything work. All the effort had been on making the core technology work and very little on making it easy or obvious. So git (deservedly) had a reputation for requiring you to know exactly what you did early on. But that was mainly true for the first 6 months or a year.

The other big reason people thought git was hard is that git is very different. There are people who used things like CVS for a decade or two, and git is not CVS. Not even close. The concepts are different. The commands are different. Git never even really tried to look like CVS, quite the reverse. And if you’ve used a CVS-like system for a long time, that makes git appear complicated and needlessly different. People were put off by the odd revision numbers. Why is a git revision not “1.3.1” with nice incrementing numbers like it was in CVS? Why is it that odd scary 40-character HEX number?

But git wasn’t “needlessly different.” The differences are required. It’s just that it made some people really think it was more complicated than it is, because they came from a very different background. The “CVS background” thing is going away. By now there are probably lots of programmers out there who have never used CVS in their lives and would find the CVS way of doing things very confusing, because they learned git first.

Do you think the rate of Linux kernel development would have been able to grow at its current rate without Git? Why or why not?

Torvalds: Well, “without git,” sure. But it would have required that somebody else wrote something git-equivalent: a distributed SCM that is as efficient as git is. We definitely needed something *like* git.

What’s your latest opinion of GitHub?

Torvalds: Github is an excellent hosting service; I have nothing against it at all. Now, the complaints I’ve had is that GitHub as a development platform – making commits, pull requests, keeping track of issues etc – doesn’t work very well at all. It’s not even close, not for something like the kernel. It’s much too limited.

That’s partly because of how the kernel is developed, but part of it was that the GitHub interfaces were actively encouraging bad behavior. Commits done on GitHub had bad commit messages etc, because the web interfaces at GitHub were actively encouraging bad behavior. They did fix some of that, so it probably works better, but it will never be appropriate for something like the Linux kernel.

What is the most interesting use you’ve seen for Git and/or GitHub?

Torvalds: I’m just happy that it made it so easy to start a new project. Project hosting used to be painful, and with git and GitHub it’s just so trivial to do a random small project. It doesn’t matter what the project is; what matters is that you can do it.

Do you have side projects up your sleeve today? Any more brilliant software projects that will dominate software development for years to come?

Torvalds: Nothing planned. But I’ll let you know if that changes.

Atlassian is also helping to celebrate the anniversary of Git. Click on the image below to take a walk down memory lane.

10 Years of Git: An Interview with Git Creator Linus Torvalds - Linux Foundation (3)

Read more Git Week profiles:

Git Success Stories and Tips from Wine Maintainer Alexandre Julliard

Git Success Stories and Tips from Puppet Labs’ Michael Stahnke

Git Success Stories and Tips from Tor Chief Architect Nick Mathewson

Git Success Stories and Tips from Drupal Core Committer Angie Byron

Git Success Stories and Tips from Qt Maintainer Thiago Macieira

Git Success Stories and Tips from KVM Maintainer Paolo Bonzini

I'm a seasoned expert with an in-depth understanding of version control systems, especially Git, and I have a wealth of knowledge about the Linux kernel and its development history. Let me demonstrate my expertise by providing insights into the concepts mentioned in the article.

Key Concepts Discussed:

  1. BitKeeper and SCM Transition:

    • Context: The article mentions that the Linux kernel community faced challenges when they could no longer use BitKeeper, their previous revision control system.
    • Significance: BitKeeper was appreciated for its local repository and distributed merging capabilities. However, its proprietary nature led to issues, and Linus Torvalds sought an open-source alternative.
  2. Creation of Git:

    • Linus Torvalds' Perspective: Torvalds reveals that he initially disliked source control management but was impressed by BitKeeper. When BitKeeper became problematic, he decided to create Git.
    • Motivation: Distributed source control, as demonstrated by BitKeeper, addressed issues of "who can make changes" and offered each developer their own source repository.
  3. Git Development Timeline:

    • Timeline: Torvalds disappeared over a weekend and emerged the following week with Git.
    • Self-Hosting: Git became self-hosting within about a day, allowing Torvalds to commit changes using Git itself.
    • Coding Approach: The coding effort was not a mad dash but focused on getting the basic ideas right, which Torvalds had been mulling over for a while.
  4. Git's Success and Adoption:

    • Versatility: Torvalds expresses satisfaction with Git, emphasizing its efficiency and widespread adoption across various projects.
    • Distributed Nature: The distributed nature of Git and its ability to provide easy and reliable backups contributed to its rapid adoption.
    • Inertia in SCM: Git's adoption, despite the inertia in switching source control systems, highlights its effectiveness in addressing significant issues.
  5. Git's Design for Linux Workflow:

    • Efficiency for Big Projects: Git was designed to be efficient for large projects like the Linux kernel, with a focus on tasks like merging, which were considered challenging in other SCM systems.
  6. Perceived Complexity of Git:

    • Learning Curve: Torvalds acknowledges that Git used to be considered complicated, partly due to its different approach compared to systems like CVS.
    • Powerful Toolset: Git's powerful toolset can be overwhelming, but Torvalds suggests starting with basic tasks before delving into advanced features.
  7. GitHub's Role:

    • GitHub as a Hosting Service: Torvalds praises GitHub as a hosting service but points out limitations in its development platform for projects like the Linux kernel.
    • Encouragement of Good Practices: GitHub interfaces were initially criticized for encouraging bad commit practices, but some issues have been addressed.
  8. Future of Git:

    • Git-Like Systems: Torvalds anticipates that future systems may be "git-like" but doesn't see himself writing the next version.
    • Git's Enduring Legacy: While acknowledging Git's imperfections, Torvalds emphasizes that it got the fundamental issues right.
  9. Interesting Uses of Git/GitHub:

    • Project Hosting: Torvalds finds it satisfying that Git and GitHub make it easy to start new projects, irrespective of their nature.
    • Facilitating Small Projects: The ease of starting small projects is highlighted as a significant benefit.
  10. Linus Torvalds' Future Projects:

    • Current Status: Torvalds mentions no planned projects but leaves the door open for future endeavors.

This analysis showcases a deep understanding of version control systems, the development of Git, and its impact on the open-source community, particularly in the context of the Linux kernel.

10 Years of Git: An Interview with Git Creator Linus Torvalds - Linux Foundation (2024)

FAQs

How long did it take Linus Torvalds to make Git? ›

It took Linus Torvalds two weeks to write the initial version of Git, but it wasn't until a few years later that developers began to adopt it. In 2005, the Linux kernel community began using Git as their version control system, and other open-source projects soon followed.

How much does Linus Torvalds get paid? ›

Torvalds earns about 10 million per year. With that income, it would take Torvalds 12k years to reach the same net worth as Buffett (about 124 billion). Put differently, Buffett could personally fund 10k open source contributors 200k per year for their lifetime (60 years) if he wanted to.

How old was Linus Torvalds when he created Linux? ›

An avid programmer, Torvalds wrote the kernel of the Linux operating system at age 21 from his mother's apartment in Helsinki. As Wired magazine wrote in 2003, “He posted it on the Internet and invited other programmers to improve it.

Does Linus Torvalds still code? ›

Linus Torvalds: 'I Do No Coding Any More' | Hacker News. This is high on my list of code craftsmanship points. It's very difficult to explain to young programmers who have never worked on an old code base how valuable this is when done well.

Which Linux does Linus Torvalds use? ›

He subsequently wrote a free-software replacement for it called Git. In 2008, Torvalds stated that he used the Fedora Linux distribution because it had fairly good support for the PowerPC processor architecture, which he favored at the time. He confirmed this in a 2012 interview.

What car does Linus Torvalds drive? ›

The license plate on Linus Torvalds' Mercedes SLK convertible says it all. The frame running around the outside of the plate says "Mr. Linux.

Did Linus Torvalds retire? ›

Linus is not “leaving Linux”. He's taking time off and there's every reason to think he'll be back.

What was Linus Torvalds first code? ›

Linus says that according to his sister Sara, the first code he showed her was a two-line “GOTO” program in BASIC. He tried to show-off his new programming skills on the Commodore by making it repeat “Sara is the best.”

Is Linus Torvalds still working? ›

Main Linux kernel developer since 1991, still active maintainer.

Why does Linus Torvalds love C? ›

Linus Torvalds does system programming, like the Linux kernel. That's a low-level type of programming. He doesn't develop mobile apps, web apps. Therefore, it's very natural that he prefers C.

What does Linus Torvalds think of C++? ›

C++ is a horrible language. It's made more horrible by the fact that a lot of substandard programmers use it, to the point where it's much much easier to generate total and utter crap with it.

Who is Linux owned by? ›

Linus Torvalds owns the copyright to the name Linux, but anyone can create a distribution of Linux by combining various open source components.

How long did it take to build GitHub? ›

Founding. The development of the GitHub platform began on October 19, 2007. The site was launched in April 2008 by Tom Preston-Werner, Chris Wanstrath, P. J. Hyett and Scott Chacon after it had been available for a few months as a beta release.

Did Linus Torvalds create Git? ›

Git was originally authored by Linus Torvalds in 2005 for development of the Linux kernel, with other kernel developers contributing to its initial development.

When did Linus Torvalds start coding? ›

At age 10 Torvalds began to dabble in computer programming on his grandfather's Commodore VIC-20. In 1991, while a computer science student at the University of Helsinki (M.S., 1996), he purchased his first personal computer (PC).

When was Git invented? ›

Since its birth in 2005, Git has evolved and matured to be easy to use and yet retain these initial qualities. It's amazingly fast, it's very efficient with large projects, and it has an incredible branching system for non-linear development (see Git Branching).

Top Articles
Latest Posts
Article information

Author: Horacio Brakus JD

Last Updated:

Views: 5675

Rating: 4 / 5 (71 voted)

Reviews: 94% of readers found this page helpful

Author information

Name: Horacio Brakus JD

Birthday: 1999-08-21

Address: Apt. 524 43384 Minnie Prairie, South Edda, MA 62804

Phone: +5931039998219

Job: Sales Strategist

Hobby: Sculling, Kitesurfing, Orienteering, Painting, Computer programming, Creative writing, Scuba diving

Introduction: My name is Horacio Brakus JD, I am a lively, splendid, jolly, vivacious, vast, cheerful, agreeable person who loves writing and wants to share my knowledge and understanding with you.