SlideShare a Scribd company logo
Git Without Branches -
Simple, Smooth, Scalable
Defusing the Git Complexity Bomb
by
Pieter Hintjens, CEO, iMatix
Berlin Buzzwords 2013, 3 June, 2013
Git is easy...
... once you understand that a git
branch is just a folded five-
dimensional lepton space that has a
detached history with no intervening
cache.
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 don't scale
The Git Complexity Bomb
● Branching is a poor solution for poor processes
● Complexity oriented design & trash oriented
design
● The process becomes harder to fix
● You can't fix just part of this picture
● Defusing the bomb needs a holistic intervention
Simplicity
Some quotes from my favorite author:
● “Simplicity beats functionality, every time”
● “If you can't understand it on a cold Monday
morning before coffee, it's too complex!”
● “Design by removing problems, not adding
features”
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?
● What's 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 process
you eliminate the need for branches
● The result is a simpler, kinder Git that is much
easier to learn, and safer to use
● And that gives you larger, more successful
projects
If you want to try this
● Read C4.1
(rfc.zeromq.org/spec:
22)
● Look at a project that
uses it
● Read my “ZeroMQ”
book (O'Reilly),
Chapter 6
Thanks!
● See you here tomorrow at 12pm for an
explanation on how we're doing security for
ZeroMQ
● Email me: ph@imatix.com
● Twitter: @hintjens
● Blog: hintjens.com

More Related Content

ODP
Revolutionary Open Source
PPTX
Open Source Product Management
PDF
From Head to Binary
PDF
DevOps for Engineers
PDF
How contributing to Open-source made me a better DevOps
PDF
Switch or broker
ODP
Software Architecture using ZeroMQ - techmesh 2012
ODP
Social architecture-101
Revolutionary Open Source
Open Source Product Management
From Head to Binary
DevOps for Engineers
How contributing to Open-source made me a better DevOps
Switch or broker
Software Architecture using ZeroMQ - techmesh 2012
Social architecture-101

Viewers also liked (10)

ODP
Fosdem 2009
ODP
CurveZMQ, ZMTP and other Dubious Characters
PPTX
ZeroMQ: Super Sockets - by J2 Labs
PDF
Software Architecture over ZeroMQ
ODP
RestMS Introduction
PPTX
Build reliable, traceable, distributed systems with ZeroMQ
ODP
FOSDEM 2011 - 0MQ
KEY
Europycon2011: Implementing distributed application using ZeroMQ
PDF
ZeroMQ Is The Answer
ODP
Overview of ZeroMQ
Fosdem 2009
CurveZMQ, ZMTP and other Dubious Characters
ZeroMQ: Super Sockets - by J2 Labs
Software Architecture over ZeroMQ
RestMS Introduction
Build reliable, traceable, distributed systems with ZeroMQ
FOSDEM 2011 - 0MQ
Europycon2011: Implementing distributed application using ZeroMQ
ZeroMQ Is The Answer
Overview of ZeroMQ
Ad

Similar to Git Without Branches - Simple, Smooth, Scalable (20)

PDF
Git intro fajar muslim
PDF
Git & Code review
PDF
Getting Started With Git and GitHub & Unfolding Opportunities in Open Source
PDF
Git in the Enterprise: How to succeed at DevOps using Git and a monorepo
PDF
Git in the Enterprise: How to succeed at DevOps using Git and a monorepo
PPTX
Pull requests do's and don'ts
PDF
Software Engineering Tools and Practices Learn Git
PDF
Modern source and_version_control_with_git
PPTX
GIT AND GITHUB (1).pptx
PPTX
Software Engineering Primer
PDF
Devops, Secops, Opsec, DevSec *ops *.* ?
PDF
Let's talk FOSS!
PPTX
Post-Agile Methodologies and all that Jazz
PDF
Agile team workflow
PPTX
Git Branching – the battle of the ages
PDF
Picking the right architecture and sticking to it
PDF
Nimble - iOS dependency management
PDF
Devops Devops Devops, at Froscon
PDF
Git Things Done
PPT
Introduction to git and stash
Git intro fajar muslim
Git & Code review
Getting Started With Git and GitHub & Unfolding Opportunities in Open Source
Git in the Enterprise: How to succeed at DevOps using Git and a monorepo
Git in the Enterprise: How to succeed at DevOps using Git and a monorepo
Pull requests do's and don'ts
Software Engineering Tools and Practices Learn Git
Modern source and_version_control_with_git
GIT AND GITHUB (1).pptx
Software Engineering Primer
Devops, Secops, Opsec, DevSec *ops *.* ?
Let's talk FOSS!
Post-Agile Methodologies and all that Jazz
Agile team workflow
Git Branching – the battle of the ages
Picking the right architecture and sticking to it
Nimble - iOS dependency management
Devops Devops Devops, at Froscon
Git Things Done
Introduction to git and stash
Ad

Git Without Branches - Simple, Smooth, Scalable

  • 1. Git Without Branches - Simple, Smooth, Scalable Defusing the Git Complexity Bomb by Pieter Hintjens, CEO, iMatix Berlin Buzzwords 2013, 3 June, 2013
  • 2. Git is easy... ... once you understand that a git branch is just a folded five- dimensional lepton space that has a detached history with no intervening cache.
  • 3. 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
  • 4. 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?
  • 5. 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 don't scale
  • 6. The Git Complexity Bomb ● Branching is a poor solution for poor processes ● Complexity oriented design & trash oriented design ● The process becomes harder to fix ● You can't fix just part of this picture ● Defusing the bomb needs a holistic intervention
  • 7. Simplicity Some quotes from my favorite author: ● “Simplicity beats functionality, every time” ● “If you can't understand it on a cold Monday morning before coffee, it's too complex!” ● “Design by removing problems, not adding features”
  • 8. 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
  • 9. 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
  • 10. Branches vs. Forks ● How complex is the organization? ● What's the change latency? ● What is the learning curve for newcomers? ● How many ways can we screw up? ● How much upfront coordination do we need?
  • 11. 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?
  • 12. 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
  • 13. Conclusions ● Git branches are part of a “complexity bomb” that may be damaging your projects ● By switching to a better development process you eliminate the need for branches ● The result is a simpler, kinder Git that is much easier to learn, and safer to use ● And that gives you larger, more successful projects
  • 14. If you want to try this ● Read C4.1 (rfc.zeromq.org/spec: 22) ● Look at a project that uses it ● Read my “ZeroMQ” book (O'Reilly), Chapter 6
  • 15. Thanks! ● See you here tomorrow at 12pm for an explanation on how we're doing security for ZeroMQ ● Email me: ph@imatix.com ● Twitter: @hintjens ● Blog: hintjens.com