SlideShare a Scribd company logo
1 of 48
Download to read offline
Lars Kurth 
Community Manager, Xen Project 
Chairman, Xen Project Advisory Board 
Director, Open Source Business Office, Citrix 
lars_kurth
Culture, Roles, 
Community 
Goals 
Good Planning 
& Preparation 
Following 
workflow and 
conventions 
Good 
Communicati 
Systematic 
approach 
on 
Unnecessary 
iterations, 
misunderstandings 
and wasted time of 
contributor and 
reviewers time 
Wrong expectations 
leading to frustration and 
conflict
Goal: Effective Contributions 
Factors that impact Effectiveness 
Motivators of Community Stakeholders 
Common factors for disagreement when trying to contribute 
The case for Code Reviews: Find bugs early & often 
Factors impacting Review Duration 
Jumbled Reviews and Phasing 
Code Reviews: Theory 
Relevant Conventions and Processes in the Xen Project 
Systematic approach to acting on Feedback 
Communication is key : Avoid Misunderstandings
Enable you to Work Efficiently 
with the Xen Project Developer 
Community 
Vinovyn @ Flickr
Which factors impact the 
length of time it takes your 
patch to be up-streamed?
• Get your code into the code line 
• Get it in as quickly as possible, with as little re-work as possible 
• Or at least, make the process of contributing predictable 
• You may be under pressure from a (product) manager 
Enabling feature or API which you 
want to be widely used 
Feature or API, that you are using in 
your product or service. In other 
words you don’t care much if 
someone else uses it 
Research purpose
As a contributor, most of the time 
you want to get your code 
reviewed and accepted as quickly 
as possible, with as few modifications as 
possible 
Up to 1 week 1 to 2 weeks 2 to 3 weeks 3 to 6 weeks 6 to 13 weeks More than 13 
weeks 
43% 
15% 
10% 
13% 
11% 
8%
Reviewers, Maintainers, Committers, Project Lead 
• System Properties: Code readability, understanding what goes in, 
maintainability, quality, performance, scalability, … 
• Practical Issues: 
– Is this patch one I have to look at? 
– Reviewer / maintainer of the patch series 
– Archaeologist: years down the line – why is the code as it is? 
• Workload and personal: 
– Wants to avoid un-necessary workload 
– Day-job: aka other commitments 
– Has a personal communication style 
– Reputation within the community
Problem 
30% Community Growth p.a. 
Contributors competing for review 
time from stretched maintainer / 
reviewer base 
Average review time up from 28 to 
32 days in 6 months
Up to 1 week 1 to 2 weeks 2 to 3 weeks 3 to 6 weeks 6 to 13 weeks More than 13 
weeks 
43% 
15% 
10% 
13% 
11% 
8% 
Gatekeepers ideally want code to 
go in quickly 
BUT: they also have many other 
factors to consider
Contributor Gatekeeper 
Different mindset 
Different expectations 
Bad communication 
Misunderstandings 
Usually common interest 
Process, convention & tools 
Awareness, Mindset / Empathy, Planning, 
Good Communication, Trust / Respect, etc.
The tension identified is not 
specific to OSS development, but 
is a property of Code Review 
Aka the tension between 
submitter and gatekeeper 
(reviewer) 
Vinovyn @ Flickr
Culture, Roles, 
Community 
Goals 
Good Planning 
& Preparation 
Following 
workflow and 
conventions 
Good 
Communicati 
Systematic 
approach 
on
The case for Peer Code Review 
Find Bugs Early and Often
One of our customers set out to test exactly how much 
money the company would have saved had they used 
peer review in a certain three-month, 10,000-line 
project with 10 developers. They tracked how many 
bugs were found by QA and customers in the 
subsequent six months. Then they went back and had 
another group of developers peer-review the code in 
question. 
Using metrics from previous releases of this project 
they knew the average cost of fixing a defect at each 
phase of development, so they were able to measure 
directly how much money they would have saved. 
http://smartbear.com/smartbear/media/pdfs/ 
best-kept-secrets-of-peer-code-review.pdf
snoopsmouse @ Flickr
• Projects don’t normally have a QA team 
è Bugs discovered later è even more expensive to fix 
• Customer (user) discovered bugs are usually found in derivatives 
è time-lag and thus cost to fix is even more expensive 
• Bugs in FOSS projects are often not fixed 
• Bugs and bad quality can damage the reputation of a project 
• And by extension they can damage the business interests and 
reputation of contributors to that project (including your own) 
• Asking maintainers to take your patch in without good review = 
Asking others to fix bugs and carry significant cost for you in future
Culture, Roles, 
Community 
Goals 
Good Planning 
& Preparation 
Following 
workflow and 
conventions 
Good 
Communicati 
Systematic 
approach 
on
• Type of feature 
– Useful to many stake-holders or just to a single vendor? 
– Is the use-case explained or understood? 
– Do reviewers have all the information they need to be able to review? 
• Complexity and Modularity 
– How many files and lines per patch? 
– How many components (hypervisor, qemu, toolstack, APIs, …)? 
– Does the structure of the patch/patch series help a review? 
– Do you need a design? 
• Readability 
– Is it easy to infer the design from the patch? 
– Do you follow Coding standards? 
– Are complex code snippets explained within comments in the patch? 
# of 
Iterations 
Each question 
may require a 
re-submit
• Code Quality 
• Test failures, Coverity Scan, … 
– Will Coverity Scan throw up issues? 
– Do you need new Test Cases? 
– Should you include tests upfront? 
• Time and Experience 
– Delays may require rebasing the patch! 
– How responsive are you to reviewer comments? 
– How responsive is the reviewer? He/she may have a queue of requests! 
– Use past submission experience to estimate # of iterations 
– Your standing in the community (your track record) 
• Other factors 
– Some patches may require documentation (e.g. API docs) 
# of 
Iterations 
Mission Creep 
(e.g. additional requirements to 
minimize risk) 
Elapsed time per 
iteration adding up
Later it becomes clear that 
there is an issue with the use-case, 
design, architecture or assumptions 
Reviewer takes pity on contributor 
Gives some feedback (e.g. coding style, …) 
May ask some questions about the use-case 
and/or the design 
… 
Significant re-work 
Extra effort for contributor and reviewer 
At this stage both may be somewhat annoyed 
(and we will get communication issues)
Why do “jumbled” reviews 
happen?
• Missing Information 
• Wrongly set expectations due to misunderstandings 
• The reviewer giving too detailed information before agreeing that he is 
happy with the use-case, architecture, design – and thus setting wrong 
expectations 
• Another reviewer getting involved later down the road 
– There is also then potential for disagreement
Rationale 
(more if controversial) 
Use Case 
Context 
(Additional Information) 
Design 
(if complex) 
Assumptions 
(that you made) 
Code & 
Code Review 
Systematic 
approach to 
acting on 
Feedback 
Dealing 
with test 
issues
• The Xen Project does not have a design requirement, but … 
{MORE LATER} 
– Designs are welcome, when it makes sense 
– When unsure, whether a design helps, ask: Outline the use-case, problem and approach you are planning to take. 
– Design discussions labeled “Design” + some version number + some text 
• Requests For Comments (RFCs) 
– For use-cases, prototypes, proof of concepts, etc. 
– Ask reviewers specific questions about, use-case, architecture, design, etc. & look at specific issues you want feedback on 
• Timing 
– Design or related questions best at beginning of release cycle 
– Make sure you understand and engage with the Release and Roadmap Process 
• Communication 
– Prompt reviewers: Do you agree with Y (e.g. the design), given X (e.g. that I got some detailed feedback on the code, but also 
some design related questions)? 
– The community is open to meetings in some cases (e.g. IRC meetings, calls, etc.) : high velocity communication can be more 
effective than mail. 
• BUT: it only works, if the key stake-holders agree to attend. 
• AND: document agreements / disagreements / open questions post the meeting by posting a summary to the list, such that there is a 
record
Interesting Facts about 
Code Reviews 
In May of 2006 Cisco Systems performed a 10 month study 
of code reviews encompassing 2500 reviews of 3.2 million 
lines of code written by 50 developers. 
This is the largest case study ever done on what’s known as 
a “lightweight” code review process.
• Reviewers become ineffective when reviewing code for more than an 
hour at a time è Thus, a patch should be reviewable in < 1 hour 
• Reviewers are most effective at reviewing small amounts of code. 
– Anything below 200 lines produces a high rate of defects, several times the 
average è Thus, a patch should ideally be < 200 LOC and not larger than 400 
– After that the results trail off considerably; no review larger than 250 lines 
produced more than 37 defects per 1000 lines of code 
• Reviews with author preparation (annotations explaining changes) 
have significantly smaller defect densities compared to reviews without 
è Incidentally that helps the reviewer also
• The “Ego Effect”: Developers whose code is being reviewed 
immediately develop code with fewer defects in them 
• Systematic Personal Growth: Developers who systematically address 
issues raised and make notes of classes of issues found, learn from 
their mistakes and from feedback and become better developers 
through self-awareness 
• Hurt Feelings: Taking criticism (in particular in public) isn’t easy. The 
point of code review is to find issues. Hurt feelings are in most cases, 
the consequence of miscommunication and/or misunderstandings and 
not intentional è Which is why we will look at communication 
techniques later
Culture, Roles, 
Community 
Goals 
Good Planning 
& Preparation 
Following 
workflow and 
conventions 
Good 
Communicati 
Systematic 
approach 
on
Preparation: 
Contributor gathers changes 
Contributor sends patch or patch 
series with meta-information (use 
case, rationale, design background, 
refs, …) to the mailing list 
Inspection / Review: 
Reviewer(s) examines code diffs following their 
own schedule and time constraints 
Debate until resolved (Maintainer ACK) 
Contributor keeps the process going 
(“Next revision”, “Are we done yet?”) 
Rework: 
Contributor responds to issues by making 
changes and sends new patch 
Acked-by: 
<Maintainer> 
Release Manager 
can object 
Staging: 
Committer checks changes into staging branch 
Test suite passes / fails; Coverity Scan issues 
Review 
Feedback 
Reviewed-by 
Tested-by 
… 
Test or 
scan fail 
Complete: Change moved into master branch 
No issue
From Xen Project Governance 
• Principles: Openness, Transparency, Meritocracy 
• Roles: Maintainers, Committers, Project Lead 
• Conflict Resolution : Refereeing 
• Contribution Guidelines: Developer Certificate of Origin 
• Security Vulnerability Policy (relevant for Coverity Scan)
Documented and regularly used undocumented conventions 
(however changes to these are made only in line with governance) 
• Patch contribution workflow 
• Sign off (Acked-by, reviewed-by, etc.) 
• Coding style 
• Release Manager Role and Release Process (aka different stages) 
• Access to Coverity Scan 
• Staging-to-master pushgate and automated testing 
• Personal repos hosted by Xen Project 
• Design reviews (informal) 
• Hackathons, Developer meetings, Ad-hoc meetings to resolve issues (informal)
Culture, Roles, 
Community 
Goals 
Good Planning 
& Preparation 
Following 
workflow and 
conventions 
Good 
Communicati 
Systematic 
approach 
on
• Feedback comes in hierarchical threads 
• Not always from one person 
• Feedback is not received in a linear list over time 
• Needs to fit your working style and personal preference 
– Otherwise you will get tired of it and won’t use it 
• Usually, it comes down to having one master list of issues somewhere 
– Otherwise you will “loose” or not act on bits of feedback
How do you keep track of 
feedback from an email based 
code review? 
Thomas Galvez @ Flickr
Culture, Roles, 
Community 
Goals 
Good Planning 
& Preparation 
Following 
workflow and 
conventions 
Good 
Communicati 
Systematic 
approach 
on
You have 30 seconds to write 
down terms you associate 
with “scalability” 
Thomas Galvez @ Flickr
Blinking Words are words or phrases that take on many possible 
interpretations, and where definitions blink between different meanings 
depending upon who hears it. 
Note that the reason for the exercise is to show, how people with similar 
background can interpret terminology that is commonly used in their field 
very differently.
Adversarial Style: Two ideas enter, one idea leaves 
Collaborative Style: Participants build off of each others’ ideas, working 
together to create something new 
• Education systems across the world have often a bias towards adversarial 
communication 
• The goal for code reviews (and patch reviews) is inherently collaborative 
• BUT: often become Adversarial
Or Techniques to Debug a Conversation 
• High Quality Explanation 
• High Quality Inquiry 
• The Left Hand Column (what was said and what you were thinking) 
• The Ladder (a cognitive process on how humans draw conclusions) 
More Later
Culture, Roles, 
Community 
Goals 
Good Planning 
& Preparation 
Following 
workflow and 
conventions 
Good 
Communicati 
Systematic 
approach 
on
Awareness 
of Culture 
and others’ 
Perspective 
Good 
Planning 
and 
Preparation 
Following 
the Process 
and 
Conventions 
Systematic 
approach to 
acting on 
Feedback 
Good 
Communication
More Later 
Part 2: Xen Project Processes, Conventions and Governance 
Part 3: Communication – or avoiding misunderstandings

More Related Content

What's hot

[Container Runtime Meetup] runc & User Namespaces
[Container Runtime Meetup] runc & User Namespaces[Container Runtime Meetup] runc & User Namespaces
[Container Runtime Meetup] runc & User NamespacesAkihiro Suda
 
Bench, a Framework for Benchmarking Kafka Using K8s and OpenMessaging Benchma...
Bench, a Framework for Benchmarking Kafka Using K8s and OpenMessaging Benchma...Bench, a Framework for Benchmarking Kafka Using K8s and OpenMessaging Benchma...
Bench, a Framework for Benchmarking Kafka Using K8s and OpenMessaging Benchma...HostedbyConfluent
 
A Deep Dive into Kafka Controller
A Deep Dive into Kafka ControllerA Deep Dive into Kafka Controller
A Deep Dive into Kafka Controllerconfluent
 
Dv Pmysqluc Federation At Flickr Doing Billions Of Queries Per Day
Dv Pmysqluc Federation At Flickr Doing Billions Of Queries Per DayDv Pmysqluc Federation At Flickr Doing Billions Of Queries Per Day
Dv Pmysqluc Federation At Flickr Doing Billions Of Queries Per Daywebtel125
 
Understanding and Extending Prometheus AlertManager
Understanding and Extending Prometheus AlertManagerUnderstanding and Extending Prometheus AlertManager
Understanding and Extending Prometheus AlertManagerLee Calcote
 
Disaster Recovery with MirrorMaker 2.0 (Ryanne Dolan, Cloudera) Kafka Summit ...
Disaster Recovery with MirrorMaker 2.0 (Ryanne Dolan, Cloudera) Kafka Summit ...Disaster Recovery with MirrorMaker 2.0 (Ryanne Dolan, Cloudera) Kafka Summit ...
Disaster Recovery with MirrorMaker 2.0 (Ryanne Dolan, Cloudera) Kafka Summit ...confluent
 
APACHE KAFKA / Kafka Connect / Kafka Streams
APACHE KAFKA / Kafka Connect / Kafka StreamsAPACHE KAFKA / Kafka Connect / Kafka Streams
APACHE KAFKA / Kafka Connect / Kafka StreamsKetan Gote
 
Introduction to the Disruptor
Introduction to the DisruptorIntroduction to the Disruptor
Introduction to the DisruptorTrisha Gee
 
Learned from KIND
Learned from KIND Learned from KIND
Learned from KIND HungWei Chiu
 
CAP Theorem and Split Brain Syndrome
CAP Theorem and Split Brain SyndromeCAP Theorem and Split Brain Syndrome
CAP Theorem and Split Brain SyndromeDilum Bandara
 
OpenStackでも重要な役割を果たすPacemakerを知ろう!
OpenStackでも重要な役割を果たすPacemakerを知ろう!OpenStackでも重要な役割を果たすPacemakerを知ろう!
OpenStackでも重要な役割を果たすPacemakerを知ろう!ksk_ha
 
Kubernetes Architecture
 Kubernetes Architecture Kubernetes Architecture
Kubernetes ArchitectureKnoldus Inc.
 
Resilience Engineering on Kubernetes
Resilience Engineering on KubernetesResilience Engineering on Kubernetes
Resilience Engineering on KubernetesToru Makabe
 

What's hot (20)

[Container Runtime Meetup] runc & User Namespaces
[Container Runtime Meetup] runc & User Namespaces[Container Runtime Meetup] runc & User Namespaces
[Container Runtime Meetup] runc & User Namespaces
 
Bench, a Framework for Benchmarking Kafka Using K8s and OpenMessaging Benchma...
Bench, a Framework for Benchmarking Kafka Using K8s and OpenMessaging Benchma...Bench, a Framework for Benchmarking Kafka Using K8s and OpenMessaging Benchma...
Bench, a Framework for Benchmarking Kafka Using K8s and OpenMessaging Benchma...
 
Introduction to SELinux Part-I
Introduction to SELinux Part-IIntroduction to SELinux Part-I
Introduction to SELinux Part-I
 
A Deep Dive into Kafka Controller
A Deep Dive into Kafka ControllerA Deep Dive into Kafka Controller
A Deep Dive into Kafka Controller
 
Yaml
YamlYaml
Yaml
 
Dv Pmysqluc Federation At Flickr Doing Billions Of Queries Per Day
Dv Pmysqluc Federation At Flickr Doing Billions Of Queries Per DayDv Pmysqluc Federation At Flickr Doing Billions Of Queries Per Day
Dv Pmysqluc Federation At Flickr Doing Billions Of Queries Per Day
 
Introduction to Apache Kafka
Introduction to Apache KafkaIntroduction to Apache Kafka
Introduction to Apache Kafka
 
Kubernetes Basics
Kubernetes BasicsKubernetes Basics
Kubernetes Basics
 
Understanding and Extending Prometheus AlertManager
Understanding and Extending Prometheus AlertManagerUnderstanding and Extending Prometheus AlertManager
Understanding and Extending Prometheus AlertManager
 
Disaster Recovery with MirrorMaker 2.0 (Ryanne Dolan, Cloudera) Kafka Summit ...
Disaster Recovery with MirrorMaker 2.0 (Ryanne Dolan, Cloudera) Kafka Summit ...Disaster Recovery with MirrorMaker 2.0 (Ryanne Dolan, Cloudera) Kafka Summit ...
Disaster Recovery with MirrorMaker 2.0 (Ryanne Dolan, Cloudera) Kafka Summit ...
 
APACHE KAFKA / Kafka Connect / Kafka Streams
APACHE KAFKA / Kafka Connect / Kafka StreamsAPACHE KAFKA / Kafka Connect / Kafka Streams
APACHE KAFKA / Kafka Connect / Kafka Streams
 
Kubernetes 101
Kubernetes 101Kubernetes 101
Kubernetes 101
 
Introduction to the Disruptor
Introduction to the DisruptorIntroduction to the Disruptor
Introduction to the Disruptor
 
Learned from KIND
Learned from KIND Learned from KIND
Learned from KIND
 
CAP Theorem and Split Brain Syndrome
CAP Theorem and Split Brain SyndromeCAP Theorem and Split Brain Syndrome
CAP Theorem and Split Brain Syndrome
 
Drools expert-docs
Drools expert-docsDrools expert-docs
Drools expert-docs
 
Gerrit tutorial
Gerrit tutorialGerrit tutorial
Gerrit tutorial
 
OpenStackでも重要な役割を果たすPacemakerを知ろう!
OpenStackでも重要な役割を果たすPacemakerを知ろう!OpenStackでも重要な役割を果たすPacemakerを知ろう!
OpenStackでも重要な役割を果たすPacemakerを知ろう!
 
Kubernetes Architecture
 Kubernetes Architecture Kubernetes Architecture
Kubernetes Architecture
 
Resilience Engineering on Kubernetes
Resilience Engineering on KubernetesResilience Engineering on Kubernetes
Resilience Engineering on Kubernetes
 

Similar to Xen Project Contributor Training - Part 1 introduction v1.0

Automated Code Reviews with AI and ML - DevOps Next
Automated Code Reviews with AI and ML - DevOps NextAutomated Code Reviews with AI and ML - DevOps Next
Automated Code Reviews with AI and ML - DevOps NextPerfecto by Perforce
 
Technical stories v1.2
Technical stories v1.2Technical stories v1.2
Technical stories v1.2Jim Brisson
 
Testers in product development code review phase
Testers in product development   code review phaseTesters in product development   code review phase
Testers in product development code review phaseChetan Giridhar
 
05 DIGI CREATIVE people&process
05 DIGI CREATIVE people&process05 DIGI CREATIVE people&process
05 DIGI CREATIVE people&processSheSaysCREATIVE
 
Effective code reviews
Effective code reviewsEffective code reviews
Effective code reviewsnextbuild
 
Precise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalPrecise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalLionel Briand
 
Code reviews: a short introduction
Code reviews: a short introductionCode reviews: a short introduction
Code reviews: a short introductionFreekDB
 
Technical debt strategy
Technical debt strategyTechnical debt strategy
Technical debt strategyMasas Dani
 
Capability Building for Cyber Defense: Software Walk through and Screening
Capability Building for Cyber Defense: Software Walk through and Screening Capability Building for Cyber Defense: Software Walk through and Screening
Capability Building for Cyber Defense: Software Walk through and Screening Maven Logix
 
Software Defects and SW Reliability Assessment
Software Defects and SW Reliability AssessmentSoftware Defects and SW Reliability Assessment
Software Defects and SW Reliability AssessmentKristine Hejna
 
A brief introduction to Enterprise and Industrial UX
A brief introduction to Enterprise and Industrial UXA brief introduction to Enterprise and Industrial UX
A brief introduction to Enterprise and Industrial UXLarry Burks
 
Agile Development – Why requirements matter by Fariz Saracevic
Agile Development – Why requirements matter by Fariz SaracevicAgile Development – Why requirements matter by Fariz Saracevic
Agile Development – Why requirements matter by Fariz SaracevicAgile ME
 
Agileand saas davepatterson_armandofox_050813webinar
Agileand saas davepatterson_armandofox_050813webinarAgileand saas davepatterson_armandofox_050813webinar
Agileand saas davepatterson_armandofox_050813webinarRoberto Jr. Figueroa
 
code_review_checklist_6_actions_to_improve_the_quality_of_your_reviews.pdf
code_review_checklist_6_actions_to_improve_the_quality_of_your_reviews.pdfcode_review_checklist_6_actions_to_improve_the_quality_of_your_reviews.pdf
code_review_checklist_6_actions_to_improve_the_quality_of_your_reviews.pdfsarah david
 
code_review_checklist_6_actions_to_improve_the_quality_of_your_reviews.pptx
code_review_checklist_6_actions_to_improve_the_quality_of_your_reviews.pptxcode_review_checklist_6_actions_to_improve_the_quality_of_your_reviews.pptx
code_review_checklist_6_actions_to_improve_the_quality_of_your_reviews.pptxsarah david
 
Requirement Analysis
Requirement AnalysisRequirement Analysis
Requirement AnalysisSADEED AMEEN
 
Life in Apache Software Foundation
Life in Apache Software FoundationLife in Apache Software Foundation
Life in Apache Software FoundationAshish Singhi
 

Similar to Xen Project Contributor Training - Part 1 introduction v1.0 (20)

Automated Code Reviews with AI and ML - DevOps Next
Automated Code Reviews with AI and ML - DevOps NextAutomated Code Reviews with AI and ML - DevOps Next
Automated Code Reviews with AI and ML - DevOps Next
 
Technical stories v1.2
Technical stories v1.2Technical stories v1.2
Technical stories v1.2
 
Testers in product development code review phase
Testers in product development   code review phaseTesters in product development   code review phase
Testers in product development code review phase
 
Software testing
Software testingSoftware testing
Software testing
 
05 DIGI CREATIVE people&process
05 DIGI CREATIVE people&process05 DIGI CREATIVE people&process
05 DIGI CREATIVE people&process
 
Effective code reviews
Effective code reviewsEffective code reviews
Effective code reviews
 
Precise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalPrecise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive Goal
 
Code reviews: a short introduction
Code reviews: a short introductionCode reviews: a short introduction
Code reviews: a short introduction
 
Technical debt strategy
Technical debt strategyTechnical debt strategy
Technical debt strategy
 
The Role of the Architect
The Role of the ArchitectThe Role of the Architect
The Role of the Architect
 
Capability Building for Cyber Defense: Software Walk through and Screening
Capability Building for Cyber Defense: Software Walk through and Screening Capability Building for Cyber Defense: Software Walk through and Screening
Capability Building for Cyber Defense: Software Walk through and Screening
 
Software Defects and SW Reliability Assessment
Software Defects and SW Reliability AssessmentSoftware Defects and SW Reliability Assessment
Software Defects and SW Reliability Assessment
 
A brief introduction to Enterprise and Industrial UX
A brief introduction to Enterprise and Industrial UXA brief introduction to Enterprise and Industrial UX
A brief introduction to Enterprise and Industrial UX
 
Agile Development – Why requirements matter by Fariz Saracevic
Agile Development – Why requirements matter by Fariz SaracevicAgile Development – Why requirements matter by Fariz Saracevic
Agile Development – Why requirements matter by Fariz Saracevic
 
Interactive SDLC
Interactive SDLCInteractive SDLC
Interactive SDLC
 
Agileand saas davepatterson_armandofox_050813webinar
Agileand saas davepatterson_armandofox_050813webinarAgileand saas davepatterson_armandofox_050813webinar
Agileand saas davepatterson_armandofox_050813webinar
 
code_review_checklist_6_actions_to_improve_the_quality_of_your_reviews.pdf
code_review_checklist_6_actions_to_improve_the_quality_of_your_reviews.pdfcode_review_checklist_6_actions_to_improve_the_quality_of_your_reviews.pdf
code_review_checklist_6_actions_to_improve_the_quality_of_your_reviews.pdf
 
code_review_checklist_6_actions_to_improve_the_quality_of_your_reviews.pptx
code_review_checklist_6_actions_to_improve_the_quality_of_your_reviews.pptxcode_review_checklist_6_actions_to_improve_the_quality_of_your_reviews.pptx
code_review_checklist_6_actions_to_improve_the_quality_of_your_reviews.pptx
 
Requirement Analysis
Requirement AnalysisRequirement Analysis
Requirement Analysis
 
Life in Apache Software Foundation
Life in Apache Software FoundationLife in Apache Software Foundation
Life in Apache Software Foundation
 

More from The Linux Foundation

ELC2019: Static Partitioning Made Simple
ELC2019: Static Partitioning Made SimpleELC2019: Static Partitioning Made Simple
ELC2019: Static Partitioning Made SimpleThe Linux Foundation
 
XPDDS19: How TrenchBoot is Enabling Measured Launch for Open-Source Platform ...
XPDDS19: How TrenchBoot is Enabling Measured Launch for Open-Source Platform ...XPDDS19: How TrenchBoot is Enabling Measured Launch for Open-Source Platform ...
XPDDS19: How TrenchBoot is Enabling Measured Launch for Open-Source Platform ...The Linux Foundation
 
XPDDS19 Keynote: Xen in Automotive - Artem Mygaiev, Director, Technology Solu...
XPDDS19 Keynote: Xen in Automotive - Artem Mygaiev, Director, Technology Solu...XPDDS19 Keynote: Xen in Automotive - Artem Mygaiev, Director, Technology Solu...
XPDDS19 Keynote: Xen in Automotive - Artem Mygaiev, Director, Technology Solu...The Linux Foundation
 
XPDDS19 Keynote: Xen Project Weather Report 2019 - Lars Kurth, Director of Op...
XPDDS19 Keynote: Xen Project Weather Report 2019 - Lars Kurth, Director of Op...XPDDS19 Keynote: Xen Project Weather Report 2019 - Lars Kurth, Director of Op...
XPDDS19 Keynote: Xen Project Weather Report 2019 - Lars Kurth, Director of Op...The Linux Foundation
 
XPDDS19 Keynote: Unikraft Weather Report
XPDDS19 Keynote:  Unikraft Weather ReportXPDDS19 Keynote:  Unikraft Weather Report
XPDDS19 Keynote: Unikraft Weather ReportThe Linux Foundation
 
XPDDS19 Keynote: Secret-free Hypervisor: Now and Future - Wei Liu, Software E...
XPDDS19 Keynote: Secret-free Hypervisor: Now and Future - Wei Liu, Software E...XPDDS19 Keynote: Secret-free Hypervisor: Now and Future - Wei Liu, Software E...
XPDDS19 Keynote: Secret-free Hypervisor: Now and Future - Wei Liu, Software E...The Linux Foundation
 
XPDDS19 Keynote: Xen Dom0-less - Stefano Stabellini, Principal Engineer, Xilinx
XPDDS19 Keynote: Xen Dom0-less - Stefano Stabellini, Principal Engineer, XilinxXPDDS19 Keynote: Xen Dom0-less - Stefano Stabellini, Principal Engineer, Xilinx
XPDDS19 Keynote: Xen Dom0-less - Stefano Stabellini, Principal Engineer, XilinxThe Linux Foundation
 
XPDDS19 Keynote: Patch Review for Non-maintainers - George Dunlap, Citrix Sys...
XPDDS19 Keynote: Patch Review for Non-maintainers - George Dunlap, Citrix Sys...XPDDS19 Keynote: Patch Review for Non-maintainers - George Dunlap, Citrix Sys...
XPDDS19 Keynote: Patch Review for Non-maintainers - George Dunlap, Citrix Sys...The Linux Foundation
 
XPDDS19: Memories of a VM Funk - Mihai Donțu, Bitdefender
XPDDS19: Memories of a VM Funk - Mihai Donțu, BitdefenderXPDDS19: Memories of a VM Funk - Mihai Donțu, Bitdefender
XPDDS19: Memories of a VM Funk - Mihai Donțu, BitdefenderThe Linux Foundation
 
OSSJP/ALS19: The Road to Safety Certification: Overcoming Community Challeng...
OSSJP/ALS19:  The Road to Safety Certification: Overcoming Community Challeng...OSSJP/ALS19:  The Road to Safety Certification: Overcoming Community Challeng...
OSSJP/ALS19: The Road to Safety Certification: Overcoming Community Challeng...The Linux Foundation
 
OSSJP/ALS19: The Road to Safety Certification: How the Xen Project is Making...
 OSSJP/ALS19: The Road to Safety Certification: How the Xen Project is Making... OSSJP/ALS19: The Road to Safety Certification: How the Xen Project is Making...
OSSJP/ALS19: The Road to Safety Certification: How the Xen Project is Making...The Linux Foundation
 
XPDDS19: Speculative Sidechannels and Mitigations - Andrew Cooper, Citrix
XPDDS19: Speculative Sidechannels and Mitigations - Andrew Cooper, CitrixXPDDS19: Speculative Sidechannels and Mitigations - Andrew Cooper, Citrix
XPDDS19: Speculative Sidechannels and Mitigations - Andrew Cooper, CitrixThe Linux Foundation
 
XPDDS19: Keeping Coherency on Arm: Reborn - Julien Grall, Arm ltd
XPDDS19: Keeping Coherency on Arm: Reborn - Julien Grall, Arm ltdXPDDS19: Keeping Coherency on Arm: Reborn - Julien Grall, Arm ltd
XPDDS19: Keeping Coherency on Arm: Reborn - Julien Grall, Arm ltdThe Linux Foundation
 
XPDDS19: QEMU PV Backend 'qdevification'... What Does it Mean? - Paul Durrant...
XPDDS19: QEMU PV Backend 'qdevification'... What Does it Mean? - Paul Durrant...XPDDS19: QEMU PV Backend 'qdevification'... What Does it Mean? - Paul Durrant...
XPDDS19: QEMU PV Backend 'qdevification'... What Does it Mean? - Paul Durrant...The Linux Foundation
 
XPDDS19: Status of PCI Emulation in Xen - Roger Pau Monné, Citrix Systems R&D
XPDDS19: Status of PCI Emulation in Xen - Roger Pau Monné, Citrix Systems R&DXPDDS19: Status of PCI Emulation in Xen - Roger Pau Monné, Citrix Systems R&D
XPDDS19: Status of PCI Emulation in Xen - Roger Pau Monné, Citrix Systems R&DThe Linux Foundation
 
XPDDS19: [ARM] OP-TEE Mediator in Xen - Volodymyr Babchuk, EPAM Systems
XPDDS19: [ARM] OP-TEE Mediator in Xen - Volodymyr Babchuk, EPAM SystemsXPDDS19: [ARM] OP-TEE Mediator in Xen - Volodymyr Babchuk, EPAM Systems
XPDDS19: [ARM] OP-TEE Mediator in Xen - Volodymyr Babchuk, EPAM SystemsThe Linux Foundation
 
XPDDS19: Bringing Xen to the Masses: The Story of Building a Community-driven...
XPDDS19: Bringing Xen to the Masses: The Story of Building a Community-driven...XPDDS19: Bringing Xen to the Masses: The Story of Building a Community-driven...
XPDDS19: Bringing Xen to the Masses: The Story of Building a Community-driven...The Linux Foundation
 
XPDDS19: Will Robots Automate Your Job Away? Streamlining Xen Project Contrib...
XPDDS19: Will Robots Automate Your Job Away? Streamlining Xen Project Contrib...XPDDS19: Will Robots Automate Your Job Away? Streamlining Xen Project Contrib...
XPDDS19: Will Robots Automate Your Job Away? Streamlining Xen Project Contrib...The Linux Foundation
 
XPDDS19: Client Virtualization Toolstack in Go - Nick Rosbrook & Brendan Kerr...
XPDDS19: Client Virtualization Toolstack in Go - Nick Rosbrook & Brendan Kerr...XPDDS19: Client Virtualization Toolstack in Go - Nick Rosbrook & Brendan Kerr...
XPDDS19: Client Virtualization Toolstack in Go - Nick Rosbrook & Brendan Kerr...The Linux Foundation
 
XPDDS19: Core Scheduling in Xen - Jürgen Groß, SUSE
XPDDS19: Core Scheduling in Xen - Jürgen Groß, SUSEXPDDS19: Core Scheduling in Xen - Jürgen Groß, SUSE
XPDDS19: Core Scheduling in Xen - Jürgen Groß, SUSEThe Linux Foundation
 

More from The Linux Foundation (20)

ELC2019: Static Partitioning Made Simple
ELC2019: Static Partitioning Made SimpleELC2019: Static Partitioning Made Simple
ELC2019: Static Partitioning Made Simple
 
XPDDS19: How TrenchBoot is Enabling Measured Launch for Open-Source Platform ...
XPDDS19: How TrenchBoot is Enabling Measured Launch for Open-Source Platform ...XPDDS19: How TrenchBoot is Enabling Measured Launch for Open-Source Platform ...
XPDDS19: How TrenchBoot is Enabling Measured Launch for Open-Source Platform ...
 
XPDDS19 Keynote: Xen in Automotive - Artem Mygaiev, Director, Technology Solu...
XPDDS19 Keynote: Xen in Automotive - Artem Mygaiev, Director, Technology Solu...XPDDS19 Keynote: Xen in Automotive - Artem Mygaiev, Director, Technology Solu...
XPDDS19 Keynote: Xen in Automotive - Artem Mygaiev, Director, Technology Solu...
 
XPDDS19 Keynote: Xen Project Weather Report 2019 - Lars Kurth, Director of Op...
XPDDS19 Keynote: Xen Project Weather Report 2019 - Lars Kurth, Director of Op...XPDDS19 Keynote: Xen Project Weather Report 2019 - Lars Kurth, Director of Op...
XPDDS19 Keynote: Xen Project Weather Report 2019 - Lars Kurth, Director of Op...
 
XPDDS19 Keynote: Unikraft Weather Report
XPDDS19 Keynote:  Unikraft Weather ReportXPDDS19 Keynote:  Unikraft Weather Report
XPDDS19 Keynote: Unikraft Weather Report
 
XPDDS19 Keynote: Secret-free Hypervisor: Now and Future - Wei Liu, Software E...
XPDDS19 Keynote: Secret-free Hypervisor: Now and Future - Wei Liu, Software E...XPDDS19 Keynote: Secret-free Hypervisor: Now and Future - Wei Liu, Software E...
XPDDS19 Keynote: Secret-free Hypervisor: Now and Future - Wei Liu, Software E...
 
XPDDS19 Keynote: Xen Dom0-less - Stefano Stabellini, Principal Engineer, Xilinx
XPDDS19 Keynote: Xen Dom0-less - Stefano Stabellini, Principal Engineer, XilinxXPDDS19 Keynote: Xen Dom0-less - Stefano Stabellini, Principal Engineer, Xilinx
XPDDS19 Keynote: Xen Dom0-less - Stefano Stabellini, Principal Engineer, Xilinx
 
XPDDS19 Keynote: Patch Review for Non-maintainers - George Dunlap, Citrix Sys...
XPDDS19 Keynote: Patch Review for Non-maintainers - George Dunlap, Citrix Sys...XPDDS19 Keynote: Patch Review for Non-maintainers - George Dunlap, Citrix Sys...
XPDDS19 Keynote: Patch Review for Non-maintainers - George Dunlap, Citrix Sys...
 
XPDDS19: Memories of a VM Funk - Mihai Donțu, Bitdefender
XPDDS19: Memories of a VM Funk - Mihai Donțu, BitdefenderXPDDS19: Memories of a VM Funk - Mihai Donțu, Bitdefender
XPDDS19: Memories of a VM Funk - Mihai Donțu, Bitdefender
 
OSSJP/ALS19: The Road to Safety Certification: Overcoming Community Challeng...
OSSJP/ALS19:  The Road to Safety Certification: Overcoming Community Challeng...OSSJP/ALS19:  The Road to Safety Certification: Overcoming Community Challeng...
OSSJP/ALS19: The Road to Safety Certification: Overcoming Community Challeng...
 
OSSJP/ALS19: The Road to Safety Certification: How the Xen Project is Making...
 OSSJP/ALS19: The Road to Safety Certification: How the Xen Project is Making... OSSJP/ALS19: The Road to Safety Certification: How the Xen Project is Making...
OSSJP/ALS19: The Road to Safety Certification: How the Xen Project is Making...
 
XPDDS19: Speculative Sidechannels and Mitigations - Andrew Cooper, Citrix
XPDDS19: Speculative Sidechannels and Mitigations - Andrew Cooper, CitrixXPDDS19: Speculative Sidechannels and Mitigations - Andrew Cooper, Citrix
XPDDS19: Speculative Sidechannels and Mitigations - Andrew Cooper, Citrix
 
XPDDS19: Keeping Coherency on Arm: Reborn - Julien Grall, Arm ltd
XPDDS19: Keeping Coherency on Arm: Reborn - Julien Grall, Arm ltdXPDDS19: Keeping Coherency on Arm: Reborn - Julien Grall, Arm ltd
XPDDS19: Keeping Coherency on Arm: Reborn - Julien Grall, Arm ltd
 
XPDDS19: QEMU PV Backend 'qdevification'... What Does it Mean? - Paul Durrant...
XPDDS19: QEMU PV Backend 'qdevification'... What Does it Mean? - Paul Durrant...XPDDS19: QEMU PV Backend 'qdevification'... What Does it Mean? - Paul Durrant...
XPDDS19: QEMU PV Backend 'qdevification'... What Does it Mean? - Paul Durrant...
 
XPDDS19: Status of PCI Emulation in Xen - Roger Pau Monné, Citrix Systems R&D
XPDDS19: Status of PCI Emulation in Xen - Roger Pau Monné, Citrix Systems R&DXPDDS19: Status of PCI Emulation in Xen - Roger Pau Monné, Citrix Systems R&D
XPDDS19: Status of PCI Emulation in Xen - Roger Pau Monné, Citrix Systems R&D
 
XPDDS19: [ARM] OP-TEE Mediator in Xen - Volodymyr Babchuk, EPAM Systems
XPDDS19: [ARM] OP-TEE Mediator in Xen - Volodymyr Babchuk, EPAM SystemsXPDDS19: [ARM] OP-TEE Mediator in Xen - Volodymyr Babchuk, EPAM Systems
XPDDS19: [ARM] OP-TEE Mediator in Xen - Volodymyr Babchuk, EPAM Systems
 
XPDDS19: Bringing Xen to the Masses: The Story of Building a Community-driven...
XPDDS19: Bringing Xen to the Masses: The Story of Building a Community-driven...XPDDS19: Bringing Xen to the Masses: The Story of Building a Community-driven...
XPDDS19: Bringing Xen to the Masses: The Story of Building a Community-driven...
 
XPDDS19: Will Robots Automate Your Job Away? Streamlining Xen Project Contrib...
XPDDS19: Will Robots Automate Your Job Away? Streamlining Xen Project Contrib...XPDDS19: Will Robots Automate Your Job Away? Streamlining Xen Project Contrib...
XPDDS19: Will Robots Automate Your Job Away? Streamlining Xen Project Contrib...
 
XPDDS19: Client Virtualization Toolstack in Go - Nick Rosbrook & Brendan Kerr...
XPDDS19: Client Virtualization Toolstack in Go - Nick Rosbrook & Brendan Kerr...XPDDS19: Client Virtualization Toolstack in Go - Nick Rosbrook & Brendan Kerr...
XPDDS19: Client Virtualization Toolstack in Go - Nick Rosbrook & Brendan Kerr...
 
XPDDS19: Core Scheduling in Xen - Jürgen Groß, SUSE
XPDDS19: Core Scheduling in Xen - Jürgen Groß, SUSEXPDDS19: Core Scheduling in Xen - Jürgen Groß, SUSE
XPDDS19: Core Scheduling in Xen - Jürgen Groß, SUSE
 

Xen Project Contributor Training - Part 1 introduction v1.0

  • 1. Lars Kurth Community Manager, Xen Project Chairman, Xen Project Advisory Board Director, Open Source Business Office, Citrix lars_kurth
  • 2. Culture, Roles, Community Goals Good Planning & Preparation Following workflow and conventions Good Communicati Systematic approach on Unnecessary iterations, misunderstandings and wasted time of contributor and reviewers time Wrong expectations leading to frustration and conflict
  • 3. Goal: Effective Contributions Factors that impact Effectiveness Motivators of Community Stakeholders Common factors for disagreement when trying to contribute The case for Code Reviews: Find bugs early & often Factors impacting Review Duration Jumbled Reviews and Phasing Code Reviews: Theory Relevant Conventions and Processes in the Xen Project Systematic approach to acting on Feedback Communication is key : Avoid Misunderstandings
  • 4. Enable you to Work Efficiently with the Xen Project Developer Community Vinovyn @ Flickr
  • 5. Which factors impact the length of time it takes your patch to be up-streamed?
  • 6. • Get your code into the code line • Get it in as quickly as possible, with as little re-work as possible • Or at least, make the process of contributing predictable • You may be under pressure from a (product) manager Enabling feature or API which you want to be widely used Feature or API, that you are using in your product or service. In other words you don’t care much if someone else uses it Research purpose
  • 7. As a contributor, most of the time you want to get your code reviewed and accepted as quickly as possible, with as few modifications as possible Up to 1 week 1 to 2 weeks 2 to 3 weeks 3 to 6 weeks 6 to 13 weeks More than 13 weeks 43% 15% 10% 13% 11% 8%
  • 8. Reviewers, Maintainers, Committers, Project Lead • System Properties: Code readability, understanding what goes in, maintainability, quality, performance, scalability, … • Practical Issues: – Is this patch one I have to look at? – Reviewer / maintainer of the patch series – Archaeologist: years down the line – why is the code as it is? • Workload and personal: – Wants to avoid un-necessary workload – Day-job: aka other commitments – Has a personal communication style – Reputation within the community
  • 9. Problem 30% Community Growth p.a. Contributors competing for review time from stretched maintainer / reviewer base Average review time up from 28 to 32 days in 6 months
  • 10. Up to 1 week 1 to 2 weeks 2 to 3 weeks 3 to 6 weeks 6 to 13 weeks More than 13 weeks 43% 15% 10% 13% 11% 8% Gatekeepers ideally want code to go in quickly BUT: they also have many other factors to consider
  • 11. Contributor Gatekeeper Different mindset Different expectations Bad communication Misunderstandings Usually common interest Process, convention & tools Awareness, Mindset / Empathy, Planning, Good Communication, Trust / Respect, etc.
  • 12. The tension identified is not specific to OSS development, but is a property of Code Review Aka the tension between submitter and gatekeeper (reviewer) Vinovyn @ Flickr
  • 13. Culture, Roles, Community Goals Good Planning & Preparation Following workflow and conventions Good Communicati Systematic approach on
  • 14. The case for Peer Code Review Find Bugs Early and Often
  • 15. One of our customers set out to test exactly how much money the company would have saved had they used peer review in a certain three-month, 10,000-line project with 10 developers. They tracked how many bugs were found by QA and customers in the subsequent six months. Then they went back and had another group of developers peer-review the code in question. Using metrics from previous releases of this project they knew the average cost of fixing a defect at each phase of development, so they were able to measure directly how much money they would have saved. http://smartbear.com/smartbear/media/pdfs/ best-kept-secrets-of-peer-code-review.pdf
  • 16.
  • 18. • Projects don’t normally have a QA team è Bugs discovered later è even more expensive to fix • Customer (user) discovered bugs are usually found in derivatives è time-lag and thus cost to fix is even more expensive • Bugs in FOSS projects are often not fixed • Bugs and bad quality can damage the reputation of a project • And by extension they can damage the business interests and reputation of contributors to that project (including your own) • Asking maintainers to take your patch in without good review = Asking others to fix bugs and carry significant cost for you in future
  • 19. Culture, Roles, Community Goals Good Planning & Preparation Following workflow and conventions Good Communicati Systematic approach on
  • 20. • Type of feature – Useful to many stake-holders or just to a single vendor? – Is the use-case explained or understood? – Do reviewers have all the information they need to be able to review? • Complexity and Modularity – How many files and lines per patch? – How many components (hypervisor, qemu, toolstack, APIs, …)? – Does the structure of the patch/patch series help a review? – Do you need a design? • Readability – Is it easy to infer the design from the patch? – Do you follow Coding standards? – Are complex code snippets explained within comments in the patch? # of Iterations Each question may require a re-submit
  • 21. • Code Quality • Test failures, Coverity Scan, … – Will Coverity Scan throw up issues? – Do you need new Test Cases? – Should you include tests upfront? • Time and Experience – Delays may require rebasing the patch! – How responsive are you to reviewer comments? – How responsive is the reviewer? He/she may have a queue of requests! – Use past submission experience to estimate # of iterations – Your standing in the community (your track record) • Other factors – Some patches may require documentation (e.g. API docs) # of Iterations Mission Creep (e.g. additional requirements to minimize risk) Elapsed time per iteration adding up
  • 22. Later it becomes clear that there is an issue with the use-case, design, architecture or assumptions Reviewer takes pity on contributor Gives some feedback (e.g. coding style, …) May ask some questions about the use-case and/or the design … Significant re-work Extra effort for contributor and reviewer At this stage both may be somewhat annoyed (and we will get communication issues)
  • 23. Why do “jumbled” reviews happen?
  • 24. • Missing Information • Wrongly set expectations due to misunderstandings • The reviewer giving too detailed information before agreeing that he is happy with the use-case, architecture, design – and thus setting wrong expectations • Another reviewer getting involved later down the road – There is also then potential for disagreement
  • 25.
  • 26. Rationale (more if controversial) Use Case Context (Additional Information) Design (if complex) Assumptions (that you made) Code & Code Review Systematic approach to acting on Feedback Dealing with test issues
  • 27.
  • 28. • The Xen Project does not have a design requirement, but … {MORE LATER} – Designs are welcome, when it makes sense – When unsure, whether a design helps, ask: Outline the use-case, problem and approach you are planning to take. – Design discussions labeled “Design” + some version number + some text • Requests For Comments (RFCs) – For use-cases, prototypes, proof of concepts, etc. – Ask reviewers specific questions about, use-case, architecture, design, etc. & look at specific issues you want feedback on • Timing – Design or related questions best at beginning of release cycle – Make sure you understand and engage with the Release and Roadmap Process • Communication – Prompt reviewers: Do you agree with Y (e.g. the design), given X (e.g. that I got some detailed feedback on the code, but also some design related questions)? – The community is open to meetings in some cases (e.g. IRC meetings, calls, etc.) : high velocity communication can be more effective than mail. • BUT: it only works, if the key stake-holders agree to attend. • AND: document agreements / disagreements / open questions post the meeting by posting a summary to the list, such that there is a record
  • 29. Interesting Facts about Code Reviews In May of 2006 Cisco Systems performed a 10 month study of code reviews encompassing 2500 reviews of 3.2 million lines of code written by 50 developers. This is the largest case study ever done on what’s known as a “lightweight” code review process.
  • 30. • Reviewers become ineffective when reviewing code for more than an hour at a time è Thus, a patch should be reviewable in < 1 hour • Reviewers are most effective at reviewing small amounts of code. – Anything below 200 lines produces a high rate of defects, several times the average è Thus, a patch should ideally be < 200 LOC and not larger than 400 – After that the results trail off considerably; no review larger than 250 lines produced more than 37 defects per 1000 lines of code • Reviews with author preparation (annotations explaining changes) have significantly smaller defect densities compared to reviews without è Incidentally that helps the reviewer also
  • 31. • The “Ego Effect”: Developers whose code is being reviewed immediately develop code with fewer defects in them • Systematic Personal Growth: Developers who systematically address issues raised and make notes of classes of issues found, learn from their mistakes and from feedback and become better developers through self-awareness • Hurt Feelings: Taking criticism (in particular in public) isn’t easy. The point of code review is to find issues. Hurt feelings are in most cases, the consequence of miscommunication and/or misunderstandings and not intentional è Which is why we will look at communication techniques later
  • 32. Culture, Roles, Community Goals Good Planning & Preparation Following workflow and conventions Good Communicati Systematic approach on
  • 33.
  • 34. Preparation: Contributor gathers changes Contributor sends patch or patch series with meta-information (use case, rationale, design background, refs, …) to the mailing list Inspection / Review: Reviewer(s) examines code diffs following their own schedule and time constraints Debate until resolved (Maintainer ACK) Contributor keeps the process going (“Next revision”, “Are we done yet?”) Rework: Contributor responds to issues by making changes and sends new patch Acked-by: <Maintainer> Release Manager can object Staging: Committer checks changes into staging branch Test suite passes / fails; Coverity Scan issues Review Feedback Reviewed-by Tested-by … Test or scan fail Complete: Change moved into master branch No issue
  • 35. From Xen Project Governance • Principles: Openness, Transparency, Meritocracy • Roles: Maintainers, Committers, Project Lead • Conflict Resolution : Refereeing • Contribution Guidelines: Developer Certificate of Origin • Security Vulnerability Policy (relevant for Coverity Scan)
  • 36. Documented and regularly used undocumented conventions (however changes to these are made only in line with governance) • Patch contribution workflow • Sign off (Acked-by, reviewed-by, etc.) • Coding style • Release Manager Role and Release Process (aka different stages) • Access to Coverity Scan • Staging-to-master pushgate and automated testing • Personal repos hosted by Xen Project • Design reviews (informal) • Hackathons, Developer meetings, Ad-hoc meetings to resolve issues (informal)
  • 37. Culture, Roles, Community Goals Good Planning & Preparation Following workflow and conventions Good Communicati Systematic approach on
  • 38.
  • 39. • Feedback comes in hierarchical threads • Not always from one person • Feedback is not received in a linear list over time • Needs to fit your working style and personal preference – Otherwise you will get tired of it and won’t use it • Usually, it comes down to having one master list of issues somewhere – Otherwise you will “loose” or not act on bits of feedback
  • 40. How do you keep track of feedback from an email based code review? Thomas Galvez @ Flickr
  • 41. Culture, Roles, Community Goals Good Planning & Preparation Following workflow and conventions Good Communicati Systematic approach on
  • 42. You have 30 seconds to write down terms you associate with “scalability” Thomas Galvez @ Flickr
  • 43. Blinking Words are words or phrases that take on many possible interpretations, and where definitions blink between different meanings depending upon who hears it. Note that the reason for the exercise is to show, how people with similar background can interpret terminology that is commonly used in their field very differently.
  • 44. Adversarial Style: Two ideas enter, one idea leaves Collaborative Style: Participants build off of each others’ ideas, working together to create something new • Education systems across the world have often a bias towards adversarial communication • The goal for code reviews (and patch reviews) is inherently collaborative • BUT: often become Adversarial
  • 45. Or Techniques to Debug a Conversation • High Quality Explanation • High Quality Inquiry • The Left Hand Column (what was said and what you were thinking) • The Ladder (a cognitive process on how humans draw conclusions) More Later
  • 46. Culture, Roles, Community Goals Good Planning & Preparation Following workflow and conventions Good Communicati Systematic approach on
  • 47. Awareness of Culture and others’ Perspective Good Planning and Preparation Following the Process and Conventions Systematic approach to acting on Feedback Good Communication
  • 48. More Later Part 2: Xen Project Processes, Conventions and Governance Part 3: Communication – or avoiding misunderstandings