Feature branches and toggles in a post-GitHub world
GOTO Chicago 2017 Sam Newman
Feature branches and toggles in a post-GitHub world GOTO Chicago - - PowerPoint PPT Presentation
Feature branches and toggles in a post-GitHub world GOTO Chicago 2017 Sam Newman @gotochi @samnewman Sam Newman & Associates @gotochi @samnewman Sam Newman & Associates (there are no associates) @gotochi @samnewman Building
GOTO Chicago 2017 Sam Newman
@samnewman @gotochi
@samnewman @gotochi
@samnewman @gotochi
@samnewman @gotochi
Sam Newman
DESIGNING FINE-GRAINED SYSTEMS
@samnewman @gotochi
@samnewman @gotochi
@samnewman @gotochi
@samnewman @gotochi
to Banbury Oxford Reading High Wycombe London Marylebone to Luton St Albans London St P
Rugby Milton Keynes Central Watford Junction London Euston Bedford
Wolverton Fenny Stratford Bow Brickhill Woburn Sands Aspley Guise Ridgmont Lidlington Watford North Garston Bricket Wood How Wood Park Street St Albans Abbey Millbrook Stewartby Kempston Hardwick Bedford St Johns Bletchley Leighton Buzzard Cheddington Tring Berkhamsted Hemel Hempstead Apsley Kings Langley Bushey Harrow & Wealdstone Wembley Central k
Coventry Leamington Spa Northampton
Long Buckby Coventry Arena
@samnewman @gotochi
to Banbury Oxford Reading High Wycombe London Marylebone to Luton St Albans London St P
Rugby Milton Keynes Central Watford Junction London Euston Bedford
Wolverton Fenny Stratford Bow Brickhill Woburn Sands Aspley Guise Ridgmont Lidlington Watford North Garston Bricket Wood How Wood Park Street St Albans Abbey Millbrook Stewartby Kempston Hardwick Bedford St Johns Bletchley Leighton Buzzard Cheddington Tring Berkhamsted Hemel Hempstead Apsley Kings Langley Bushey Harrow & Wealdstone Wembley Central k
Coventry Leamington Spa Northampton
Long Buckby Coventry Arena
@samnewman @gotochi
to Banbury Oxford Reading High Wycombe London Marylebone to Luton St Albans London St P
Rugby Milton Keynes Central Watford Junction London Euston Bedford
Wolverton Fenny Stratford Bow Brickhill Woburn Sands Aspley Guise Ridgmont Lidlington Watford North Garston Bricket Wood How Wood Park Street St Albans Abbey Millbrook Stewartby Kempston Hardwick Bedford St Johns Bletchley Leighton Buzzard Cheddington Tring Berkhamsted Hemel Hempstead Apsley Kings Langley Bushey Harrow & Wealdstone Wembley Central k
Coventry Leamington Spa Northampton
Long Buckby Coventry Arena
@samnewman @gotochi
to Banbury Oxford Reading High Wycombe London Marylebone to Luton St Albans London St P
Rugby Milton Keynes Central Watford Junction London Euston Bedford
Wolverton Fenny Stratford Bow Brickhill Woburn Sands Aspley Guise Ridgmont Lidlington Watford North Garston Bricket Wood How Wood Park Street St Albans Abbey Millbrook Stewartby Kempston Hardwick Bedford St Johns Bletchley Leighton Buzzard Cheddington Tring Berkhamsted Hemel Hempstead Apsley Kings Langley Bushey Harrow & Wealdstone Wembley Central k
Coventry Leamington Spa Northampton
Long Buckby Coventry Arena
@samnewman @gotochi
R3
@samnewman @gotochi
R3
@samnewman @gotochi
R3 R4
@samnewman @gotochi
R3 R4
@samnewman @gotochi
R3 R4
@samnewman @gotochi
R3 R4
@samnewman @gotochi
R3 R4
@samnewman @gotochi
https://www.flickr.com/photos/jubilo/6965626176/
@samnewman @gotochi
@samnewman @gotochi
@samnewman @gotochi
@samnewman @gotochi
@samnewman @gotochi
@samnewman @gotochi
@samnewman @gotochi CI Tool
@samnewman @gotochi CI Tool
@samnewman @gotochi CI Tool
@samnewman @gotochi
@samnewman @gotochi
@samnewman @gotochi
@samnewman @gotochi
@samnewman @gotochi
@samnewman @gotochi
@samnewman @gotochi
@samnewman @gotochi
@samnewman @gotochi
…
@samnewman @gotochi
…
@samnewman @gotochi
…
@samnewman @gotochi
…
@samnewman @gotochi
R3 R4
@samnewman @gotochi
R3 R4
@samnewman @gotochi
R3 R4
@samnewman @gotochi
R3 R4
@samnewman @gotochi
@samnewman @gotochi
@samnewman @gotochi
@samnewman @gotochi
@samnewman @gotochi
@samnewman @gotochi
@samnewman @gotochi
Trunk
@samnewman @gotochi
Trunk
@samnewman @gotochi
Trunk F1
@samnewman @gotochi
Trunk F1
@samnewman @gotochi
Trunk F1
@samnewman @gotochi
Trunk F1 F2
@samnewman @gotochi
Trunk F1 F2
@samnewman @gotochi
Trunk F1 F2
@samnewman @gotochi
Trunk F1 F2
@samnewman @gotochi
Trunk F1 F2
@samnewman @gotochi
we are deferring integration!
Trunk F1 F2
@samnewman @gotochi
@samnewman @gotochi
@samnewman @gotochi
@samnewman @gotochi
@samnewman @gotochi
@samnewman @gotochi
err…wat?
@samnewman @gotochi
@samnewman @gotochi
@samnewman @gotochi
Trunk
@samnewman @gotochi
Trunk
@samnewman @gotochi
integrate often…
Trunk
@samnewman @gotochi
integrate often…
Trunk
…fast feedback…
@samnewman @gotochi
integrate often…
Trunk
…fast feedback… …break up merge pain
@samnewman @gotochi
integrate often…
Trunk
…fast feedback… …break up merge pain err…but what about half-finished features?
@samnewman @gotochi
@samnewman @gotochi
@samnewman @gotochi
… super_widget = off …
@samnewman @gotochi
… super_widget = off … … super_widget = on …
@samnewman @gotochi
… super_widget = off … … super_widget = on …
super widget!
@samnewman @gotochi
… super_widget = off … … super_widget = on … $. run -Dsuper_widget=on
super widget!
@samnewman @gotochi
… super_widget = off … … super_widget = on … $. run -Dsuper_widget=on
super widget!
@samnewman @gotochi
But what about changes to existing functionality?
@samnewman @gotochi
@samnewman @gotochi Hypersonic Persistence
Hypersonic
@samnewman @gotochi Hypersonic Persistence
Hypersonic Postgres
@samnewman @gotochi Hypersonic Persistence
Hypersonic Postgres
@samnewman @gotochi Hypersonic Persistence
Hypersonic Postgres
shipping every two weeks…
@samnewman @gotochi Hypersonic Persistence Generic SQL Persistence
Hypersonic Postgres
shipping every two weeks…
@samnewman @gotochi Hypersonic Persistence Persistence Interface Generic SQL Persistence
Hypersonic Postgres
shipping every two weeks…
@samnewman @gotochi Hypersonic Persistence Persistence Interface Generic SQL Persistence
Hypersonic Postgres
shipping every two weeks…
@samnewman @gotochi Hypersonic Persistence Persistence Interface Generic SQL Persistence
Hypersonic Postgres
shipping every two weeks…
@samnewman @gotochi Hypersonic Persistence Persistence Interface Generic SQL Persistence
Hypersonic Postgres
shipping every two weeks…
@samnewman @gotochi Hypersonic Persistence Persistence Interface Generic SQL Persistence
Hypersonic Postgres
shipping every two weeks…
@samnewman @gotochi Persistence Interface Generic SQL Persistence
Postgres
shipping every two weeks…
@samnewman @gotochi
@samnewman @gotochi
@samnewman @gotochi
@samnewman @gotochi
@samnewman @gotochi
@samnewman @gotochi
@samnewman @gotochi
@samnewman @gotochi
@samnewman @gotochi
@samnewman @gotochi
https://trunkbaseddevelopment.com
@samnewman @gotochi
@samnewman @gotochi
@samnewman @gotochi
@samnewman @gotochi
https://www.slideshare.net/jallspaw/ops-metametrics-the-currency-you-pay-for-change-4608108
@samnewman @gotochi Ops Meta-Metrics - John Allspaw
@samnewman @gotochi Ops Meta-Metrics - John Allspaw
@samnewman @gotochi
@samnewman @gotochi
@samnewman @gotochi
@samnewman @gotochi
@samnewman @gotochi
@samnewman @gotochi
@samnewman @gotochi
@samnewman @gotochi
@samnewman @gotochi
@samnewman @gotochi
@samnewman @gotochi
@samnewman @gotochi
@samnewman @gotochi
@samnewman @gotochi
https://github.com/blog/3-oh-yeah-there-s-pull-requests-now
@samnewman @gotochi
https://vimeo.com/2979844
@samnewman @gotochi
https://vimeo.com/2979844
@samnewman @gotochi
http://readwrite.com/2011/06/02/github-has-passed-sourceforge/
@samnewman @gotochi
@samnewman @gotochi
@samnewman @gotochi
@samnewman @gotochi https://www.flickr.com/photos/hackny/8675049276/
@samnewman @gotochi Ops Meta-Metrics - John Allspaw
@samnewman @gotochi
@samnewman @gotochi
@samnewman @gotochi
@samnewman @gotochi
@samnewman @gotochi
@samnewman @gotochi
“Trunk-based development is likely the most controversial practice discussed in this book
@samnewman @gotochi
“Trunk-based development is likely the most controversial practice discussed in this book
[…] However, the data from Puppet Labs’ 2015 State of DevOps Report is clear: trunk-based development predicts higher throughput and better stability, and even higher job satisfaction and lower rates of burnout.“
@samnewman @gotochi
@samnewman @gotochi
“We found that having branches or forks with very short lifetimes (less than a day) before being merged into trunk, and less than three active branches in total, are important aspects
daily basis. “
@samnewman @gotochi
@samnewman @gotochi
@samnewman @gotochi
@samnewman @gotochi
@samnewman @gotochi
Also thanks to Don Clark for the people icons https://commons.wikimedia.org/wiki/File:Gender_neutral.svg CC BY-SA 4.0