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.
8. Stream-based automated branching: Sufficient mechanisms are provided by the CM tool so that branching is not overloaded and can be used to support stream-based development, where predominantly, there is a single branch (or at least a small fixed number of branches) per development stream.
9. Change package-based CM model and processes: The CM tool not only supports change packages, but the entire process embedded in the tool supports the change model as well.
10. Change-based promotion model: There is a change-based promotion model which is used to drive promotion of changes through the system. This can be used to automate the build process by harvesting changes at a given promotion level for including into a nightly build.
11. Automatic build/Make/ANT file generation: Ideally, a 3G CM tool, supports the automatic generation of build and Make files.
12. Workspace synchronization/rebasing automation: Workspace synchronization is automated from a given user initiation. This may involve some user interaction to resolve merge conflicts.
13. Interactive build/release comparisons: The user interface allows the comparison of builds and/or releases from the perspective of change packages, source code differences, problem/feature differences, and requirements addressed. It should be possible to summarize and zoom in to such content/differences.
14. Support for multiple baseline bulk-loading: Loading of multiple baselines of data from the pre-existing CM tool is supported. As such, the tool does not have to be used only going forward, but can replace virtually all usage of pre-existing tools.
15. Data filtering/find on data browsers: Data browsers within the tool support some level of filtering or find operation
16. Queued exclusive checkouts: Exclusive checkouts can be queued in the case that a file is already checked out.
17. Eclipse integration: A 3G tool should support integration with Eclipse development environments.
18. Rapid performance: A 3G CM tool must be responsive. It must be possible to use it during meetings without delaying proceedings. A poor performing tool dramatically reduces the user-friendliness of the tool, and this is unacceptable for 3G solutions.
19. File system browser integration: At some level, it should be possible to view file revisions in the repository directly from the operating system platform. Typically, 3G capability might be restricted to a file explorer view, or might automatically mirror various CM configurations in real file system directories.
20. Formal support of stream based development: A 3G tool must permit a natural development cycle which meshes with the marketing releases of the products under development. As most products follow a repetitive release cycle, the CM tool must support an organization that clearly map development efforts, planning data, and file branches onto the streams of release development.
21. Minimizing branch/merge, elimination of labeling: Branching and merging is rationalized in a 3G tool by the introduction of first order objects and mechanisms which support various CM operations without the need to use branching. Branching should be primarily reserved for parallel development (ideally, parallel development streams only), providing an intuitive branching strategy. Labeling on branches, changes, file revisions, etc. are now inferred from user context, user operations and traceability data rather than through a manual labeling technique. All labels are now automatically supplied by the tool.
22. Integrated process workflow capability: The statue-based process model of a 2G tool is expanded to full state-based object flow, with roles, permissions, rules, triggers and tracking, and to work flow capabilities across objects.
23. Access control beyond file system: Fine grained access control is provided based on roles defined in the CM tool. This goes beyond the traditional file system (owner, group, world) access control, to very specific role-based, and even user-based, permissions.