Is it time to GIT out?

Jonas Hultenius

2023-03-09

image

Git has been the go-to distributed version control system (DVCS) for software developers since its release in 2005. Its popularity is due to its reliability, flexibility, and ease of use. However, despite its dominance in the market, Git has its limitations. As the world of software development continues to evolve, it’s time to explore other alternatives.

Before we dive into the reasons for exploring other options, let’s take a quick look at the rise of Git. Git was created by Linus Torvalds, the same person who created the Linux operating system. In 2005, he decided to create his own DVCS after becoming frustrated with the limitations of existing systems such as CVS and Subversion.

Git quickly gained popularity, and by 2010, it had become the de facto standard for version control in the software development industry. Today, it’s used by millions of developers worldwide, including some of the biggest tech companies such as Microsoft, Google, and Facebook.

Git has become so popular because it is flexible and customizable. Developers can set up Git repositories in various configurations and workflows to suit their needs. Git’s branching system is also a game-changer, allowing developers to create new features and fix bugs without affecting the main branch.

However, Git is not without its flaws, and as projects become more complex and teams grow, Git’s limitations become apparent. Here are some of the problems with Git:

  1. Steep Learning Curve Git has a steep learning curve, and it takes time to master its many features and commands. While it is easy to create a new repository and start committing code, using Git efficiently requires a thorough understanding of concepts like branching, merging, rebasing, and squashing commits.

  2. Poor Performance with Large Repositories Git is not suitable for managing large repositories with many files and folders. The more files and commits a repository has, the slower Git becomes. This can result in frustratingly long wait times for developers and can slow down the development process.

  3. Limited Collaboration Tools While Git is excellent at version control, it is not very good at collaboration. It lacks built-in tools for code reviews, issue tracking, and project management, which are critical for teams working on software development projects.

  4. Limited Support for Monorepos Git is not well-suited for managing monorepos, which are repositories that contain multiple projects or components. Monorepos are becoming more popular, especially in large organizations with many teams working on related projects.

So, what are the alternatives to Git? Here are some of the most popular distributed version control systems:

  1. Mercurial: Like Git, Mercurial is a distributed version control system that supports branching, merging, and tagging. However, it offers better support for large files, more straightforward branching, and a more user-friendly command-line interface. Mercurial is used by companies such as Facebook, Mozilla, and Python.

  2. Subversion: Subversion is a centralized version control system that offers advanced security features, such as access control, authorization, and encryption. It’s popular in the enterprise world and is used by companies such as Google, Adobe, and IBM.

  3. Perforce: Perforce is a commercial version control system that provides scalable solutions for large teams, big files, and complex workflows. It’s used by companies such as Ubisoft, NVIDIA, and EA.

  4. Plastic SCM: Plastic SCM is a distributed version control system that offers advanced features for branching, merging, and distributed teams. It also provides built-in support for large files, binary files, and multimedia files. It’s used by companies such as Unity, Intel, and Siemens.

  5. Fossil: Fossil is a distributed version control system that combines version control, bug tracking, and wiki pages in a single package. It’s designed to be simple, self-contained, and easy to use, even for non-technical users.

So should we switch?

I don’t know. Part of me wants to say yes. I think we need a simple yet effective solution that just gets the work done. Without the need for special commands, software and nomenclature. And while there are alternatives none of them really fits the bill.

Plastic SCM is a favorite among the alternatives. But I’m not ready to leave Git for it. Not full time at least and I’m not taking my team with me on that journey.

I had high hopes for [Sturdy (https://getsturdy.com/)] an ingenious solution merging the simplicity of Dropbox or Google Drive with a DVCS. I even had it as my number one pick a year back or so when I did a ‘lunch-and-learn’ on this very subject. But alas the team behind it have stopped active development and moved on.

So in conclusion, Is it time to Git out? I would say no. Git is here to stay for another couple of years and although there are a multitude of alternatives there is nothing threatening Gits reign at the top. Do we need a new solution? Yes, yes we do. But for now we just have to Git with the program.