SlideShare une entreprise Scribd logo
1  sur  69
Télécharger pour lire hors ligne
Modern Code Reviews in Open-Source Projects:
Which Problems Do They Fix?
Moritz Beller
Delft University of Technology
@Inventitech
Alberto Bacchelli, Andy Zaidman
Elmar Juergens,
CQSE GmbH
Modern Code Review Workflow
Modern Code Review Workflow
Modern Code Review Workflow
Modern Code Review Workflow
Modern Code Review Workflow
Modern Code Review Workflow
Modern Code Review Workflow
Modern Code Review Workflow
Modern Code Review Workflow
Modern Code Review Workflow
Modern Code Review Workflow
Modern Code Review Workflow
+
/** The ui thread for WatchDog registration. */
public Runnable watchDog = new StartupUIThread();
/** The ui thread for WatchDog registration. */
public Runnable watchDog = new StartupUIThread();
/** The ui thread for WatchDog registration. */
// TODO (GG) Provide a more descriptive name
public Runnable watchDog = new StartupUIThread();
/** The ui thread for WatchDog registration. */
public Runnable watchDog = new StartupUIThread();
/** The ui thread for WatchDog registration. */
// TODO (GG) Provide a more descriptive name
public Runnable watchDog = new StartupUIThread();
/** The ui thread for WatchDog registration. */
public Runnable watchDog = new StartupUIThread();
/** The ui thread for WatchDog registration. */
// TODO (GG) Provide a more descriptive name
public Runnable watchDog = new StartupUIThread();
/** The ui thread for WatchDog registration. */
public Runnable watchDogUiThread = new
StartupUIThread();
/** The ui thread for WatchDog registration. */
public Runnable watchDog = new StartupUIThread();
/** The ui thread for WatchDog registration. */
// TODO (GG) Provide a more descriptive name
public Runnable watchDog = new StartupUIThread();
/** The ui thread for WatchDog registration. */
public Runnable watchDogUiThread = new
StartupUIThread();
Review-triggered Change
/** The ui thread for WatchDog registration. */
public Runnable watchDog = new StartupUIThread();
/** The ui thread for WatchDog registration. */
// TODO (GG) Provide a more descriptive name
public Runnable watchDog = new StartupUIThread();
/** The ui thread for WatchDog registration. */
public Runnable watchDogUiThread = new
StartupUIThread();
/** The ui thread for WatchDog registration. */
public Runnable watchDog = new StartupUIThread();
/** The ui thread for WatchDog registration. */
// TODO (GG) Provide a more descriptive name
public Runnable watchDog = new StartupUIThread();
/** The ui thread for WatchDog registration. */
public Runnable watchDog = new StartupUIThread();
/** The ui thread for WatchDog registration. */
// TODO (GG) Provide a more descriptive name
public Runnable watchDog = new StartupUIThread();
/** The ui thread for WatchDog registration. */
public Runnable watchDog = new StartupUIThread();
/** The ui thread for WatchDog registration. */
// TODO (GG) Provide a more descriptive name
public Runnable watchDog = new StartupUIThread();
/** The ui thread for WatchDog registration. */
private Runnable watchDogUiThread = new
StartupUIThread();
/** The ui thread for WatchDog registration. */
public Runnable watchDog = new StartupUIThread();
/** The ui thread for WatchDog registration. */
// TODO (GG) Provide a more descriptive name
public Runnable watchDog = new StartupUIThread();
/** The ui thread for WatchDog registration. */
private Runnable watchDogUiThread = new
StartupUIThread();
Self-motivated + Review-triggered Change
/** The ui thread for WatchDog registration. */
public Runnable watchDog = new StartupUIThread();
/** The ui thread for WatchDog registration. */
// TODO (GG) Provide a more descriptive name
public Runnable watchDog = new StartupUIThread();
/** The ui thread for WatchDog registration. */
private Runnable watchDogUiThread = new
StartupUIThread();
/** The ui thread for WatchDog registration. */
public Runnable watchDog = new StartupUIThread();
/** The ui thread for WatchDog registration. */
// TODO (GG) Provide a more descriptive name
public Runnable watchDog = new StartupUIThread();
/** The ui thread for WatchDog registration. */
public Runnable watchDog = new StartupUIThread();
/** The ui thread for WatchDog registration. */
// TODO (GG) Provide a more descriptive name
public Runnable watchDog = new StartupUIThread();
/** The ui thread for WatchDog registration. */
public Runnable watchDog = new StartupUIThread();
/** The ui thread for WatchDog registration. */
// TODO (GG) Provide a more descriptive name
public Runnable watchDog = new StartupUIThread();
/**
* The ui thread for WatchDog registration. From
* this thread, the WatchDog program is started.
*/
public Runnable watchDog = new StartupUIThread();
/** The ui thread for WatchDog registration. */
public Runnable watchDog = new StartupUIThread();
/** The ui thread for WatchDog registration. */
// TODO (GG) Provide a more descriptive name
public Runnable watchDog = new StartupUIThread();
/**
* The ui thread for WatchDog registration. From
* this thread, the WatchDog program is started.
*/
public Runnable watchDog = new StartupUIThread();
Self-motivated Change
/** The ui thread for WatchDog registration. */
public Runnable watchDog = new StartupUIThread();
/** The ui thread for WatchDog registration. */
// TODO (GG) Provide a more descriptive name
public Runnable watchDog = new StartupUIThread();
/**
* The ui thread for WatchDog registration. From
* this thread, the WatchDog program is started.
*/
public Runnable watchDog = new StartupUIThread();
/** The ui thread for WatchDog registration. */
public Runnable watchDog = new StartupUIThread();
/** The ui thread for WatchDog registration. */
// TODO (GG) Provide a more descriptive name
public Runnable watchDog = new StartupUIThread();
/** The ui thread for WatchDog registration. */
public Runnable watchDog = new StartupUIThread();
/** The ui thread for WatchDog registration. */
// TODO (GG) Provide a more descriptive name
public Runnable watchDog = new StartupUIThread();
/** The ui thread for WatchDog registration. */
public Runnable watchDog = new StartupUIThread();
/** The ui thread for WatchDog registration. */
// TODO (GG) Provide a more descriptive name
public Runnable watchDog = new StartupUIThread();
/** The ui thread for WatchDog registration. */
public Runnable watchDog = new StartupUIThread();
No Change
/** The ui thread for WatchDog registration. */
public Runnable watchDog = new StartupUIThread();
/** The ui thread for WatchDog registration. */
// TODO (GG) Provide a more descriptive name
public Runnable watchDog = new StartupUIThread();
/** The ui thread for WatchDog registration. */
public Runnable watchDog = new StartupUIThread();
No Change
/** The ui thread for WatchDog registration. */
public Runnable watchDog = new StartupUIThread();
/** The ui thread for WatchDog registration. */
// TODO (GG) Provide a more descriptive name
public Runnable watchDog = new StartupUIThread();
/** The ui thread for WatchDog registration. */
public Runnable watchDog = new StartupUIThread();
No Change
/** The ui thread for WatchDog registration. */
public Runnable watchDog = new StartupUIThread();
/** The ui thread for WatchDog registration. */
// TODO (GG) Provide a more descriptive name
public Runnable watchDog = new StartupUIThread();
/** The ui thread for WatchDog registration. */
public Runnable watchDog = new StartupUIThread();
Does it matter?
>1,400 changes
>245 tasks
Motivation for Change
Motivation for Change
78-90%
Motivation for Change
78-90%
Motivation for Change
22-10%
78-90%
Motivation for Change
22-10%
Motivation for No Change
Motivation for No Change
Motivation for No Change
7-35%
Motivation for No Change
7-35%
Type of Change
Doc
Visual
Structure
Resource
Check
Interface
Logic
Larger
Support
ConQAT
Gromacs
10% 20% 30% 40%
75
:
25
Doc
Visual
Structure
Resource
Check
Interface
Logic
Larger
Support
ConQAT
Gromacs
10% 20% 30% 40%
75
:
25
Doc
Visual
Structure
Resource
Check
Interface
Logic
Larger
Support
ConQAT
Gromacs
10% 20% 30% 40%
75
:
25
Doc
Visual
Structure
Resource
Check
Interface
Logic
Larger
Support
ConQAT
Gromacs
10% 20% 30% 40%
75 : 25
What Influences Code Review?
What Influences Code Review?
What Influences Code Review?
What Influences Code Review?
> 2,800 changes
> 970 tasks
What Influences Code Review?
> 2,800 changes
> 970 tasks
What Influences Code Review?
> 2,800 changes
> 970 tasks
What Influences Code Review?
> 2,800 changes
> 970 tasks
What Influences Code Review?
> 2,800 changes
> 970 tasks
What Influences Code Review?
> 2,800 changes
> 970 tasks
What Influences Code Review?
> 2,800 changes
> 970 tasks
What Influences Code Review?
> 2,800 changes
> 970 tasks
@Inventitech
Moritz Beller, TU Delft
Modern Code Reviews in Open-Source Projects:
Which Problems Do They Fix?
@Inventitech
Moritz Beller, TU Delft
Modern Code Reviews in Open-Source Projects:
Which Problems Do They Fix?
@Inventitech
Moritz Beller, TU Delft
Modern Code Reviews in Open-Source Projects:
Which Problems Do They Fix?
@Inventitech
Moritz Beller, TU Delft
Modern Code Reviews in Open-Source Projects:
Which Problems Do They Fix?

Contenu connexe

Similaire à Modern Code Reviews in Open Source Projects: Which Problems Do They Fix?

Android and the Seven Dwarfs from Devox'15
Android and the Seven Dwarfs from Devox'15Android and the Seven Dwarfs from Devox'15
Android and the Seven Dwarfs from Devox'15Murat Yener
 
CDI e as ideias pro futuro do VRaptor
CDI e as ideias pro futuro do VRaptorCDI e as ideias pro futuro do VRaptor
CDI e as ideias pro futuro do VRaptorCaelum
 
The Developer Conference - CloudKit, entendendo a Cloud da Apple
The Developer Conference - CloudKit, entendendo a Cloud da AppleThe Developer Conference - CloudKit, entendendo a Cloud da Apple
The Developer Conference - CloudKit, entendendo a Cloud da AppleRodrigo Leite
 
Android Design Patterns
Android Design PatternsAndroid Design Patterns
Android Design PatternsGodfrey Nolan
 
Não reinvente a roda! Desenvolvendo com bibliotecas Android
Não reinvente a roda! Desenvolvendo com bibliotecas AndroidNão reinvente a roda! Desenvolvendo com bibliotecas Android
Não reinvente a roda! Desenvolvendo com bibliotecas AndroidVítor Bruno de Almeida
 
Dropwizard and Friends
Dropwizard and FriendsDropwizard and Friends
Dropwizard and FriendsYun Zhi Lin
 
OpenStack How To - PyLadies ATX
OpenStack How To - PyLadies ATXOpenStack How To - PyLadies ATX
OpenStack How To - PyLadies ATXAnne Gentle
 
Advanced n service bus deployment - NSBConnyc 2014 by Kijana Woodard
Advanced n service bus deployment - NSBConnyc 2014 by Kijana WoodardAdvanced n service bus deployment - NSBConnyc 2014 by Kijana Woodard
Advanced n service bus deployment - NSBConnyc 2014 by Kijana WoodardParticular Software
 
Google analytics
Google analyticsGoogle analytics
Google analyticsSean Tsai
 
Treatment, Architecture and Threads
Treatment, Architecture and ThreadsTreatment, Architecture and Threads
Treatment, Architecture and ThreadsMathias Seguy
 
Commenting in Agile Development
Commenting in Agile DevelopmentCommenting in Agile Development
Commenting in Agile DevelopmentJan Rybák Benetka
 
GIT - DUG Antwerp
GIT - DUG AntwerpGIT - DUG Antwerp
GIT - DUG AntwerpKrimson
 
Submitting and Reviewing changes lab guide
Submitting and Reviewing changes lab guideSubmitting and Reviewing changes lab guide
Submitting and Reviewing changes lab guideopenstackcisco
 
GIT training - advanced for software projects
GIT training - advanced for software projectsGIT training - advanced for software projects
GIT training - advanced for software projectsThierry Gayet
 
Architecting your GWT applications with GWT-Platform - Lesson 02
Architecting your GWT applications with GWT-Platform - Lesson 02Architecting your GWT applications with GWT-Platform - Lesson 02
Architecting your GWT applications with GWT-Platform - Lesson 02rhemsolutions
 
Web CrawlersrcedusmulylecrawlerController.javaWeb Crawler.docx
Web CrawlersrcedusmulylecrawlerController.javaWeb Crawler.docxWeb CrawlersrcedusmulylecrawlerController.javaWeb Crawler.docx
Web CrawlersrcedusmulylecrawlerController.javaWeb Crawler.docxcelenarouzie
 
Keep your Wicket application in production
Keep your Wicket application in productionKeep your Wicket application in production
Keep your Wicket application in productionMartijn Dashorst
 

Similaire à Modern Code Reviews in Open Source Projects: Which Problems Do They Fix? (20)

Android and the Seven Dwarfs from Devox'15
Android and the Seven Dwarfs from Devox'15Android and the Seven Dwarfs from Devox'15
Android and the Seven Dwarfs from Devox'15
 
CDI e as ideias pro futuro do VRaptor
CDI e as ideias pro futuro do VRaptorCDI e as ideias pro futuro do VRaptor
CDI e as ideias pro futuro do VRaptor
 
VRaptor 4 - JavaOne
VRaptor 4 - JavaOneVRaptor 4 - JavaOne
VRaptor 4 - JavaOne
 
The Developer Conference - CloudKit, entendendo a Cloud da Apple
The Developer Conference - CloudKit, entendendo a Cloud da AppleThe Developer Conference - CloudKit, entendendo a Cloud da Apple
The Developer Conference - CloudKit, entendendo a Cloud da Apple
 
Android Design Patterns
Android Design PatternsAndroid Design Patterns
Android Design Patterns
 
Não reinvente a roda! Desenvolvendo com bibliotecas Android
Não reinvente a roda! Desenvolvendo com bibliotecas AndroidNão reinvente a roda! Desenvolvendo com bibliotecas Android
Não reinvente a roda! Desenvolvendo com bibliotecas Android
 
Dropwizard and Friends
Dropwizard and FriendsDropwizard and Friends
Dropwizard and Friends
 
OpenStack How To - PyLadies ATX
OpenStack How To - PyLadies ATXOpenStack How To - PyLadies ATX
OpenStack How To - PyLadies ATX
 
Advanced n service bus deployment - NSBConnyc 2014 by Kijana Woodard
Advanced n service bus deployment - NSBConnyc 2014 by Kijana WoodardAdvanced n service bus deployment - NSBConnyc 2014 by Kijana Woodard
Advanced n service bus deployment - NSBConnyc 2014 by Kijana Woodard
 
Google analytics
Google analyticsGoogle analytics
Google analytics
 
Treatment, Architecture and Threads
Treatment, Architecture and ThreadsTreatment, Architecture and Threads
Treatment, Architecture and Threads
 
Commenting in Agile Development
Commenting in Agile DevelopmentCommenting in Agile Development
Commenting in Agile Development
 
GIT - DUG Antwerp
GIT - DUG AntwerpGIT - DUG Antwerp
GIT - DUG Antwerp
 
Submitting and Reviewing changes lab guide
Submitting and Reviewing changes lab guideSubmitting and Reviewing changes lab guide
Submitting and Reviewing changes lab guide
 
GIT training - advanced for software projects
GIT training - advanced for software projectsGIT training - advanced for software projects
GIT training - advanced for software projects
 
Architecting your GWT applications with GWT-Platform - Lesson 02
Architecting your GWT applications with GWT-Platform - Lesson 02Architecting your GWT applications with GWT-Platform - Lesson 02
Architecting your GWT applications with GWT-Platform - Lesson 02
 
Spring Boot
Spring BootSpring Boot
Spring Boot
 
Annotation processing tool
Annotation processing toolAnnotation processing tool
Annotation processing tool
 
Web CrawlersrcedusmulylecrawlerController.javaWeb Crawler.docx
Web CrawlersrcedusmulylecrawlerController.javaWeb Crawler.docxWeb CrawlersrcedusmulylecrawlerController.javaWeb Crawler.docx
Web CrawlersrcedusmulylecrawlerController.javaWeb Crawler.docx
 
Keep your Wicket application in production
Keep your Wicket application in productionKeep your Wicket application in production
Keep your Wicket application in production
 

Dernier

%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrandmasabamasaba
 
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...WSO2
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisamasabamasaba
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is insideshinachiaurasa2
 
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...masabamasaba
 
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfonteinmasabamasaba
 
Announcing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareAnnouncing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareJim McKeeth
 
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...WSO2
 
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Bert Jan Schrijver
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplatePresentation.STUDIO
 
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...chiefasafspells
 
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...Shane Coughlan
 
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...WSO2
 
WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?WSO2
 
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyviewmasabamasaba
 
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...Jittipong Loespradit
 
%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in sowetomasabamasaba
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park masabamasaba
 

Dernier (20)

%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand
 
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
 
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
 
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
 
Announcing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareAnnouncing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK Software
 
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
 
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
 
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
 
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
 
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
 
WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?
 
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
 
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
 
%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
 

Modern Code Reviews in Open Source Projects: Which Problems Do They Fix?

  • 1. Modern Code Reviews in Open-Source Projects: Which Problems Do They Fix? Moritz Beller Delft University of Technology @Inventitech Alberto Bacchelli, Andy Zaidman Elmar Juergens, CQSE GmbH
  • 10. Modern Code Review Workflow
  • 11. Modern Code Review Workflow
  • 12. Modern Code Review Workflow
  • 13. Modern Code Review Workflow +
  • 14.
  • 15. /** The ui thread for WatchDog registration. */ public Runnable watchDog = new StartupUIThread();
  • 16. /** The ui thread for WatchDog registration. */ public Runnable watchDog = new StartupUIThread(); /** The ui thread for WatchDog registration. */ // TODO (GG) Provide a more descriptive name public Runnable watchDog = new StartupUIThread();
  • 17. /** The ui thread for WatchDog registration. */ public Runnable watchDog = new StartupUIThread(); /** The ui thread for WatchDog registration. */ // TODO (GG) Provide a more descriptive name public Runnable watchDog = new StartupUIThread();
  • 18. /** The ui thread for WatchDog registration. */ public Runnable watchDog = new StartupUIThread(); /** The ui thread for WatchDog registration. */ // TODO (GG) Provide a more descriptive name public Runnable watchDog = new StartupUIThread(); /** The ui thread for WatchDog registration. */ public Runnable watchDogUiThread = new StartupUIThread();
  • 19. /** The ui thread for WatchDog registration. */ public Runnable watchDog = new StartupUIThread(); /** The ui thread for WatchDog registration. */ // TODO (GG) Provide a more descriptive name public Runnable watchDog = new StartupUIThread(); /** The ui thread for WatchDog registration. */ public Runnable watchDogUiThread = new StartupUIThread();
  • 20. Review-triggered Change /** The ui thread for WatchDog registration. */ public Runnable watchDog = new StartupUIThread(); /** The ui thread for WatchDog registration. */ // TODO (GG) Provide a more descriptive name public Runnable watchDog = new StartupUIThread(); /** The ui thread for WatchDog registration. */ public Runnable watchDogUiThread = new StartupUIThread();
  • 21. /** The ui thread for WatchDog registration. */ public Runnable watchDog = new StartupUIThread(); /** The ui thread for WatchDog registration. */ // TODO (GG) Provide a more descriptive name public Runnable watchDog = new StartupUIThread();
  • 22. /** The ui thread for WatchDog registration. */ public Runnable watchDog = new StartupUIThread(); /** The ui thread for WatchDog registration. */ // TODO (GG) Provide a more descriptive name public Runnable watchDog = new StartupUIThread();
  • 23. /** The ui thread for WatchDog registration. */ public Runnable watchDog = new StartupUIThread(); /** The ui thread for WatchDog registration. */ // TODO (GG) Provide a more descriptive name public Runnable watchDog = new StartupUIThread(); /** The ui thread for WatchDog registration. */ private Runnable watchDogUiThread = new StartupUIThread();
  • 24. /** The ui thread for WatchDog registration. */ public Runnable watchDog = new StartupUIThread(); /** The ui thread for WatchDog registration. */ // TODO (GG) Provide a more descriptive name public Runnable watchDog = new StartupUIThread(); /** The ui thread for WatchDog registration. */ private Runnable watchDogUiThread = new StartupUIThread();
  • 25. Self-motivated + Review-triggered Change /** The ui thread for WatchDog registration. */ public Runnable watchDog = new StartupUIThread(); /** The ui thread for WatchDog registration. */ // TODO (GG) Provide a more descriptive name public Runnable watchDog = new StartupUIThread(); /** The ui thread for WatchDog registration. */ private Runnable watchDogUiThread = new StartupUIThread();
  • 26. /** The ui thread for WatchDog registration. */ public Runnable watchDog = new StartupUIThread(); /** The ui thread for WatchDog registration. */ // TODO (GG) Provide a more descriptive name public Runnable watchDog = new StartupUIThread();
  • 27. /** The ui thread for WatchDog registration. */ public Runnable watchDog = new StartupUIThread(); /** The ui thread for WatchDog registration. */ // TODO (GG) Provide a more descriptive name public Runnable watchDog = new StartupUIThread();
  • 28. /** The ui thread for WatchDog registration. */ public Runnable watchDog = new StartupUIThread(); /** The ui thread for WatchDog registration. */ // TODO (GG) Provide a more descriptive name public Runnable watchDog = new StartupUIThread(); /** * The ui thread for WatchDog registration. From * this thread, the WatchDog program is started. */ public Runnable watchDog = new StartupUIThread();
  • 29. /** The ui thread for WatchDog registration. */ public Runnable watchDog = new StartupUIThread(); /** The ui thread for WatchDog registration. */ // TODO (GG) Provide a more descriptive name public Runnable watchDog = new StartupUIThread(); /** * The ui thread for WatchDog registration. From * this thread, the WatchDog program is started. */ public Runnable watchDog = new StartupUIThread();
  • 30. Self-motivated Change /** The ui thread for WatchDog registration. */ public Runnable watchDog = new StartupUIThread(); /** The ui thread for WatchDog registration. */ // TODO (GG) Provide a more descriptive name public Runnable watchDog = new StartupUIThread(); /** * The ui thread for WatchDog registration. From * this thread, the WatchDog program is started. */ public Runnable watchDog = new StartupUIThread();
  • 31. /** The ui thread for WatchDog registration. */ public Runnable watchDog = new StartupUIThread(); /** The ui thread for WatchDog registration. */ // TODO (GG) Provide a more descriptive name public Runnable watchDog = new StartupUIThread();
  • 32. /** The ui thread for WatchDog registration. */ public Runnable watchDog = new StartupUIThread(); /** The ui thread for WatchDog registration. */ // TODO (GG) Provide a more descriptive name public Runnable watchDog = new StartupUIThread();
  • 33. /** The ui thread for WatchDog registration. */ public Runnable watchDog = new StartupUIThread(); /** The ui thread for WatchDog registration. */ // TODO (GG) Provide a more descriptive name public Runnable watchDog = new StartupUIThread(); /** The ui thread for WatchDog registration. */ public Runnable watchDog = new StartupUIThread();
  • 34. No Change /** The ui thread for WatchDog registration. */ public Runnable watchDog = new StartupUIThread(); /** The ui thread for WatchDog registration. */ // TODO (GG) Provide a more descriptive name public Runnable watchDog = new StartupUIThread(); /** The ui thread for WatchDog registration. */ public Runnable watchDog = new StartupUIThread();
  • 35. No Change /** The ui thread for WatchDog registration. */ public Runnable watchDog = new StartupUIThread(); /** The ui thread for WatchDog registration. */ // TODO (GG) Provide a more descriptive name public Runnable watchDog = new StartupUIThread(); /** The ui thread for WatchDog registration. */ public Runnable watchDog = new StartupUIThread();
  • 36. No Change /** The ui thread for WatchDog registration. */ public Runnable watchDog = new StartupUIThread(); /** The ui thread for WatchDog registration. */ // TODO (GG) Provide a more descriptive name public Runnable watchDog = new StartupUIThread(); /** The ui thread for WatchDog registration. */ public Runnable watchDog = new StartupUIThread();
  • 46. Motivation for No Change 7-35%
  • 47. Motivation for No Change 7-35%
  • 53.
  • 58. What Influences Code Review? > 2,800 changes > 970 tasks
  • 59. What Influences Code Review? > 2,800 changes > 970 tasks
  • 60. What Influences Code Review? > 2,800 changes > 970 tasks
  • 61. What Influences Code Review? > 2,800 changes > 970 tasks
  • 62. What Influences Code Review? > 2,800 changes > 970 tasks
  • 63. What Influences Code Review? > 2,800 changes > 970 tasks
  • 64. What Influences Code Review? > 2,800 changes > 970 tasks
  • 65. What Influences Code Review? > 2,800 changes > 970 tasks
  • 66. @Inventitech Moritz Beller, TU Delft Modern Code Reviews in Open-Source Projects: Which Problems Do They Fix?
  • 67. @Inventitech Moritz Beller, TU Delft Modern Code Reviews in Open-Source Projects: Which Problems Do They Fix?
  • 68. @Inventitech Moritz Beller, TU Delft Modern Code Reviews in Open-Source Projects: Which Problems Do They Fix?
  • 69. @Inventitech Moritz Beller, TU Delft Modern Code Reviews in Open-Source Projects: Which Problems Do They Fix?