SlideShare a Scribd company logo
Multiple projects, different 
goals, one thing in 
common: the codebase! 
Carlos Lopes 
@carlosaml
why?
blog.crisp.se
Multiple projects, different goals, one thing in common: the codebase! at AgileDC 2014
Multiple projects, different goals, one thing in common: the codebase! at AgileDC 2014
Jon Wolter
ok
a little story
an online store 
(of whatever)
10
11
12
13
14
15
16
17
18
19
Multiple projects, different goals, one thing in common: the codebase! at AgileDC 2014
21
22
23
24
what’s next?
26
27
28
29
30
now what?
32
Multiple projects, different goals, one thing in common: the codebase! at AgileDC 2014
34
Multiple projects, different goals, one thing in common: the codebase! at AgileDC 2014
HOWEVER
Multiple projects, different goals, one thing in common: the codebase! at AgileDC 2014
38
Multiple projects, different goals, one thing in common: the codebase! at AgileDC 2014
Multiple projects, different goals, one thing in common: the codebase! at AgileDC 2014
Multiple projects, different goals, one thing in common: the codebase! at AgileDC 2014
Multiple projects, different goals, one thing in common: the codebase! at AgileDC 2014
43
merge hell
a LOT going on for 
at least months... 
45
46
47 
big scary merge before a 
big scary release
syntactic conflict 
class BlaBlaBla { 
<<<<<<< HEAD 
public void bla(Bla oldBla, New newBla) { 
oldBla.bla(); 
newBla.newBla(); 
======= 
public void bla(Bla oldBla, Other otherBla) { 
oldBla.bla(); 
otherBla.otherBla(); 
>>>>>>> other commit 
} 
}
semantic conflict 
class BlaBlaBla { 
public void something(Bla bla) { 
<<<<<<< HEAD 
bla = bla.plus(14); 
======= 
bla = bla.minus(7); 
>>>>>>> change 
//other stuff 
} 
}
integration conflicts 
main.jsp: <%@include file="hello.jspf" %> 
trunk: 
new-file.jsp: 
<%@include 
file="hello.jspf" 
%> 
agivenbranch: 
hello.jspf => hey.jspf 
main.jsp: 
<%@include 
file="hey.jspf" %>
and so forth
regressions
however...
the loyalty program 
team learnt 
something...
Multiple projects, different goals, one thing in common: the codebase! at AgileDC 2014
Multiple projects, different goals, one thing in common: the codebase! at AgileDC 2014
merge monkey
Multiple projects, different goals, one thing in common: the codebase! at AgileDC 2014
59
60
continuous 
integration?
62
how many 
pipelines for this? 
63
and how effective 
would they even be?
65
still need to “integrate” 
66
67 
big scary merge
promiscuous integration 
martinfowler.com/bliki/FeatureBranch.html
69
how about 
refactoring?
undeployable code
only trunk was releasable 
at any given time 
72
$$$$$
ok, so what do 
we do?
“Feature branching is a poor man's 
modular architecture, instead of 
building systems with the ability to easy 
swap in and out features at runtime/ 
deploytime they couple themselves to 
the source control providing this 
mechanism through manual merging.” 
Dan Bodart
Multiple projects, different goals, one thing in common: the codebase! at AgileDC 2014
“The bigger the apparent 
reason to branch, the more you 
shouldn’t branch.” 
Jez Humble / David Farley
“Don't separate differing 
concerns by using a VCS, use an 
abstraction instead.” 
Stacy Curl
solutions?
branch by 
source control 
abstraction 
paulhammant.com/blog/branch_by_abstraction.html
Multiple projects, different goals, one thing in common: the codebase! at AgileDC 2014
trunk-based 
development
trunk-based 
development 
shopping cart?
trunk-based 
development 
shopping cart? 
loyalty program?
if (myFeatureIsOn) { 
doSomething(); 
} 
martinfowler.com/bliki/FeatureToggle.html
feature 
toggles/flags/bits
martinfowler.com/bliki/BranchByAbstraction.html
Paul Hammant 
iterative
Paul Hammant 
big bang
enables refactoring 
gowebbaby.com/magento-responsive-design/
91
Multiple projects, different goals, one thing in common: the codebase! at AgileDC 2014
93
always releasable
95
test 
coverage
branching patterns
98
99
100
101
102
paulhammant.com/2013/03/13/facebook-tbd-take-2/
“Feature branching is a poor man's 
modular architecture, instead of 
building systems with the ability to easy 
swap in and out features at runtime/ 
deploytime they couple themselves to 
the source control providing this 
mechanism through manual merging.” 
Dan Bodart
Multiple projects, different goals, one thing in common: the codebase! at AgileDC 2014
questions?

More Related Content

PDF
Trunk Based Development Explored
PDF
Bate-papo Trunk Based Development
PDF
Tbd demystified agiles2011
PDF
Trunk Based Development Demystified
PPTX
Untangling8
PDF
XP In the Real World
PDF
Cognitive Biases
PDF
The .NET Platform - A Brief Overview
Trunk Based Development Explored
Bate-papo Trunk Based Development
Tbd demystified agiles2011
Trunk Based Development Demystified
Untangling8
XP In the Real World
Cognitive Biases
The .NET Platform - A Brief Overview

Viewers also liked (20)

PDF
Refactoring Strategies: Beyond the Basics
PPTX
Application versioning
PPTX
Continuous Delivery Overview
PDF
Trunk Based Development Explored
PDF
Lessons from Deploying an EMR in Rural India
PPTX
Web Vulnerabilities - Building Basic Security Awareness
PDF
Trunk Based Development
PDF
TDD and more than 9000 tries to sell it to a customer
PPTX
How Continuous Delivery and Lean Management Make your DevOps Amazeballs
PDF
Continuous Delivery: Making DevOps Awesome
PDF
Branching Strategies: Feature Branches vs Branch by Abstraction
PDF
Multiple projects, different goals, one thing in common: the codebase!
PDF
Merge hells - Feature Toggles to the rescue
PDF
Feature Toggles On Steroids
PPTX
Trunk Based Development in the Enterprise - Its Relevance and Economics
PDF
Porque Odeio Branches
PDF
Improve the chances of success of your organization with Resilience and Antif...
PDF
Harnessing The Power of CDNs
KEY
Refatoração em Larga Escala
PDF
CI is dead, long live CI
Refactoring Strategies: Beyond the Basics
Application versioning
Continuous Delivery Overview
Trunk Based Development Explored
Lessons from Deploying an EMR in Rural India
Web Vulnerabilities - Building Basic Security Awareness
Trunk Based Development
TDD and more than 9000 tries to sell it to a customer
How Continuous Delivery and Lean Management Make your DevOps Amazeballs
Continuous Delivery: Making DevOps Awesome
Branching Strategies: Feature Branches vs Branch by Abstraction
Multiple projects, different goals, one thing in common: the codebase!
Merge hells - Feature Toggles to the rescue
Feature Toggles On Steroids
Trunk Based Development in the Enterprise - Its Relevance and Economics
Porque Odeio Branches
Improve the chances of success of your organization with Resilience and Antif...
Harnessing The Power of CDNs
Refatoração em Larga Escala
CI is dead, long live CI
Ad

Similar to Multiple projects, different goals, one thing in common: the codebase! at AgileDC 2014 (20)

PDF
Trigger maxl from fdmee
PDF
Building Containers: How Many Ways Are Too Many?
PPTX
Untangling7
PDF
Turducken - Divide and Conquer large GWT apps with multiple teams
PDF
Cascading prompts in webi hack bo
PDF
"Dude, where’s my boilerplate? ", Oleksii Makodzeba
 
PPTX
Managing Unstructured Data: Lobs in the World of JSON
PPTX
Beyond the Basics, Debugging with Firebug and Web Inspector
PDF
JSON Processing using mainframe COBOL version 6
PPTX
Cloud Architecture Patterns for Mere Mortals - Bill Wilder - Vermont Code Cam...
PPTX
Introducing coServ
PPTX
Windows Kernel Exploitation : This Time Font hunt you down in 4 bytes
PDF
Git hub party-20151008
PPTX
Fabian Williams SharePoint Saturday New York BCS Deck
PDF
Hacking the Kinect with GAFFTA Day 1
PDF
A Git MVP Workflow
PPTX
Git branching model
PDF
Workshop - The Little Pattern That Could.pdf
PPTX
Kotlin everywhere
KEY
Modernizr, Yepnope, and Polyfills
Trigger maxl from fdmee
Building Containers: How Many Ways Are Too Many?
Untangling7
Turducken - Divide and Conquer large GWT apps with multiple teams
Cascading prompts in webi hack bo
"Dude, where’s my boilerplate? ", Oleksii Makodzeba
 
Managing Unstructured Data: Lobs in the World of JSON
Beyond the Basics, Debugging with Firebug and Web Inspector
JSON Processing using mainframe COBOL version 6
Cloud Architecture Patterns for Mere Mortals - Bill Wilder - Vermont Code Cam...
Introducing coServ
Windows Kernel Exploitation : This Time Font hunt you down in 4 bytes
Git hub party-20151008
Fabian Williams SharePoint Saturday New York BCS Deck
Hacking the Kinect with GAFFTA Day 1
A Git MVP Workflow
Git branching model
Workshop - The Little Pattern That Could.pdf
Kotlin everywhere
Modernizr, Yepnope, and Polyfills
Ad

Recently uploaded (20)

PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 41
PDF
2025 Textile ERP Trends: SAP, Odoo & Oracle
PPTX
Odoo POS Development Services by CandidRoot Solutions
PPTX
ai tools demonstartion for schools and inter college
PPTX
Agentic AI : A Practical Guide. Undersating, Implementing and Scaling Autono...
PDF
Digital Strategies for Manufacturing Companies
PDF
Design an Analysis of Algorithms I-SECS-1021-03
PDF
PTS Company Brochure 2025 (1).pdf.......
PPTX
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
PDF
Upgrade and Innovation Strategies for SAP ERP Customers
PPTX
history of c programming in notes for students .pptx
PDF
Which alternative to Crystal Reports is best for small or large businesses.pdf
PDF
Design an Analysis of Algorithms II-SECS-1021-03
PDF
How to Choose the Right IT Partner for Your Business in Malaysia
PDF
Navsoft: AI-Powered Business Solutions & Custom Software Development
PDF
Nekopoi APK 2025 free lastest update
PDF
medical staffing services at VALiNTRY
PPTX
CHAPTER 2 - PM Management and IT Context
PDF
Audit Checklist Design Aligning with ISO, IATF, and Industry Standards — Omne...
PDF
Understanding Forklifts - TECH EHS Solution
Internet Downloader Manager (IDM) Crack 6.42 Build 41
2025 Textile ERP Trends: SAP, Odoo & Oracle
Odoo POS Development Services by CandidRoot Solutions
ai tools demonstartion for schools and inter college
Agentic AI : A Practical Guide. Undersating, Implementing and Scaling Autono...
Digital Strategies for Manufacturing Companies
Design an Analysis of Algorithms I-SECS-1021-03
PTS Company Brochure 2025 (1).pdf.......
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
Upgrade and Innovation Strategies for SAP ERP Customers
history of c programming in notes for students .pptx
Which alternative to Crystal Reports is best for small or large businesses.pdf
Design an Analysis of Algorithms II-SECS-1021-03
How to Choose the Right IT Partner for Your Business in Malaysia
Navsoft: AI-Powered Business Solutions & Custom Software Development
Nekopoi APK 2025 free lastest update
medical staffing services at VALiNTRY
CHAPTER 2 - PM Management and IT Context
Audit Checklist Design Aligning with ISO, IATF, and Industry Standards — Omne...
Understanding Forklifts - TECH EHS Solution

Multiple projects, different goals, one thing in common: the codebase! at AgileDC 2014