Back to [[conference:committee:2015-proposals]]\\ \\ **Title**: Archipelagos in Git\\ **Proposer**: [[2015: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\\ \\ \\