SlideShare une entreprise Scribd logo
1  sur  15
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

Contenu connexe

En vedette

Fosdem 2009
Fosdem 2009Fosdem 2009
Fosdem 2009pieterh
 
CurveZMQ, ZMTP and other Dubious Characters
CurveZMQ, ZMTP and other Dubious CharactersCurveZMQ, ZMTP and other Dubious Characters
CurveZMQ, ZMTP and other Dubious Characterspieterh
 
ZeroMQ: Super Sockets - by J2 Labs
ZeroMQ: Super Sockets - by J2 LabsZeroMQ: Super Sockets - by J2 Labs
ZeroMQ: Super Sockets - by J2 LabsJames Dennis
 
Software Architecture over ZeroMQ
Software Architecture over ZeroMQSoftware Architecture over ZeroMQ
Software Architecture over ZeroMQpieterh
 
RestMS Introduction
RestMS IntroductionRestMS Introduction
RestMS Introductionpieterh
 
Build reliable, traceable, distributed systems with ZeroMQ
Build reliable, traceable, distributed systems with ZeroMQBuild reliable, traceable, distributed systems with ZeroMQ
Build reliable, traceable, distributed systems with ZeroMQRobin Xiao
 
FOSDEM 2011 - 0MQ
FOSDEM 2011 - 0MQFOSDEM 2011 - 0MQ
FOSDEM 2011 - 0MQpieterh
 
Europycon2011: Implementing distributed application using ZeroMQ
Europycon2011: Implementing distributed application using ZeroMQEuropycon2011: Implementing distributed application using ZeroMQ
Europycon2011: Implementing distributed application using ZeroMQfcrippa
 
ZeroMQ Is The Answer
ZeroMQ Is The AnswerZeroMQ Is The Answer
ZeroMQ Is The AnswerIan Barber
 
Overview of ZeroMQ
Overview of ZeroMQOverview of ZeroMQ
Overview of ZeroMQpieterh
 

En vedette (10)

Fosdem 2009
Fosdem 2009Fosdem 2009
Fosdem 2009
 
CurveZMQ, ZMTP and other Dubious Characters
CurveZMQ, ZMTP and other Dubious CharactersCurveZMQ, ZMTP and other Dubious Characters
CurveZMQ, ZMTP and other Dubious Characters
 
ZeroMQ: Super Sockets - by J2 Labs
ZeroMQ: Super Sockets - by J2 LabsZeroMQ: Super Sockets - by J2 Labs
ZeroMQ: Super Sockets - by J2 Labs
 
Software Architecture over ZeroMQ
Software Architecture over ZeroMQSoftware Architecture over ZeroMQ
Software Architecture over ZeroMQ
 
RestMS Introduction
RestMS IntroductionRestMS Introduction
RestMS Introduction
 
Build reliable, traceable, distributed systems with ZeroMQ
Build reliable, traceable, distributed systems with ZeroMQBuild reliable, traceable, distributed systems with ZeroMQ
Build reliable, traceable, distributed systems with ZeroMQ
 
FOSDEM 2011 - 0MQ
FOSDEM 2011 - 0MQFOSDEM 2011 - 0MQ
FOSDEM 2011 - 0MQ
 
Europycon2011: Implementing distributed application using ZeroMQ
Europycon2011: Implementing distributed application using ZeroMQEuropycon2011: Implementing distributed application using ZeroMQ
Europycon2011: Implementing distributed application using ZeroMQ
 
ZeroMQ Is The Answer
ZeroMQ Is The AnswerZeroMQ Is The Answer
ZeroMQ Is The Answer
 
Overview of ZeroMQ
Overview of ZeroMQOverview of ZeroMQ
Overview of ZeroMQ
 

Similaire à Git Without Branches - Simple, Smooth, Scalable

Getting Started With Git and GitHub & Unfolding Opportunities in Open Source
 Getting Started With Git and GitHub & Unfolding Opportunities in Open Source  Getting Started With Git and GitHub & Unfolding Opportunities in Open Source
Getting Started With Git and GitHub & Unfolding Opportunities in Open Source Ashutosh Singh
 
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 monorepoGit 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 monorepoGina Bustos
 
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 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 Perforce
 
Pull requests do's and don'ts
Pull requests do's and don'tsPull requests do's and don'ts
Pull requests do's and don'tsArie Bregman
 
Modern source and_version_control_with_git
Modern source and_version_control_with_gitModern source and_version_control_with_git
Modern source and_version_control_with_gitChristian Couder
 
Software Engineering Primer
Software Engineering PrimerSoftware Engineering Primer
Software Engineering PrimerGeorg Buske
 
Devops, Secops, Opsec, DevSec *ops *.* ?
Devops, Secops, Opsec, DevSec *ops *.* ?Devops, Secops, Opsec, DevSec *ops *.* ?
Devops, Secops, Opsec, DevSec *ops *.* ?Kris Buytaert
 
Post-Agile Methodologies and all that Jazz
Post-Agile Methodologies and all that JazzPost-Agile Methodologies and all that Jazz
Post-Agile Methodologies and all that JazzStojan Peshov
 
Git Branching – the battle of the ages
Git Branching – the battle of the agesGit Branching – the battle of the ages
Git Branching – the battle of the agesJasmin Fluri
 
Picking the right architecture and sticking to it
Picking the right architecture and sticking to itPicking the right architecture and sticking to it
Picking the right architecture and sticking to itPetter Holmström
 
Nimble - iOS dependency management
Nimble - iOS dependency managementNimble - iOS dependency management
Nimble - iOS dependency managementNimble
 
Devops Devops Devops, at Froscon
Devops Devops Devops, at FrosconDevops Devops Devops, at Froscon
Devops Devops Devops, at FrosconKris Buytaert
 
Git Things Done
Git Things DoneGit Things Done
Git Things DoneFITC
 
Introduction to git and stash
Introduction to git and stashIntroduction to git and stash
Introduction to git and stashXpand IT
 
DockerCon US 2016 - Scaling Open Source operations
DockerCon US 2016 - Scaling Open Source operationsDockerCon US 2016 - Scaling Open Source operations
DockerCon US 2016 - Scaling Open Source operationsArnaud Porterie
 

Similaire à Git Without Branches - Simple, Smooth, Scalable (20)

Git intro fajar muslim
Git intro fajar muslimGit intro fajar muslim
Git intro fajar muslim
 
Git & Code review
Git & Code reviewGit & Code review
Git & Code review
 
Getting Started With Git and GitHub & Unfolding Opportunities in Open Source
 Getting Started With Git and GitHub & Unfolding Opportunities in Open Source  Getting Started With Git and GitHub & Unfolding Opportunities in Open Source
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 monorepoGit 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
 
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 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
Pull requests do's and don'tsPull requests do's and don'ts
Pull requests do's and don'ts
 
Modern source and_version_control_with_git
Modern source and_version_control_with_gitModern source and_version_control_with_git
Modern source and_version_control_with_git
 
GIT AND GITHUB (1).pptx
GIT AND GITHUB (1).pptxGIT AND GITHUB (1).pptx
GIT AND GITHUB (1).pptx
 
Software Engineering Primer
Software Engineering PrimerSoftware Engineering Primer
Software Engineering Primer
 
Devops, Secops, Opsec, DevSec *ops *.* ?
Devops, Secops, Opsec, DevSec *ops *.* ?Devops, Secops, Opsec, DevSec *ops *.* ?
Devops, Secops, Opsec, DevSec *ops *.* ?
 
Let's talk FOSS!
Let's talk FOSS!Let's talk FOSS!
Let's talk FOSS!
 
Post-Agile Methodologies and all that Jazz
Post-Agile Methodologies and all that JazzPost-Agile Methodologies and all that Jazz
Post-Agile Methodologies and all that Jazz
 
Agile team workflow
Agile team workflowAgile team workflow
Agile team workflow
 
Git Branching – the battle of the ages
Git Branching – the battle of the agesGit Branching – the battle of the ages
Git Branching – the battle of the ages
 
Picking the right architecture and sticking to it
Picking the right architecture and sticking to itPicking the right architecture and sticking to it
Picking the right architecture and sticking to it
 
Nimble - iOS dependency management
Nimble - iOS dependency managementNimble - iOS dependency management
Nimble - iOS dependency management
 
Devops Devops Devops, at Froscon
Devops Devops Devops, at FrosconDevops Devops Devops, at Froscon
Devops Devops Devops, at Froscon
 
Git Things Done
Git Things DoneGit Things Done
Git Things Done
 
Introduction to git and stash
Introduction to git and stashIntroduction to git and stash
Introduction to git and stash
 
DockerCon US 2016 - Scaling Open Source operations
DockerCon US 2016 - Scaling Open Source operationsDockerCon US 2016 - Scaling Open Source operations
DockerCon US 2016 - Scaling Open Source operations
 

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