Top Banner
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
69

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

Jul 16, 2015

Download

Software

Moritz Beller
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Modern Code Reviews in Open Source Projects: Which Problems Do They Fix?

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

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

Modern Code Review Workflow

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

Modern Code Review Workflow

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

Modern Code Review Workflow

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

Modern Code Review Workflow

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

Modern Code Review Workflow

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

Modern Code Review Workflow

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

Modern Code Review Workflow

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

Modern Code Review Workflow

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

Modern Code Review Workflow

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

Modern Code Review Workflow

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

Modern Code Review Workflow

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

Modern Code Review Workflow

+

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

/** The ui thread for WatchDog registration. */public Runnable watchDog = new StartupUIThread();

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

/** The ui thread for WatchDog registration. */public Runnable watchDog = new StartupUIThread();

/** The ui thread for WatchDog registration. */// TODO (GG) Provide a more descriptive namepublic Runnable watchDog = new StartupUIThread();

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

/** The ui thread for WatchDog registration. */public Runnable watchDog = new StartupUIThread();

/** The ui thread for WatchDog registration. */// TODO (GG) Provide a more descriptive namepublic Runnable watchDog = new StartupUIThread();

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

/** The ui thread for WatchDog registration. */public Runnable watchDog = new StartupUIThread();

/** The ui thread for WatchDog registration. */// TODO (GG) Provide a more descriptive namepublic Runnable watchDog = new StartupUIThread();

/** The ui thread for WatchDog registration. */public Runnable watchDogUiThread = new StartupUIThread();

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

/** The ui thread for WatchDog registration. */public Runnable watchDog = new StartupUIThread();

/** The ui thread for WatchDog registration. */// TODO (GG) Provide a more descriptive namepublic Runnable watchDog = new StartupUIThread();

/** The ui thread for WatchDog registration. */public Runnable watchDogUiThread = new StartupUIThread();

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

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 namepublic Runnable watchDog = new StartupUIThread();

/** The ui thread for WatchDog registration. */public Runnable watchDogUiThread = new StartupUIThread();

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

/** The ui thread for WatchDog registration. */public Runnable watchDog = new StartupUIThread();

/** The ui thread for WatchDog registration. */// TODO (GG) Provide a more descriptive namepublic Runnable watchDog = new StartupUIThread();

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

/** The ui thread for WatchDog registration. */public Runnable watchDog = new StartupUIThread();

/** The ui thread for WatchDog registration. */// TODO (GG) Provide a more descriptive namepublic Runnable watchDog = new StartupUIThread();

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

/** The ui thread for WatchDog registration. */public Runnable watchDog = new StartupUIThread();

/** The ui thread for WatchDog registration. */// TODO (GG) Provide a more descriptive namepublic Runnable watchDog = new StartupUIThread();

/** The ui thread for WatchDog registration. */private Runnable watchDogUiThread = new StartupUIThread();

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

/** The ui thread for WatchDog registration. */public Runnable watchDog = new StartupUIThread();

/** The ui thread for WatchDog registration. */// TODO (GG) Provide a more descriptive namepublic Runnable watchDog = new StartupUIThread();

/** The ui thread for WatchDog registration. */private Runnable watchDogUiThread = new StartupUIThread();

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

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 namepublic Runnable watchDog = new StartupUIThread();

/** The ui thread for WatchDog registration. */private Runnable watchDogUiThread = new StartupUIThread();

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

/** The ui thread for WatchDog registration. */public Runnable watchDog = new StartupUIThread();

/** The ui thread for WatchDog registration. */// TODO (GG) Provide a more descriptive namepublic Runnable watchDog = new StartupUIThread();

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

/** The ui thread for WatchDog registration. */public Runnable watchDog = new StartupUIThread();

/** The ui thread for WatchDog registration. */// TODO (GG) Provide a more descriptive namepublic Runnable watchDog = new StartupUIThread();

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

/** The ui thread for WatchDog registration. */public Runnable watchDog = new StartupUIThread();

/** The ui thread for WatchDog registration. */// TODO (GG) Provide a more descriptive namepublic Runnable watchDog = new StartupUIThread();

/** * The ui thread for WatchDog registration. From * this thread, the WatchDog program is started. */public Runnable watchDog = new StartupUIThread();

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

/** The ui thread for WatchDog registration. */public Runnable watchDog = new StartupUIThread();

/** The ui thread for WatchDog registration. */// TODO (GG) Provide a more descriptive namepublic Runnable watchDog = new StartupUIThread();

/** * The ui thread for WatchDog registration. From * this thread, the WatchDog program is started. */public Runnable watchDog = new StartupUIThread();

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

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 namepublic Runnable watchDog = new StartupUIThread();

/** * The ui thread for WatchDog registration. From * this thread, the WatchDog program is started. */public Runnable watchDog = new StartupUIThread();

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

/** The ui thread for WatchDog registration. */public Runnable watchDog = new StartupUIThread();

/** The ui thread for WatchDog registration. */// TODO (GG) Provide a more descriptive namepublic Runnable watchDog = new StartupUIThread();

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

/** The ui thread for WatchDog registration. */public Runnable watchDog = new StartupUIThread();

/** The ui thread for WatchDog registration. */// TODO (GG) Provide a more descriptive namepublic Runnable watchDog = new StartupUIThread();

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

/** The ui thread for WatchDog registration. */public Runnable watchDog = new StartupUIThread();

/** The ui thread for WatchDog registration. */// TODO (GG) Provide a more descriptive namepublic Runnable watchDog = new StartupUIThread();

/** The ui thread for WatchDog registration. */public Runnable watchDog = new StartupUIThread();

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

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 namepublic Runnable watchDog = new StartupUIThread();

/** The ui thread for WatchDog registration. */public Runnable watchDog = new StartupUIThread();

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

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 namepublic Runnable watchDog = new StartupUIThread();

/** The ui thread for WatchDog registration. */public Runnable watchDog = new StartupUIThread();

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

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 namepublic Runnable watchDog = new StartupUIThread();

/** The ui thread for WatchDog registration. */public Runnable watchDog = new StartupUIThread();

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

Does it matter?

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

>1,400 changes>245 tasks

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

Motivation for Change

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

Motivation for Change

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

78-90%

Motivation for Change

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

78-90%

Motivation for Change

22-10%

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

78-90%

Motivation for Change

22-10%

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

Motivation for No Change

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

Motivation for No Change

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

Motivation for No Change

7-35%

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

Motivation for No Change

7-35%

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

Type of Change

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

Doc

Visual

Structure

Resource

Check

Interface

Logic

Larger

Support

ConQAT Gromacs

10% 20% 30% 40%

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

75:

25

Doc

Visual

Structure

Resource

Check

Interface

Logic

Larger

Support

ConQAT Gromacs

10% 20% 30% 40%

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

75:

25

Doc

Visual

Structure

Resource

Check

Interface

Logic

Larger

Support

ConQAT Gromacs

10% 20% 30% 40%

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

75:

25

Doc

Visual

Structure

Resource

Check

Interface

Logic

Larger

Support

ConQAT Gromacs

10% 20% 30% 40%

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

75 : 25

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

What Influences Code Review?

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

What Influences Code Review?

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

What Influences Code Review?

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

What Influences Code Review?

> 2,800 changes> 970 tasks

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

What Influences Code Review?

> 2,800 changes> 970 tasks

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

What Influences Code Review?

> 2,800 changes> 970 tasks

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

What Influences Code Review?

> 2,800 changes> 970 tasks

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

What Influences Code Review?

> 2,800 changes> 970 tasks

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

What Influences Code Review?

> 2,800 changes> 970 tasks

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

What Influences Code Review?

> 2,800 changes> 970 tasks

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

What Influences Code Review?

> 2,800 changes> 970 tasks

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

@InventitechMoritz Beller, TU Delft

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

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

@InventitechMoritz Beller, TU Delft

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

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

@InventitechMoritz Beller, TU Delft

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

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

@InventitechMoritz Beller, TU Delft

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