The odds-on source code management system (SCM) for many development teams is Subversion. That is changing. The new favorite is Git.
Subversion is a popular SCM system where developers can check in and check out their Java or C++ files, graphics files, models, requirements documents, SQL statements, test cases, libraries, build instructions, security parameters and more. There are many SCM systems available. Some are proprietary and costly; some are free and open source. Some are geared toward fast builds of huge code repositories; others toward fostering rich collaboration between programmers scattered around the world.
(Some people say that SCM means software configuration management. It's the same thing as source code management. Both are lousy phrases. However, source code management, while not strictly accurate because SCM databases contain lots more than source code, does a better job of conveying what an SCM system does than software configuration management. Another synonymous phrase is version control system, because SCM systems keep track of all changes to a software code base.)
For many years, the most popular SCM system was called CVS, the Concurrent Versions System. Created in the mid-1980s, CVS was available free (under the GNU General Public License), easy to set up, easy to administer and fairly reliable. CVS became the default, and still hosts many projects today.
But then came Subversion -- intentionally designed as a successor to CVS. Subversion, which today is a top-level Apache project, is much more scalable and reliable than CVS, while just as easy to manage. Whether hosted on the Web (such as by CollabNet), or run in-house on your own enterprise servers, Subversion began taking off around 2002, and since then has pretty much taken over the world.
Except... now we have Git. Designed in 2005 by Linux founder Linus Torvalds, Git excels as a distributed version control system. It's not only faster than Subversion, but also lets developers work completely offline on local copies of code repository. That's not only more convenient, but also more responsive. The local copies are merged together later in the background. Git is also like lightning when it comes to software builds, which is important for very large projects like the Linux kernel itself. It's reliable and secure. Git is the future.
The future is here today.
If you talk to developers starting new projects, most are choosing Git. I hear developers talk about using Git at least ten times more frequently than I hear them talking about Subversion. (I never hear anyone talk about CVS at all.)
A proof point -- and the inspiration for this analysis -- is the news earlier this week that CollabNet now supports both Git and Subversion as first-class SCM systems within its TeamForge 6.2 collaborative developer tool suite. So what? Well, CollabNet invented Subversion, and even after turning the code over to the Apache Software Foundation, still sells a commercial implementation called Subversion Edge. Yet clearly even the CollabNet honchos see that the market is choosing Git.
Where do you keep your source code?