SlideShare ist ein Scribd-Unternehmen logo
1 von 38
Downloaden Sie, um offline zu lesen
trunk	
  based	
  development	
  
                 	
  
                   a.k.a.	
  
      branch	
  by	
  abstrac-on	
  
             feature	
  toggles	
  
              feature	
  flags	
  
               feature	
  bits	
  
               latent	
  code	
  
                     …	
  
                   	
  
                   	
  
             Carlos	
  Lopes	
  
            ThoughtWorks	
  
the	
  problem	
  
different	
  streams,	
  
 same	
  codebase	
  
the	
  solu4on?	
  
branches!	
  
?!	
  
merge	
  hell	
  
Jon	
  Wolter	
  
seman-c	
  conflicts	
  
regressions	
  
undeployable	
  code	
  
and	
  so	
  on	
  …	
  
so	
  …	
  
branch	
  by	
  source	
  control	
  
branch	
  by	
  abstrac4on	
  
why?	
  
bye	
  merge	
  hell	
  
deployable	
  at	
  [almost]	
  any-me	
  
understanding	
  
boCom	
  line	
  …	
  
but	
  …	
  
it	
  has	
  its	
  own	
  limita-ons,	
  
             like	
  anything	
  
so	
  …	
  when	
  to	
  branch?	
  
releases	
  
Paul	
  Hammant	
  
ok	
  ok	
  ok	
  
…	
  but	
  how?	
  
maybe	
  next	
  -me	
  
now	
  what?	
  

    Stacy	
  Curl	
  –	
  Branching	
  by	
  Abstrac-on	
  
   Paul	
  Hammant	
  –	
  Branch	
  by	
  Abstrac-on	
  
Jonathan	
  Wolter	
  –	
  Trunk	
  Based	
  Development	
  
     Lucas	
  Ward	
  –	
  SCM	
  Maturity	
  Model	
  
    Erik	
  Sowa	
  and	
  Rob	
  Loh	
  –	
  Feature	
  Bits	
  
                               	
  
                               …	
  
                               	
  
perhaps	
  a	
  more	
  detailed	
  presenta-on	
  on	
  the	
  
                         subject?!?!?!	
  
thanks!	
  
more	
  info	
  
some	
  references	
  

 hCp://digital-­‐compulsion.blogspot.com/2007/04/
          branching-­‐by-­‐abstrac-on.html	
  
hCp://jawspeak.com/tag/trunk-­‐based-­‐development/	
  
         hCp://paulhammant.com/blog/
            branch_by_abstrac-on.html	
  
 hCp://mar-nfowler.com/bliki/FeatureBranch.html	
  
 hCp://mar-nfowler.com/bliki/FeatureToggle.html	
  
hCp://www.lucasward.net/2010/02/maturity-­‐model-­‐
          for-­‐source-­‐control-­‐scmm.html	
  
                            	
  
                            	
  
don't	
  separate	
  differing	
  concerns	
  by	
  using	
  a	
  VCS,	
  
              use	
  an	
  abstrac-on	
  instead	
  


                                                                Stacy	
  Curl	
  
“feature	
  branching	
  is	
  a	
  poor	
  man's	
  modular	
  architecture,	
  
instead	
  of	
  building	
  systems	
  with	
  the	
  ability	
  to	
  easy	
  swap	
  in	
  
   and	
  out	
  features	
  at	
  run-me/deploy-me	
  they	
  couple	
  
themselves	
  to	
  the	
  source	
  control	
  providing	
  this	
  mechanism	
  
                       through	
  manual	
  merging”	
  
                                         	
  
                                                                                Dan	
  Bodart	
  
Jon	
  Wolter	
  
Jon	
  Wolter	
  

Weitere ähnliche Inhalte

Ähnlich wie Trunk Based Development

Mind the Gap: Designing in the Space Between Devices
Mind the Gap: Designing in the Space Between DevicesMind the Gap: Designing in the Space Between Devices
Mind the Gap: Designing in the Space Between DevicesFuture Insights
 
How to survive the JavaScript apocalypse
How to survive the JavaScript apocalypseHow to survive the JavaScript apocalypse
How to survive the JavaScript apocalypsePóth Attila
 
Recipes for Continuous Delivery (ThoughtWorks Geeknight)
Recipes for Continuous Delivery (ThoughtWorks Geeknight)Recipes for Continuous Delivery (ThoughtWorks Geeknight)
Recipes for Continuous Delivery (ThoughtWorks Geeknight)Gurpreet Luthra
 
When is something overflowing
When is something overflowingWhen is something overflowing
When is something overflowingPeter Hlavaty
 
CONFidence 2015: when something overflowing... - Peter Hlavaty
CONFidence 2015: when something overflowing... - Peter HlavatyCONFidence 2015: when something overflowing... - Peter Hlavaty
CONFidence 2015: when something overflowing... - Peter HlavatyPROIDEA
 
[Defcon24] Introduction to the Witchcraft Compiler Collection
[Defcon24] Introduction to the Witchcraft Compiler Collection[Defcon24] Introduction to the Witchcraft Compiler Collection
[Defcon24] Introduction to the Witchcraft Compiler CollectionMoabi.com
 
Corwin on Containers
Corwin on ContainersCorwin on Containers
Corwin on ContainersCorwin Brown
 
From Code to the Monkeys: Continuous Delivery at Netflix
From Code to the Monkeys: Continuous Delivery at NetflixFrom Code to the Monkeys: Continuous Delivery at Netflix
From Code to the Monkeys: Continuous Delivery at NetflixDianne Marsh
 
Your Goat Anti-Fragiled My Snowflake! Demystifying DevOps Jargon (30 minute v...
Your Goat Anti-Fragiled My Snowflake! Demystifying DevOps Jargon (30 minute v...Your Goat Anti-Fragiled My Snowflake! Demystifying DevOps Jargon (30 minute v...
Your Goat Anti-Fragiled My Snowflake! Demystifying DevOps Jargon (30 minute v...Clinton Wolfe
 
Your Goat Anti-Fragiled My SnowFlake! Demystifying DevOps Jargon
Your Goat Anti-Fragiled My SnowFlake! Demystifying DevOps JargonYour Goat Anti-Fragiled My SnowFlake! Demystifying DevOps Jargon
Your Goat Anti-Fragiled My SnowFlake! Demystifying DevOps JargonClinton Wolfe
 
Clojure Conj 2014 - Paradigms of core.async - Julian Gamble
Clojure Conj 2014 - Paradigms of core.async - Julian GambleClojure Conj 2014 - Paradigms of core.async - Julian Gamble
Clojure Conj 2014 - Paradigms of core.async - Julian GambleJulian Gamble
 
Windows Kernel Exploitation : This Time Font hunt you down in 4 bytes
Windows Kernel Exploitation : This Time Font hunt you down in 4 bytesWindows Kernel Exploitation : This Time Font hunt you down in 4 bytes
Windows Kernel Exploitation : This Time Font hunt you down in 4 bytesPeter Hlavaty
 
Introduction to Xamarin.Forms
Introduction to Xamarin.FormsIntroduction to Xamarin.Forms
Introduction to Xamarin.FormsBrad Pillow
 
Devoxx France 2013 Cloud Best Practices
Devoxx France 2013 Cloud Best PracticesDevoxx France 2013 Cloud Best Practices
Devoxx France 2013 Cloud Best PracticesEric Bottard
 
Teaching Elephants to Dance (Federal Audience): A Developer's Journey to Digi...
Teaching Elephants to Dance (Federal Audience): A Developer's Journey to Digi...Teaching Elephants to Dance (Federal Audience): A Developer's Journey to Digi...
Teaching Elephants to Dance (Federal Audience): A Developer's Journey to Digi...Burr Sutter
 
bol.com Dutch Container Day presentation
bol.com Dutch Container Day presentationbol.com Dutch Container Day presentation
bol.com Dutch Container Day presentationMaarten Dirkse
 
Dependency injection
Dependency injectionDependency injection
Dependency injectionhousecor
 
Evolution of the Software Development Process at Digital Natives
Evolution of the Software Development Process at Digital NativesEvolution of the Software Development Process at Digital Natives
Evolution of the Software Development Process at Digital NativesZsolt Fabok
 
Evolution of the Software Development Process ad Digital Natives
Evolution of the Software Development Process ad Digital NativesEvolution of the Software Development Process ad Digital Natives
Evolution of the Software Development Process ad Digital NativesDigital Natives
 

Ähnlich wie Trunk Based Development (20)

Mind the Gap: Designing in the Space Between Devices
Mind the Gap: Designing in the Space Between DevicesMind the Gap: Designing in the Space Between Devices
Mind the Gap: Designing in the Space Between Devices
 
How to survive the JavaScript apocalypse
How to survive the JavaScript apocalypseHow to survive the JavaScript apocalypse
How to survive the JavaScript apocalypse
 
Recipes for Continuous Delivery (ThoughtWorks Geeknight)
Recipes for Continuous Delivery (ThoughtWorks Geeknight)Recipes for Continuous Delivery (ThoughtWorks Geeknight)
Recipes for Continuous Delivery (ThoughtWorks Geeknight)
 
When is something overflowing
When is something overflowingWhen is something overflowing
When is something overflowing
 
CONFidence 2015: when something overflowing... - Peter Hlavaty
CONFidence 2015: when something overflowing... - Peter HlavatyCONFidence 2015: when something overflowing... - Peter Hlavaty
CONFidence 2015: when something overflowing... - Peter Hlavaty
 
[Defcon24] Introduction to the Witchcraft Compiler Collection
[Defcon24] Introduction to the Witchcraft Compiler Collection[Defcon24] Introduction to the Witchcraft Compiler Collection
[Defcon24] Introduction to the Witchcraft Compiler Collection
 
Corwin on Containers
Corwin on ContainersCorwin on Containers
Corwin on Containers
 
From Code to the Monkeys: Continuous Delivery at Netflix
From Code to the Monkeys: Continuous Delivery at NetflixFrom Code to the Monkeys: Continuous Delivery at Netflix
From Code to the Monkeys: Continuous Delivery at Netflix
 
Your Goat Anti-Fragiled My Snowflake! Demystifying DevOps Jargon (30 minute v...
Your Goat Anti-Fragiled My Snowflake! Demystifying DevOps Jargon (30 minute v...Your Goat Anti-Fragiled My Snowflake! Demystifying DevOps Jargon (30 minute v...
Your Goat Anti-Fragiled My Snowflake! Demystifying DevOps Jargon (30 minute v...
 
Your Goat Anti-Fragiled My SnowFlake! Demystifying DevOps Jargon
Your Goat Anti-Fragiled My SnowFlake! Demystifying DevOps JargonYour Goat Anti-Fragiled My SnowFlake! Demystifying DevOps Jargon
Your Goat Anti-Fragiled My SnowFlake! Demystifying DevOps Jargon
 
Clojure Conj 2014 - Paradigms of core.async - Julian Gamble
Clojure Conj 2014 - Paradigms of core.async - Julian GambleClojure Conj 2014 - Paradigms of core.async - Julian Gamble
Clojure Conj 2014 - Paradigms of core.async - Julian Gamble
 
Windows Kernel Exploitation : This Time Font hunt you down in 4 bytes
Windows Kernel Exploitation : This Time Font hunt you down in 4 bytesWindows Kernel Exploitation : This Time Font hunt you down in 4 bytes
Windows Kernel Exploitation : This Time Font hunt you down in 4 bytes
 
Introduction to Xamarin.Forms
Introduction to Xamarin.FormsIntroduction to Xamarin.Forms
Introduction to Xamarin.Forms
 
Kotlin everywhere
Kotlin everywhereKotlin everywhere
Kotlin everywhere
 
Devoxx France 2013 Cloud Best Practices
Devoxx France 2013 Cloud Best PracticesDevoxx France 2013 Cloud Best Practices
Devoxx France 2013 Cloud Best Practices
 
Teaching Elephants to Dance (Federal Audience): A Developer's Journey to Digi...
Teaching Elephants to Dance (Federal Audience): A Developer's Journey to Digi...Teaching Elephants to Dance (Federal Audience): A Developer's Journey to Digi...
Teaching Elephants to Dance (Federal Audience): A Developer's Journey to Digi...
 
bol.com Dutch Container Day presentation
bol.com Dutch Container Day presentationbol.com Dutch Container Day presentation
bol.com Dutch Container Day presentation
 
Dependency injection
Dependency injectionDependency injection
Dependency injection
 
Evolution of the Software Development Process at Digital Natives
Evolution of the Software Development Process at Digital NativesEvolution of the Software Development Process at Digital Natives
Evolution of the Software Development Process at Digital Natives
 
Evolution of the Software Development Process ad Digital Natives
Evolution of the Software Development Process ad Digital NativesEvolution of the Software Development Process ad Digital Natives
Evolution of the Software Development Process ad Digital Natives
 

Mehr von Carlos Lopes

Multiple projects, different goals, one thing in common: the codebase!
Multiple projects, different goals, one thing in common: the codebase!Multiple projects, different goals, one thing in common: the codebase!
Multiple projects, different goals, one thing in common: the codebase!Carlos Lopes
 
The Power of Retrospectives
The Power of RetrospectivesThe Power of Retrospectives
The Power of RetrospectivesCarlos Lopes
 
Gambi Design Patterns
Gambi Design PatternsGambi Design Patterns
Gambi Design PatternsCarlos Lopes
 
Trunk Based Development Demystified
Trunk Based Development DemystifiedTrunk Based Development Demystified
Trunk Based Development DemystifiedCarlos Lopes
 
Trunk Based Development Explored
Trunk Based Development ExploredTrunk Based Development Explored
Trunk Based Development ExploredCarlos Lopes
 
.net code: some ideas to improve yours
.net code: some ideas to improve yours.net code: some ideas to improve yours
.net code: some ideas to improve yoursCarlos Lopes
 
The .NET Platform - A Brief Overview
The .NET Platform - A Brief OverviewThe .NET Platform - A Brief Overview
The .NET Platform - A Brief OverviewCarlos Lopes
 
XP In the Real World
XP In the Real WorldXP In the Real World
XP In the Real WorldCarlos Lopes
 

Mehr von Carlos Lopes (10)

Multiple projects, different goals, one thing in common: the codebase!
Multiple projects, different goals, one thing in common: the codebase!Multiple projects, different goals, one thing in common: the codebase!
Multiple projects, different goals, one thing in common: the codebase!
 
Cognitive Biases
Cognitive BiasesCognitive Biases
Cognitive Biases
 
The Power of Retrospectives
The Power of RetrospectivesThe Power of Retrospectives
The Power of Retrospectives
 
Gambi Design Patterns
Gambi Design PatternsGambi Design Patterns
Gambi Design Patterns
 
Trunk Based Development Demystified
Trunk Based Development DemystifiedTrunk Based Development Demystified
Trunk Based Development Demystified
 
Trunk Based Development Explored
Trunk Based Development ExploredTrunk Based Development Explored
Trunk Based Development Explored
 
.net code: some ideas to improve yours
.net code: some ideas to improve yours.net code: some ideas to improve yours
.net code: some ideas to improve yours
 
10 Years Of XP
10 Years Of XP10 Years Of XP
10 Years Of XP
 
The .NET Platform - A Brief Overview
The .NET Platform - A Brief OverviewThe .NET Platform - A Brief Overview
The .NET Platform - A Brief Overview
 
XP In the Real World
XP In the Real WorldXP In the Real World
XP In the Real World
 

Trunk Based Development