Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Work Practices and Challenges in Pull-Based Development: The Contributor’s Perspective

Work Practices and Challenges in Pull-Based Development: The Contributor’s Perspective

Presentation given by Georgios Gousios and Alberto Bacchelli at the 38th International Conference on Software Engineering.

Georgios Gousios

May 18, 2016
Tweet

More Decks by Georgios Gousios

Other Decks in Technology

Transcript

  1. 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

    View Slide

  2. Core developers
    Co-developers
    Community
    Users
    Open-source communities: The onion model

    View Slide

  3. GitHub’s pull-based development model
    core
    developer
    contributor
    (integrator)

    View Slide

  4. projects with > 1 integrators
    55% shared repository
    45% use pull requests
    GitHub’s pull-based development model: A success story
    0k
    100k
    200k
    300k
    400k
    500k
    600k
    700k
    2010 2011 2012 2013 2014 2015
    # of pull requests
    2016
    135k repos/month
    600k pull-requests/month

    View Slide

  5. The integrator’s perspective

    View Slide

  6. The integrator’s perspective: Plenty of research

    View Slide

  7. The integrator’s perspective: Plenty of research

    View Slide

  8. View Slide

  9. Decide change
    Code/Check quality
    Submit
    Discuss intentions Feedback
    Code review
    Submit
    Proposed fixes
    Discuss fixes
    Code review
    Accept
    Code/Check quality
    contributors integrators

    View Slide

  10. Decide change
    Code/Check quality
    Submit
    Discuss intentions Feedback
    Code review
    Submit
    Proposed fixes
    Discuss fixes
    Code review
    Accept
    Code/Check quality
    contributors integrators

    View Slide

  11. Decide change
    Code/Check quality
    Submit
    Discuss intentions Feedback
    Code review
    Submit
    Proposed fixes
    Discuss fixes
    Code review
    Accept
    Code/Check quality
    The contributor’s perspective
    contributors integrators

    View Slide

  12. Research Questions

    View Slide

  13. RQ1: How do contributors prepare contributions?
    Research Questions

    View Slide

  14. RQ1: How do contributors prepare contributions?
    1. What do they do before & after coding?
    Research Questions

    View Slide

  15. 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

    View Slide

  16. 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

    View Slide

  17. 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

    View Slide

  18. GHTorrent
    Final
    Survey
    Performance
    Reports
    The contributor’s perspective: Research method

    View Slide

  19. GHTorrent
    Final
    Survey
    Performance
    Reports
    4,167 contributors
    (760 responses)
    The contributor’s perspective: Research method

    View Slide

  20. GHTorrent
    Final
    Survey
    Analysis / filtering
    (15 closed questions)
    Performance
    Reports
    researchers
    Card sorting
    (7 open questions)
    4,167 contributors
    (760 responses)
    The contributor’s perspective: Research method

    View Slide

  21. GHTorrent
    Final
    Survey
    Analysis / filtering
    (15 closed questions)
    Performance
    Reports
    researchers
    Card sorting
    (7 open questions)
    4,167 contributors
    (760 responses)
    Results
    The contributor’s perspective: Research method

    View Slide

  22. 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

    View Slide

  23. % 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

    View Slide

  24. 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

    View Slide

  25. 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

    View Slide

  26. 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

    View Slide

  27. 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

    View Slide

  28. 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

    View Slide

  29. 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

    View Slide

  30. 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

    View Slide

  31. 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

    View Slide

  32. 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

    View Slide

  33. 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

    View Slide

  34. 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”

    View Slide

  35. “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

    View Slide

  36. “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

    View Slide

  37. “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

    View Slide

  38. 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

    View Slide

  39. 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”

    View Slide

  40. 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

    View Slide

  41. 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.”

    View Slide

  42. The contributor’s perspective: Main Themes

    View Slide

  43. The contributor’s perspective: Main Themes
    awareness

    View Slide

  44. The contributor’s perspective: Main Themes
    awareness transparency

    View Slide

  45. The contributor’s perspective: Main Themes
    responsiveness
    awareness transparency

    View Slide

  46. awareness
    The contributor’s perspective: Main Themes
    transparency
    responsiveness asynchrony

    View Slide

  47. The contributor’s and integrator’s perspective: It takes two to tango

    View Slide

  48. quality
    The contributor’s and integrator’s perspective: It takes two to tango

    View Slide

  49. quality
    The contributor’s and integrator’s perspective: It takes two to tango
    lack of process

    View Slide

  50. quality
    The contributor’s and integrator’s perspective: It takes two to tango
    lack of process
    workload and responsiveness

    View Slide

  51. quality
    The contributor’s and integrator’s perspective: It takes two to tango
    lack of process
    workload and responsiveness communication

    View Slide

  52. Actionable points

    View Slide

  53. 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

    View Slide

  54. 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

    View Slide

  55. Pull-Based Development: The Contributor’s Perspective

    View Slide

  56. Pull-Based Development: The Contributor’s Perspective

    View Slide

  57. Pull-Based Development: The Contributor’s Perspective

    View Slide

  58. Pull-Based Development: The Contributor’s Perspective

    View Slide

  59. Pull-Based Development: The Contributor’s Perspective

    View Slide

  60. Pull-Based Development: The Contributor’s Perspective
    @gousiosg
    @sback_

    View Slide