Context: Multiple development pairs in a team are working on a code base simultaneously and need to periodically (hourly to daily; ContinuousIntegration) integrate their code with the main code base. Forces: Each integration should begin and end with clean (GreenBar) code. If two pairs are integrating simultaneously, they can break each other's tests and cause confusion. Development environments can diverge, so it is useful to have an authentic standard platform so you don't hear "The tests all passed for ''me''! What's ''your'' problem?" Resolution: Serialize integration by making developers go to the IntegrationMachine to integrate their code and run tests. The software configuration on the IntegrationMachine is treated as a standard for the development environment, to avoid divergence in developers' workstations from being an issue. Variation: An IntegrationToken, which serializes commits to the code base without providing an authentic configuration base. ("I need to integrate, who has the Rubber Chicken?") If your development environment is automatically built from a script, maybe YouArentGonnaNeedIt applies to a distinguished integration station. RefactorToPattern form if you feel inclined. From ExtremeProgrammingCorePractices (a support practice). ---- CategoryExtremeProgramming