In this article, Technical Consultant Philip Armour talks Git and why it has taken over the world!
I have a confession to make. For more years than I care to admit, I was a member of a software releasing team at a very well-known telecoms corporation. Every week we would integrate and merge changes from developers around the world, fix merge conflicts, try to build the code, provide release candidate builds to others for testing, create release notes, go for a coffee and so on. It was quite repetitive and not a role for expanding my horizons, but hey-ho!
At that time we used a version control tool called IBM Rational Synergy, formerly known as ‘Continuus’, which had an interesting way of working (but that’s not for this article). We also worked a very small amount with Git from around 2010.
At a later point, it was decided that we migrate our source code from Synergy to yet another tool called Perforce. At around the same time, some of my Clearvision colleagues were using IBM Rational ClearCase for version control at their companies. Surprisingly, they still like to talk enthusiastically about how good they think ClearCase is/was, (I try to be nice to them, they can’t help it).
What’s the point in all this? Well, it’s to emphasise the fact that not too many years ago, the version control tooling landscape was fairly crowded. Compare that with today and the version control options seem to be Git, Git or Git — a bit like the Monty Python spam sketch! It is rare for customers approaching Clearvision to mention any other version control tool, except perhaps when asking for help migrating from it to Spam, er, I mean Git.
So I started thinking about why Git, like some great conquering army, seems to have swept the planet, sharing its message of distributed workflows and easy branching and merging, all the while wiping out the competition. Not bad for a product whose name is a borderline swear word…
After some great reflection and time well spent sitting next to streams rubbing my chin, I came up with not one, but SIX reasons why Git dominates version control today.
- Git is nerd-owned.
The nerd-credentials of Git are pretty hard to challenge. Its creator Linus Torvalds developed it to address the versioning requirements of the Linux kernel after a falling out with a tool called BitKeeper.
Nearly everyone in the IT world and beyond understands the almost incalculable positive impacts of the Linux kernel/OS. So arguably, Linus Torvalds is comparable to the band Radiohead — everything he creates has major cred-points from the get-go.
It turns out that with Linus and Git, the cred-points are more than justified. It naturally follows that the technical decision-makers at the thousands of reputable companies around the world who trust the Linux kernel for their most critical systems also trust Git.
The fact that no commercial company or corporation makes money directly from either the Linux kernel or Git is another major supporting factor.
- Git is free to use and doesn’t care who you are.
The only thing anyone needs to start using Git today is a computer with an internet connection to download and install it.
Because it is spiritually owned by the nerds rather than the guys in grey suits, no-one asks you to provide your name or to subscribe or pay for anything!
Now I have chosen my words carefully here. Git as a technology is to be distinguished from Git-hosting options like GitHub, Bitbucket, GitLab and so on, which by the way, ask for your name and require a payment for the use of enterprise-scale features. More on this in reason 4.
However, the fact still remains that I can use Git for both my personal and work projects without a care in the world and without having to spend a cent, which like millions of others, I do quite happily.
- Git is a major facilitator in open-source.
Git, as well as being open-source itself, is a major facilitating technology in how open-source software is created. In this respect, Git shares the credit with cloud Git-hosting solutions, the most famous being the mighty GitHub.
Now, it’s worth mentioning that contributors to the Linux kernel have always collaborated via email patches (which is why Git has some interesting commands such as ‘format-patch’) but this was never going to be the best collaboration approach for open-source in general.
Enter GitHub. GitHub was the first solution to put a web front-end on top of global-scale cloud hosting based on Git. This led to some commentators describing GitHub as a kind of Facebook for developers.
As well as the front-end, the now well-established concept of the pull-request as a collaboration point was established in GitHub, along with the Git ‘Fork’ which allows users to contribute from their own copies of open-source projects with minimal friction.
When open-source developers have needed to pay their bills and get hired by commercial companies, they have asked their employers to adopt the version control system they know and love — Git.
- Git doesn’t offer a full solution.
It is perhaps a little ironic that the sins of omission of Git, namely the absence of some important features including permissions/security, code-review, and a web interface, actually work in its favour.
Git doesn’t insist on a centralised model where everyone collaborates via the same central server which is all-but obligatory in any enterprise setting. Rather, these omissions open the way for vendors like Atlassian, Microsoft and many others to fill the gaps via their commercial products.
Most people are familiar with the main examples of commercial and open-source products supplementing Git in the form of Git-hosting solutions for both cloud and on-prem such as GitHub, Bitbucket, Gerrit and GitLab.
There are also Integrated Development Environments (IDEs) like Eclipse and VS Code which give users a nicer interface than the command line.
In summary, because Git doesn’t offer a full solution, tool vendors can innovate around the missing areas and build their own proprietary solutions to an accepted open-source standard.
People are given a choice, but Git is still at the heart of it. Happy days!
- Git is opinionated, but it’s a well-thought-out opinion.
So far, I haven’t mentioned the tool which is perhaps the main rival of Git — Subversion (SVN) which shares many of its open-source virtues with Git. Around 2010, SVN had a lot of traction/adoption from companies and open-source projects. However, more recently, many SVN users have migrated their projects across to Git, and over the years, Clearvision has assisted more than a few of them to get a good migration outcome!
At least some of the reasons for this shift are almost certainly technical, which leads me to the meaning behind the fifth reason, Git is opinionated, in terms of its object model and low-level design. It does things a certain way and if you don’t like it, tough!
You don’t want a staging area (index)? That’s unfortunate. You want your files to have versions like ‘1.1.1’? My heart cries out for you. Face the facts dude, some of the functional gifts that Git offers are only granted on an accept it or walk away basis.
That being said, the vast majority of its opinionated design decisions are good ones. The referenced-based branching in Git is way way better than the copy-based branches of SVN and Perforce. The distributed model means improved speed and performance.
Furthermore, I have heard it argued that SVN is too flexible and versatile in some of its features with the outcome that the user gets ‘too much rope’, and ends up confused, which SVN is unfairly slammed for.
Three cheers for the strong opinions of Git!
- Git runs on almost anything, with minimal dependencies.
Anyone who has installed Git will probably say it was quick and easy. You don’t need a relational database or a graphical front-end. It’s as easy to install on a Raspberry Pi as it is on a Windows PC or a Linux Server.
Incidentally, Git has many distributions other than the ‘Core-Git’ which is the main Linux version, including JGit (the Java implementation) and others based on many languages such as Go and Python.
Essentially, there are minimal barriers in terms of hardware or software for getting Git where you need it.
Will Git dominate forever?
Another confession to finish with is that I always run the risk of evangelising about Git too much. But, Git is not perfect by any means.
Are people who use ClearCase/Perforce/SVN/Someothertool in favour of Git, cloth-headed ninnies? Of course not! Any and all of the version control tools are of course capable of doing their jobs pretty well which they do.
Git has some definite weak points. The names of commands are inconsistent and don’t always make sense, the learning curve for new adopters is steep if you need to go beyond the basic workflow. But there are obviously some valid reasons behind why Git holds such a high position today.
What about the future?
Personally, I find it hard to picture another tool or technology for version control gaining a similar mix of ingredients to compete with Git any time soon without some seismic shift in the technology landscape.
That being said, as a Clearvision consultant who helps customers with Git mentoring and training, I would be happy to see Git stay on top for a few more decades to come, instead of ending up like the Synergies and ClearCases of years gone by.
If you’re interested in learning more about how Clearvision consultants can help, click here.