Git Without Branches -Simple, Smooth, ScalableDefusing the Git Complexity BombbyPieter Hintjens, CEO, iMatixBerlin Buzzwords 2013, 3 June, 2013
Git is easy...... once you understand that a gitbranch is just a folded five-dimensional lepton space that has adetached history with no interveningcache.
Git makes me feel stupid● (I love git... but)● Inconsistent and arbitrary commands● Too many concepts to learn● Too many ways to make mistakes● Too much space for opinion● Every team has to invent a strategy
Git-flow is a popular strategy● Has base branches (master, develop)● Has feature branches● Has release branches● Has hotfix branches● Has support branches● Has its own git extensions● Is this making life simpler?
Complexity● Engineers just enjoy making stuff● Complexity makes us feel stupid● We make mistakes● We lose confidence● We fight over “unicorn policies”● Outcome: projects that dont scale
The Git Complexity Bomb● Branching is a poor solution for poor processes● Complexity oriented design & trash orienteddesign● The process becomes harder to fix● You cant fix just part of this picture● Defusing the bomb needs a holistic intervention
SimplicitySome quotes from my favorite author:● “Simplicity beats functionality, every time”● “If you cant understand it on a cold Mondaymorning before coffee, its too complex!”● “Design by removing problems, not addingfeatures”
Simplicity Oriented Design● Small patches to precise problems● Fork + pull request for every single patch● Contributor-maintainer ping-pong● Accuracy over speed● Community over code● Bundled up as C4.1 protocol
In Practice● Development repo has 1 branch = master● Pull requests always applied to master● Travis CI for builds & regression tests● Stable releases are forked off● Cherry pick fixes from master to stable
Branches vs. Forks● How complex is the organization?● Whats the change latency?● What is the learning curve for newcomers?● How many ways can we screw up?● How much upfront coordination do we need?
Branches vs. Forks● Who owns what we make?● Can our agreements survive arguments?● How safe is my code from your errors?● How visible is this project?● How large can the project scale?
Does it work?● We switched ØMQ in Dec 2011 after much talk● Initial reactions: mixed and apprehensive● After 18 months, ~70 contributors (from 2-3)● Dev master is perfect most of the time● Community is happy, and we use this widely● Easy to learn, and smooth to drive
Conclusions● Git branches are part of a “complexity bomb”that may be damaging your projects● By switching to a better development processyou eliminate the need for branches● The result is a simpler, kinder Git that is mucheasier to learn, and safer to use● And that gives you larger, more successfulprojects
If you want to try this● Read C4.1(rfc.zeromq.org/spec:22)● Look at a project thatuses it● Read my “ZeroMQ”book (OReilly),Chapter 6
Thanks!● See you here tomorrow at 12pm for anexplanation on how were doing security forZeroMQ● Email me: firstname.lastname@example.org● Twitter: @hintjens● Blog: hintjens.com