very large development
play

VERY LARGE DEVELOPMENT HOW TO RUN CODE REVIEW FOR 1000+ OPEN - PowerPoint PPT Presentation

VERY LARGE DEVELOPMENT HOW TO RUN CODE REVIEW FOR 1000+ OPEN SOURCE DEVELOPERS Joe Gordon ABOUT ME Developer @ Full time upstream OpenStack Developer contact information jog0 on freenode github.com/jogo launchpad.net/~jogo VERY LARGE


  1. VERY LARGE DEVELOPMENT HOW TO RUN CODE REVIEW FOR 1000+ OPEN SOURCE DEVELOPERS Joe Gordon

  2. ABOUT ME Developer @ Full time upstream OpenStack Developer contact information jog0 on freenode github.com/jogo launchpad.net/~jogo

  3. VERY LARGE DEVELOPMENT AS DEFINED BY OHLOH BY BLACK DUCK “ Very large, active development team Over the past twelve months, 1241 developers contributed new code to OpenStack. This is one of the largest open- source teams in the world, and is in the top 2% of all project teams on Ohloh . For this measurement, Ohloh considers only recent changes to the code. Over the entire history of the project, 1661 developers have contributed.”

  4. WHAT IS ?

  5. WHAT IS ? LARGEST OPEN SOURCE PROJECT? (THAT I KNOW OF) is 881,970 lines of python code and OpenStack is 968,893!

  6. APIS

  7. APIS

  8. ARCHITECTURE

  9. WHO IS OPENSTACK

  10. DEPLOYMENT SCALE THE DATA CENTER (Rackspace data center)

  11. DEVELOPMENT SCALE

  12. BY THE NUMBERS

  13. GRAPHS In January 2011 61 Contributors 71,181 lines of code

  14. PROS AND CONS OF USING Pros fast to develop approachable language 'fun' Cons type checking other static analysis concurrency

  15. DEVELOPMENT PROCESS

  16. LIFE OF A GITHUB PATCH TODAY 1. Fork repo 2. Write code, test code and push to your github repo 3. Submit a pull request 4. travis-ci tests patch 5. Patch is reviewed 6. Patch is amended to address any negative comments 7. Code is merged 8. travis-ci runs on trunk

  17. WHERE WE STARTED LAUNCHPAD (BZR AND ALL) (3 YEARS AGO)

  18. REVIEW PROCESS EVOLUTION

  19. GERRIT

  20. GATE PEP8 + UNIT TESTS

  21. GATE PEP8 + PY26, PY27, INTEGRATION TESTS

  22. GATE + CHECK

  23. CURRENT

  24. LIFE OF AN OPENSTACK PATCH TODAY 1. Code is written and tested locally 2. Submitted for code review 3. Code is automatically tested on submission 4. Code is peer reviewed 5. Patch is amended to address any negative peer reviews 6. Code is approved (or rejected) 7. Code is re-tested as it will be merged 8. Code is merged

  25. TODAY

  26. PRINCIPLES Never break trunk Master branch is always green Developers are never blocked on broken trunk Transparency Automate everything Egalitarian Be Strict. Reduce burden on reviewers

  27. TOOLS Work Flow Testing Integration Testing Communication

  28. WORK FLOW Gerrit git-review Jenkins

  29. TESTING tox testrepository Automated code quality checks: flake8+pep8+pyflakes+hacking

  30. TESTING AUTOMATED CODE QUALITY CHECKS E1** indentation E2** white space E5** line length F401 module imported but unused F821 undefined name name H103 correct apache 2 license H30* import rules H301 docstring should not start with a space

  31. INTEGRATION TESTING devstack zuul recheck elastic-recheck

  32. INTEGRATION TESTING ELASTIC-RECHECK Measure integration tests in percent failure, not black and white Hard to debug transient failures - 10s of MB of logs Trivial to classify failures once have elastic search query

  33. COMMUNICATION lauchpad etherpad pastebin irc mailing list

  34. SUGGESTIONS FOR OTHER TOOLS?

  35. OTHER WAYS WE MAKE DEVELOPMENT SCALE SHRINK PROJECT SCOPE OpenStack started with just two projects - Nova and Swift. Now the same functionality is spread out over 6 projects. Nova, Swift, Glance, Keystone, Cinder, Neutron

  36. THANK YOU QUESTIONS? Statistics from ohlo.net Powered by reveal.js

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