continuous integration in a social coding world
play

Continuous integration in a social-coding world Bogdan Vasilescu, - PowerPoint PPT Presentation

Continuous integration in a social-coding world Bogdan Vasilescu, Stef van Schuylenburg, Jules Wulms, Alexander Serebrenik, Mark G. J. van den Brand @b_vasilescu @aserebrenik #icsme14 ICSME 2014, Victoria, BC, Canada Integration [used


  1. Continuous integration in a social-coding world Bogdan Vasilescu, Stef van Schuylenburg, Jules Wulms, Alexander Serebrenik, Mark G. J. van den Brand @b_vasilescu @aserebrenik #icsme14 ICSME 2014, Victoria, BC, Canada

  2. Integration “[used to be] a long and unpredictable process” (Martin Fowler, 2000) Development stops Integration starts @b_vasilescu @aserebrenik #icsme14 ICSME 2014, Victoria, BC, Canada

  3. Continuous Integration speeds up collaborative software development by reducing integration problems integration with every commit @b_vasilescu @aserebrenik #icsme14 ICSME 2014, Victoria, BC, Canada

  4. Continuous Integration speeds up collaborative software development by reducing integration problems integration with every commit Report Initiate CI process T est Tests Build @b_vasilescu @aserebrenik #icsme14 ICSME 2014, Victoria, BC, Canada

  5. “There are 7.1M people collaborating right now across 15.9M repositories on GitHub. Developers from all around the world are building amazing things together. Their story is our story.” https://github.com/about/press How are GitHub developers using CI? @b_vasilescu @aserebrenik #icsme14 ICSME 2014, Victoria, BC, Canada

  6. How are GitHub developers using CI? 80 60 count 40 20 0 Java Python Ruby Programming.language (1) Most projects are configured to use CI, but less than half actually do. not configured configured but not using configured and using @b_vasilescu @aserebrenik #icsme14 ICSME 2014, Victoria, BC, Canada

  7. GitHub workflow Contributing to IronCat’s repository Jean-Luc Picat Octocat Spocktocat IronCat <created> Repository @b_vasilescu @aserebrenik #icsme14 ICSME 2014, Victoria, BC, Canada

  8. GitHub workflow Jean-Luc Collaborators Picat Octocat Spocktocat <push> (commit) IronCat <created> Repository @b_vasilescu @aserebrenik #icsme14 ICSME 2014, Victoria, BC, Canada

  9. GitHub workflow Jean-Luc Picat Octocat I want to add a new feature / fix an issue but I don’ t have commit rights Spocktocat IronCat <created> Repository @b_vasilescu @aserebrenik #icsme14 ICSME 2014, Victoria, BC, Canada

  10. GitHub workflow Jean-Luc Picat Octocat Spocktocat <created> Repository <forked> IronCat <created> Repository @b_vasilescu @aserebrenik #icsme14 ICSME 2014, Victoria, BC, Canada

  11. GitHub workflow Jean-Luc Picat Octocat I can implement the change in my own fork. But how to signal IronCat? Spocktocat <push> (commit) <created> Repository <forked> IronCat <created> Repository @b_vasilescu @aserebrenik #icsme14 ICSME 2014, Victoria, BC, Canada

  12. GitHub workflow Jean-Luc Picat Octocat Can you please pull my change into your repository> Spocktocat <push> <pull request> (commit) <created> Repository <forked> IronCat <created> Repository @b_vasilescu @aserebrenik #icsme14 ICSME 2014, Victoria, BC, Canada

  13. GitHub workflow Jean-Luc Picat Octocat Spocktocat <push> <pull request> (commit) <created> Repository <forked> IronCat Nice work! I’ll merge your change <created> Repository @b_vasilescu @aserebrenik #icsme14 ICSME 2014, Victoria, BC, Canada

  14. GitHub workflow Jean-Luc Picat Octocat Spocktocat <member of> <push> <pull request> (commit) <created> Repository <forked> IronCat Nice work! <merge commit> I’ll merge your change <created> Repository @b_vasilescu @aserebrenik #icsme14 ICSME 2014, Victoria, BC, Canada

  15. GitHub workflow Jean-Luc Picat Octocat <push> <push> <pull request> Spocktocat Direct contributions (Collaborators) Indirect contributions IronCat (Pull requests) <push> <created> Repository @b_vasilescu @aserebrenik #icsme14 ICSME 2014, Victoria, BC, Canada

  16. unprecedented low barrier to entry for potential contributors L. A. Dabbish, H. C. Stuart, J. Tsay, and J. D. Herbsleb, “ Social coding in GitHub: transparency and collaboration in an open software repository ,” in CSCW 2012 scalability challenges when integrating automated tests (many) outside contributions R. Pham, L. Singer, O. Liskin, K. Schneider et al., “ Creating a shared understanding of testing culture on a social coding site ,” in ICSE 2013 @b_vasilescu @aserebrenik #icsme14 ICSME 2014, Victoria, BC, Canada

  17. How are GitHub developers using CI? Distribution of p − values from the Chi^2 tests 80 60 count Odds Ratios 40 0.01 0.05 0.1 0.5 1 20 0 Java Python Ruby 0.2 0.5 1.0 2.0 5.0 10.0 20.0 Programming.language (1) Most projects are configured to (2) Pull requests are much more likely to result use CI, but less than half actually do. in successful builds than direct commits not configured configured but not using configured and using @b_vasilescu @aserebrenik #icsme14 ICSME 2014, Victoria, BC, Canada

  18. GHTorrent sample G. Gousios, “ The GHTorent dataset and tool suite ,” in MSR 2013 G. Gousios, B. Vasilescu, A. Serebrenik, A. Zaidman, “ Lean GHTorrent: GitHub data on demand ,” in MSR 2014 223 large and active repositories * not forks * ≥ 1 year * both commits and pull requests * Java, Python, or Ruby * ≥ 10 changes last month * ≥ 10 contributors @b_vasilescu @aserebrenik #icsme14 ICSME 2014, Victoria, BC, Canada

  19. GitHub + Travis-CI Jean-Luc Picat Octocat <push> <push> <pull request> Spocktocat Direct contributions (Collaborators) Indirect contributions IronCat (Pull requests) <push> <created> Repository @b_vasilescu @aserebrenik #icsme14 ICSME 2014, Victoria, BC, Canada

  20. GitHub + Travis-CI Jean-Luc Picat Octocat <push> <push> <pull request> Spocktocat IronCat <push> <created> Repository @b_vasilescu @aserebrenik #icsme14 ICSME 2014, Victoria, BC, Canada

  21. Methods and Data @b_vasilescu @aserebrenik #icsme14 ICSME 2014, Victoria, BC, Canada

  22. Methods and Data No Stop ? .travis.yml Y es #passed #failed #passed #failed rails/rails #passed #failed rails/rails builds builds #passed #failed rails/rails builds builds #passed #failed rails/rails builds builds rails/rails builds builds commits 5767 3715 builds builds commits 5767 3715 commits 5767 3715 commits 5767 3715 pull reqs 2450 1337 commits 5767 3715 pull reqs 2450 1337 pull reqs 2450 1337 pull reqs 2450 1337 pull reqs 2450 1337 @b_vasilescu @aserebrenik #icsme14 ICSME 2014, Victoria, BC, Canada

  23. Methods and Data No Stop ? .travis.yml Y es #passed #failed #passed #failed rails/rails #passed #failed rails/rails builds builds #passed #failed rails/rails builds builds #passed #failed rails/rails builds builds rails/rails builds builds commits 5767 3715 builds builds commits 5767 3715 commits 5767 3715 commits 5767 3715 pull reqs 2450 1337 commits 5767 3715 pull reqs 2450 1337 pull reqs 2450 1337 80 pull reqs 2450 1337 pull reqs 2450 1337 60 count 40 not configured (17 / 223) configured but not using � 20 (93 / 223) configured and using 0 (113 / 223) Java Python Ruby Programming.language @b_vasilescu @aserebrenik #icsme14 ICSME 2014, Victoria, BC, Canada

  24. Methods and Data No Stop ? .travis.yml Y es #passed #failed #passed #failed rails/rails #passed #failed rails/rails builds builds #passed #failed rails/rails builds builds #passed #failed rails/rails builds builds rails/rails builds builds commits 5767 3715 builds builds commits 5767 3715 commits 5767 3715 commits 5767 3715 pull reqs 2450 1337 commits 5767 3715 pull reqs 2450 1337 pull reqs 2450 1337 pull reqs 2450 1337 Distribution of p − values from the Chi^2 tests pull reqs 2450 1337 Does type matter for passed/failed? ² + Stouffer 0.01 0.05 0.1 0.5 1 @b_vasilescu @aserebrenik #icsme14 ICSME 2014, Victoria, BC, Canada

  25. Methods and Data No Stop ? .travis.yml Y es #passed #failed #passed #failed rails/rails #passed #failed rails/rails builds builds #passed #failed rails/rails builds builds #passed #failed rails/rails builds builds rails/rails builds builds commits 5767 3715 builds builds commits 5767 3715 commits 5767 3715 commits 5767 3715 pull reqs 2450 1337 commits 5767 3715 pull reqs 2450 1337 Odds Ratios pull reqs 2450 1337 pull reqs 2450 1337 pull reqs 2450 1337 Which type succeeds more often? 0.2 0.5 1.0 2.0 5.0 10.0 20.0 Odds ratios @b_vasilescu @aserebrenik #icsme14 ICSME 2014, Victoria, BC, Canada

  26. How are GitHub developers using CI? Distribution of p − values from the Chi^2 tests 80 60 count Odds Ratios 40 0.01 0.05 0.1 0.5 1 20 0 Java Python Ruby 0.2 0.5 1.0 2.0 5.0 10.0 20.0 Programming.language (1) Most projects are configured to (2) Pull requests are much more likely to result use CI, but less than half actually do. in successful builds than direct commits @b_vasilescu @aserebrenik #icsme14 ICSME 2014, Victoria, BC, Canada

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend