Source Code Management Systems
Work Products
Things produced by people by doing work
- Source code, documentation, story cards, user interviews, assets (digital and physical), etc
All work products have value, and should be managed
Because software, source code is often "first among equals"
History of "Source Code" Management (SCM)
Olden Times: Source code management is people. "Manual backups." Paper documents. Change Control Board
Distant past: Some personal tools for SCM, e.g. SCCS, RCS. Still many manual steps. Source code leaves paper behind
Pre-modern: Tools for group SCM, e.g. ClearCase, Perforce, CVS, SVN. Way less paper. CCBs start to exit. Other work products increasingly managed
Modern: Tools for distributed SCM; BitKeeper, Mercurial, Git, etc etc etc. Paper is mostly a memory. CCBs are entirely a memory. Most work products managed
Feature Set For SCM
Change history
Changepoint identification ("version")
Concurrent management of related stuff ("version")
Parallel development: "Branching" and "merging"
Synchronization / change control for team development
Nice-To-Haves For SCM
Reliability against accidents and tampering
Performance
User experience
Web SCM
Quality SCM "dashboard"
Integrated "affordances" (things to make life easier)
- Issue Tracking
- Collaboration tools e.g. wiki
- Project management tools
Github, Gitlab, some pre-modern stuff