2015:archipelagos_in_git
This is an old revision of the document!
Back to 2015-proposals
Title: Archipelagos in Git
Proposer: Matthew Dodkins
Type: Presentation
Duration: 15 mins
Description:
Island: Any piece of subcontinental land that is surrounded by water.
Archipelago: Island chain, is a chain, cluster or collection of islands.
Assumptions:
- Reviewing code is a worthwhile activity
- No one wants to review and/or merge code as their fulltime job
- No one person should bear all that responsibility anyway
- Existing, nonconceptual approaches to the problem of managing the movement of code are quite weak
- Communication is always required and goes a long way to solving many of our problems, but we can't all communicate with everyone all the time on a medium large team
- Metaphors help understand intent
- Sometimes code will need to be shared between teams; it isn't always possible to divide up work by features (although appropriate interfaces help with this)
Basics:
- An 'Island' is considered to be synonymous with a fork/branch or fork/set of branches
- An archipelago is identifiable as a number of islands which are “close” to one another
- Created as a concept to help medium to large teams manage sharing of code between areas of related work and to ease merge pain
- Merging is always difficult; it's a difficult job. Archipelagos don't solve merge problems, but they do simplify them and provide conceptual assistance
- Islands in an archipelago are related to one another purely by virtue of their proximity to one an another. If a fork/branch is close to another, it makes sense to consider it part of the same archipelago
- Pull requesting to the owner of the archipelago simplifies the merge you're dealing with and still allows everyone interested in that archipelago to be party to what's going into it
- Pull requesting the entire archipelago to “wherever the release is going to be made from” helps collate like areas of work for reviewing purposes
Advanced
- Archipelagos can be near or far away from each other sometimes they will want to merge between each other, but this is not particularly desirable unless you combine
- How do we know when to create an archipelago?
- Feature files / executable specification…. where does it fit in?
- Realisations from actual use with several teams totalling 20+ developers
2015/archipelagos_in_git.1427882991.txt.gz · Last modified: 2016/06/11 14:05 (external edit)