Do you remember Linus Torvald’s talk at Google where he presented Git? He called everyone a moron who was not thinking that Git was the greatest version control system of all time. He especially scoffed members of the Subversion team, who were present at this talk:
I’m using Git for three years now. And it has a lot of cool stuff.
Let me mention the three things I like most about Git:
- Speed (especially in creating and using branches)
- “git blame”
- The Git companion product “Gerrit”
To put my thoughts in this blog into context you should know that I’m very old. At least in the context of IT industry. My long experience has given me the chance to use a lot of different version control systems in my professional life. Let me list the most relevant ones:
All of these previous ones were classic central version control systems. Git was the first distributed version control system that I was using. I liked Git from the beginning, but I also knew very quickly that it was more powerful (more complex?) than any of the other VCS I used before. But as a techie I was eager to use something new and cool, and I was sure that soon I could use all the power of Git and it would help and support me in my everyday life as a software developer.
So, time went by…
After using Git for quite some time I still could not leverage the advantage of all this power and complexity. My main job is to invent software. The tools I’m using (like Git) should help me getting my main job done. But after a significant amount of time using Git, I still experienced that with Git I had to deal much more with “low-level” stuff than with any other VCS I’ve used before. Git took more time and more brain capacity from me than any previous VCS. But I didn’t get enough in return to compensate this.
The Git community did quite a good job in spreading the idea that guys who don’t understand Git are dumb-asses and don’t deserve to use Git. I think this mindset has started with Linus “Morons” speech at Google. I began to assimilate this and felt bad being one of these dumb-asses. I thought this might be because of my age and tried not to think about it too much. I especially didn’t dare talking much about it because then all the Git-Lovers would consider me as an old dumbass moron.
Drilling down on the Git perception…
Recently I felt that I should dig a little more into why some people don’t like Git, but even more I wanted to find out more who are the ones that always tell me that this thing is the greatest VCS on earth.
My experience was that those people who loved Git most, are not the ones that use just as a VCS tool (like myself and probably most “ordinary” software developers). It are the ones whose “main job” is to build something “with” or “around” Git.
Let me give you two examples from within SAP. First there are my “EGit” colleagues. They provided the integration of Git into the Eclipse development platform. The other ones are the “Lean DI” guys, who provide infrastructural tools and services in the area of software lifecycle management.
For all these people Git is not only a tool to get their main job done. Git is a significant part of their main job. They deal so much with it, that they finally know every crappy side effect of every Git command. They get used to all this, and in the end they perform every Git related task with virtuosity. On the other hand they are often contextually so far away from the everyday life of an ordinary developer (who uses Git “only” as a VCS) that they don’t understand why people have problems with the power and complexity of Git.
Enough of the people who love Git. How about the other ones? Are there really just a few old dumbass morons that have problems with Git (like me)? Well, first I looked around in the area of colleagues that I work with regularly. One of them is among the best software architects that we have in this company. Another one holds a PhD in astrophysics and has literally done rocket science software (at ESA). The third one holds a PhD in Chemistry and currently working on a topic that would put knots into my mind. All these three guys are intellectually far beyond my skills, but when I talk to them in private they all admit that they are pissed using Git because it sucks out their brains more than any other VCS tool in the past. Git distracts them (not totally, but significantly more than other VCSs) from getting their “main work” done.
OK, three people that I know in person are not so much of a relevance. I checked out what I can find on the internet. Of course I know that for every successful product, there are millions complaining that this product is bullshit. So I didn’t look much on how much stuff I will find on the internet. I focused on WHAT they were complaining about in the context of Git.
What I found had a pretty good match with my experiences. The “ordinary” developers that mainly create software very often felt overwhelmed and confused by the power of Git. Whereas people working in “Software Lifecycle Management” mostly love it. These are the ones who juggle with branches and code-lines and try to create product out of the many contributions by all the software developers.
Actually Git supports exactly the job the Linus Torvalds does in the context of the Linux development. Guess what, it’s no wonder that Linus created a tool that fits perfectly to his needs. And looking at the personality of him, it’s also no wonder that Linus doesn’t care very much about the “others” (morons).
Let me give you a good example of criticizing opinions on Git:
Things of that page that I also fully support are aspects like:
- “Complex information model”
- “Information model sprawl”
- “Leaky abstraction”
- “Power for the maintainer, at the expense of the contributor”
- “Burden of VCS maintenance pushed to contributors”
Sooooo, what do I want?
Let me start with what I don’t want. I don’t want that Git goes away. Git is the VCS of the 21st century. I like the speed of Git and the ease of Gerrit.
- I want to talk open about the weaknesses of Git
- I want that the “Git lovers” stop considering everyone as “moron”, “dumbass” or “too old” who doesn’t also love Git in its entirety
- I want that Git improves and becomes simpler for the “ordinary development tasks”
But mainly I want that that developers speak up and also tell their doubts about Git and thereby help to improve Git over time.
You are not a moron if you don’t like Git!
Until this this happens, I’ll stay “proud to be a moron”.
Let me close with two statements of Linus Towalds.
The first one is a reply to someone who asked him why he doesn’t use C++ (instead of C) in the Linux development.
„*YOU* are full of bullshit. C++ is a horrible language.“
Secondly in his famous Git talk he said:
„I think the designers of subversion were complete morons. Strong opinions, that’s me, right?
There are a few of them in the room today, I suspect. You are stupid.“
So let’s altogether continue using the VCS invented by this lovely guy.
Martin “Proud to be a Moron” Kolb