Work Practices and Challenges in Pull-Based Development: The Contributor’s Perspective Georgios Gousios @gousiosg Margaret-Anne Storey @margeretstorey Alberto Bacchelli @sback_ pull-based contributions
RQ1: How do contributors prepare contributions? 1. What do they do before & after coding? 2. How do they assess their contribution’s quality? Research Questions
RQ1: How do contributors prepare contributions? 1. What do they do before & after coding? 2. How do they assess their contribution’s quality? 3. How do they communicate the intended change? Research Questions
RQ1: How do contributors prepare contributions? 1. What do they do before & after coding? 2. How do they assess their contribution’s quality? 3. How do they communicate the intended change? RQ2: What are the key challenges they face? Research Questions
RQ1: How do contributors prepare contributions? 1. What do they do before & after coding? 2. How do they assess their contribution’s quality? 3. How do they communicate the intended change? RQ2: What are the key challenges they face? Research Questions
% of responses The contributor’s perspective: Before coding a contribution Look up open issues Check for similar PRs Check rel. discussions Check guidelines Communicate changes Check other forks 0 50 100 150 20 Never or Occasionaly Often or Always 100 0 100
Run tests Check against guidelines Check rel. discussions Check for similar PRs Check other branches 0 50 100 150 20 Never or Occasionaly Often or Always % of responses The contributor’s perspective: After coding a contribution 100 0 100
RQ1: How do contributors prepare contributions? 1. What do they do before & after coding? 2. How do they assess their contribution’s quality? 3. How do they communicate the intended change? RQ2: What are the key challenges they face? Research Questions
Testing Self review Manual testing Compliance Static Analysis CI Self containment Documentation Building 0 15 30 45 60 % of responses The contributor’s perspective: Assessing their contribution’s quality What is evaluated How it is evaluated
Testing Self review Manual testing Compliance Static Analysis CI Self containment Documentation Building 0 15 30 45 60 % of responses The contributor’s perspective: Assessing their contribution’s quality What is evaluated How it is evaluated
Testing Self review Manual testing Compliance Static Analysis CI Self containment Documentation Building 0 15 30 45 60 % of responses The contributor’s perspective: Assessing their contribution’s quality What is evaluated How it is evaluated
seeking information related to change The contributor’s perspective: What happens before submitting not communicating intent verifying quality using testing trying to adhere to project style
RQ1: How do contributors prepare contributions? 1. What do they do before & after coding? 2. How do they assess their contribution’s quality? 3. How do they communicate the intended change? RQ2: What are the key challenges they face? Research Questions
Issue tracker Pull request Email IRC F2F Sync communication Twitter Other Do not communicate 0 20 40 60 80 % of responses The contributor’s perspective: Communicating the intended change
RQ1: How do contributors prepare contributions? 1. What do they do before & after coding? 2. How do they assess their contribution’s quality? 3. How do they communicate the intended change? RQ2: What are the key challenges they face? Research Questions
The contributor’s perspective: Key challenges they face Implications for researchers Understanding the code Evaluate the impact Ensure project compliance Dealing with git and conflicts Technical challenges
The contributor’s perspective: Key challenges they face Implications for researchers Understanding the code Evaluate the impact Ensure project compliance Dealing with git and conflicts Technical challenges Understanding the code Evaluate the impact Ensure project compliance Dealing with git and conflicts “Missing knowledge about inner workings of a project [...] sometimes caused by missing documentation”
“Ensuring that my PR doesn’t have unintended side effects due to not being intimately familiar with the entire code base.” The contributor’s perspective: Key challenges they face Implications for researchers Understanding the code Evaluate the impact Ensure project compliance Dealing with git and conflicts Technical challenges Understanding the code Evaluate the impact Ensure project compliance Dealing with git and conflicts
“Unsure of code style, pull requests format, commit message formats, etc.” The contributor’s perspective: Key challenges they face Implications for researchers Understanding the code Evaluate the impact Ensure project compliance Dealing with git and conflicts Technical challenges Understanding the code Evaluate the impact Ensure project compliance Dealing with git and conflicts
“Usage of git is not intuitive. Especially for me as [one] who does not contribute regularly, it is every time a challenge to [use it]” The contributor’s perspective: Key challenges they face Implications for researchers Understanding the code Evaluate the impact Ensure project compliance Dealing with git and conflicts Technical challenges Understanding the code Evaluate the impact Ensure project compliance Dealing with git and conflicts
The contributor’s perspective: Key challenges they face Implications for researchers Understanding the code Evaluate the impact Ensure project compliance Dealing with git and conflicts Technical challenges Implications for researchers Dealing with unresponsiveness Explaining the rationale Fearing rejection Social challenges Dealing with unresponsiveness Explaining the rationale Fearing rejection
The contributor’s perspective: Key challenges they face Implications for researchers Understanding the code Evaluate the impact Ensure project compliance Dealing with git and conflicts Technical challenges Implications for researchers Dealing with unresponsiveness Explaining the rationale Fearing rejection Social challenges Dealing with unresponsiveness Explaining the rationale Fearing rejection “The owner of the repo doesn’t ever respond to the PR and leaves it hanging open forever”
Sometimes it’s hard to explain the need for some changes. Some teams will immediately reject them without analyzing them properly The contributor’s perspective: Key challenges they face Implications for researchers Understanding the code Evaluate the impact Ensure project compliance Dealing with git and conflicts Technical challenges Implications for researchers Dealing with unresponsiveness Explaining the rationale Fearing rejection Social challenges Dealing with unresponsiveness Explaining the rationale Fearing rejection
The contributor’s perspective: Key challenges they face Implications for researchers Understanding the code Evaluate the impact Ensure project compliance Dealing with git and conflicts Technical challenges Implications for researchers Dealing with unresponsiveness Explaining the rationale Fearing rejection Social challenges Dealing with unresponsiveness Explaining the rationale Fearing rejection “Fear of looking stupid.” “Fear of rude response.”
Actionable points Implications for researchers Prioritize work automatically Estimate time for merging Untangle code changes Analyze impact of changes Improve awareness & communication Implications for researchers
Actionable points Implications for researchers Prioritize work automatically Estimate time for merging Untangle code changes Analyze impact of changes Improve awareness & communication Implications for researchers Recommendations for contributors Minimize friction Maximize awareness Build a solid profile Recommendations for contributors