- First we had no branching support
- Then we had very primitive branching support at the physical level of individual files using funky looking numbers like 188.8.131.52 that were basically 4-level revision numbers
- Then we had better branching support, but still file-based, and it allowed us to use some reasonably readable-looking symbolic names to identify a branch
- Then we has support for branching at the project/product level across the entire configuration item
- Nowadays the better tools (such as AccuRev, ClearCase/UCM, Subversion, OurayCM, SpectrumSCM, Neuma CM+, and others) have "streams"
Streams are, in a sense, giving a view of a codeline that is similar to a web portal. They are a "code portal" that pulls the right sets of elements and their versions into the "view" of the stream and eases the burden of configuration specification and selection by providing us this nice "portal."
So what might be next in the evolution of branches and branching after this notion of "code portal"?
- Will it be in the area of distribution across multiple sites and teams?
- Will it be in the area of coordination, collaboration and workflow?
- Will it be in the area of increasing scale? What would a "stream of streams" look like?
What do you think will be the next steps in the evolution of branching beyond "streams" and what do you think are the trends that will fuel the move in that direction?