There are over 20 different open-source and commercial version control systems (VCS) in use today – some getting more media coverage than others. In particular, distributed VCS (DVCS) like Git and Mercurial are attracting a lot of attention due to the popularity of Linus Torvald, GitHub and the recent acquisition of Bitbucket by Atlassian. I wondered what developers are actually using for their software development process so I started my research.
I pulled data on the Codesion VCS’s in use – Subversion, Git and CVS. Interestingly enough, the old dinosaur CVS is still being used for new projects today, but showing a trending decline in favor of Subversion and Git. While this analysis only looks at the data on the Codesion system, it seems to be pretty reflective of the overall industry trends. Perhaps I’ll have the time someday to put together a crawler which surveys VCS’s running public web servers to gauge uptake beyond Codesion’s data set.
Subversion is easily the most popular and its usage is growing larger each month. Its centralized architecture make it easy to maintain a security hierarchy, access control, and backups, which is why it’s preferred in many enterprise organizations over Perforce, VSS, and ClearCase (see figure 2 below).
Subversion is still widely popular amongst the open source community, most notably the Apache Software Foundation, FreeBSD, GCC, Django, Ruby, ExtJS, PHP, Python and MediaWiki.
CVS is being used for new projects, proving that the once dominate open-source VCS is still preferred by a segment of developers. Perhaps its the familiarity of CVS that keeps that keeps attracting people, or perhaps some just don’t need all the bells and whistles that newer VCS’s offer. CVS’s core strength is in it’s simplicity to keep revisions of code and share it with colleagues.
Either way, it’s interesting all the same to compare the buzz of the newer systems with what people are actually using. That said the usage is definitely trending downwards and I’d expect it to be completed replaced in the next couple of years.
Usage of Git with Codesion has remained pretty steady since we launched the beta in mid-2010. It’s hard to draw too much from this trend without considering what is happening with other Git hosting providers. According to a 2009 Dr. Dobbs survey published by Forrester Research (see figure 2 below), Git ranks as the 7th most used VCS with 2.7% of those surveyed ranking it as their primary SCM. The survey included 1,020 developers who spend at least 30% of their time writing code.
If the constant media attention is a leading indicator, Git continues to gain in popularity – especially amongst the open-source, OSX and Linux development community. I fully expect this trend to continue upwards for Git over the next year. It still remains to be seen how Git will be adopted in the enterprise.
There does seem to be an explosion of core open source developer tools these days, not just in the (D)VCS space but also in other areas like databases, where there are more than 70 open source databases. I still remember only a few years ago when all you had to choose from was MySQL, PostgreSQL, SQLite and Berkeley DB. I expect this list to consolidate as clear winners emerge, and other fall behind due to lack of uptake, founding developers loosing interest or projects being abandoned. I suspect the same will be the case for the (D)VCS world, as a select few are adopted by the developer community, both in the private sector and open source community.
Subversion still attracts the largest number of developers world-wide, but Git and Mercurial are the fastest growing. I fully expect Git and Mercurial to continue up the adoption path as DVCS become more appealing. Subversion will hold strong given its centralized architecture, which many organizations prefer for the reasons pointed out above. I expect each of these 3 systems (SVN, Git, and Hg) to live happily along side each other filling different needs amongst developers, much like the databases of old.
What VCS to Choose?
If you’re new to version control make a decision based on the system alone. You should consider what type of software you’re developing (open source, proprietary, small or large project), what development practices you’re using, and what internal security policies exist in your organization. Your answers will help lead you down the path to the best VCS for your project.
Fig 1: Graph showing the number of new projects created each month for each VCS. Data sourced from Codesion.com
Fig 2: VCS usage patterns across a variety of systems. Source: Jeffrey Hammond, Forrester research