SlideShare ist ein Scribd-Unternehmen logo
1 von 69
Downloaden Sie, um offline zu lesen
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?

Weitere ähnliche Inhalte

Ähnlich wie 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
 

Ähnlich wie 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
 

Kürzlich hochgeladen

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 kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfonteinmasabamasaba
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesVictorSzoltysek
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️Delhi Call girls
 
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
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsJhone kinadey
 
Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdfPearlKirahMaeRagusta1
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...masabamasaba
 
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionIntroducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionOnePlan Solutions
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Steffen Staab
 
Architecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastArchitecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastPapp Krisztián
 
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024VictoriaMetrics
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrainmasabamasaba
 
%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
 
Harnessing ChatGPT - Elevating Productivity in Today's Agile Environment
Harnessing ChatGPT  - Elevating Productivity in Today's Agile EnvironmentHarnessing ChatGPT  - Elevating Productivity in Today's Agile Environment
Harnessing ChatGPT - Elevating Productivity in Today's Agile EnvironmentVictorSzoltysek
 
tonesoftg
tonesoftgtonesoftg
tonesoftglanshi9
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...masabamasaba
 
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 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
 

Kürzlich hochgeladen (20)

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 kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
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
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdf
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
 
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionIntroducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
 
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...
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
Architecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastArchitecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the past
 
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
 
%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
 
Harnessing ChatGPT - Elevating Productivity in Today's Agile Environment
Harnessing ChatGPT  - Elevating Productivity in Today's Agile EnvironmentHarnessing ChatGPT  - Elevating Productivity in Today's Agile Environment
Harnessing ChatGPT - Elevating Productivity in Today's Agile Environment
 
tonesoftg
tonesoftgtonesoftg
tonesoftg
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
 
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 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
 

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?