In his CM: the Next Generation series, Joe Farah gives us a glimpse into the trends that CM experts will need to tackle and master based upon industry trends and future technology challenges.
The technology view is to be expected. Vendors move at different speeds and have differing visions. But on the user side, it's a bit more difficult to understand. One would expect that if you could find tools that would lower your total cost of operation and free up resources for your core business needs, the path would be obvious. However, a significant portion of new CM installations continue to be on the low-end side of things. The key reason in our opinion: perceived complexity. CM vendors may be responsible for this perception, especially because there are a number of complex tools out there - the total cost of ownership isn't what is advertised, or the initial outlay to reach these targets are far too great and incur significant risk. That being said, there are also a number of tools out there that reduce complexity significantly, including those which target the ALM and Enterprise CM markets.
I've been heavily involved in the CM industry for over a quarter century. The first generation of CM tools were version control and build support tool with features such as baseline reproducibility and delta/difference and merge capabilities. That finally gave way to a second generation, starting in the 1990s for the most part. Change Management was recognized, at least by a critical mass, as a necessary component. Distributed development was also recognized. Other major advances included workspace support, scalability, cross-platform support, graphical user interfaces, directory revisioning, branch and label management, the addition of problem/issue tracking, context-based views, and the introduction of process support. However, with this significant second generation expansion came significant overhead.
Supporting scalability, distributed development, label management and process became, not just a full time job, but a task for a CM team to take on. The tools that were supposed to be simplifying development management and improving quality came at quite a cost to the project. As such, today's perception: only some companies can afford to "do it right". And that's where many high end tools stand today. They are second generation tools requiring significant infrastructure to support.
There are at the same time a number of tools, which, though they may not provide all of the capabilities required to count them as full second generation tools, have side-stepped the infrastructure and overhead. They have good technical solutions which are scalable, and perhaps even support some form of distributed development. Typically they fall short on the process and CM maturity side. Maybe they lack directory revisioning or change packaging, or rely on heavy infrastructure add-ons to permit these. Perhaps they focus on the version and build management space but fail to address process. There are some good ideas out there: generic process engines; highly-scalable solutions; small footprint solutions; better branching/stream support. But a new feature or two does not push one solution ahead of the pack, and does not constitute the next generation of CM.