Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Understanding the Pharo Dev Process

394 views

Published on

Youtube: https://youtu.be/tp-YnkZWnNw

ESUG 2017
Name: Guillermo Polito

Published in: Software
  • Video: https://youtu.be/tp-YnkZWnNw
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Be the first to like this

Understanding the Pharo Dev Process

  1. 1. Undestanding the Pharo dev Process Guille Polito, CNRS & Inria @guillepolito
  2. 2. 2 Open Issue Submit Code Validate
 Code Integrate + Build Close Issue
  3. 3. Pharo < 7 n+1 Change n 3
  4. 4. :the new kid on the block 4
  5. 5. Pharo 7? n n+1 Change ? 5
  6. 6. Pharo Repository 6 master development • master branch will point to latest stable release • development branch with current development V6.0 V6.1
  7. 7. Proposing a Change 7 ’s Machine Push Fork Pull Request Commit Clone + +
  8. 8. Proposing a Change? • Do not commit a change to development • Instead create a new branch named after the issue:
 
 e.g., 10271-Remove-Old-Compiler • Issue the pull request 
 new branch —> development 8
  9. 9. Maintaining your repo 9 ’s Machine Push Pull + +
  10. 10. Multiple Images 10 ’s Machine + HEAD=12b96fd7 HEAD=12b96fd7 Load, commit HEAD=40121187HEAD=12b96fd7
  11. 11. What happens when a fix is proposed? 11
  12. 12. A Git-centric process Pull Request
 Change n+1 Build 12 Validate
  13. 13. • Jenkinsfile • travis.yml like file • describe the build process The Build Process 13
  14. 14. 1. Bootstrap
 
 
 
 
 
 
 
 14 Build Dissected 10%
  15. 15. 1. Bootstrap 2. Compiler
 
 
 
 
 
 15 Build Dissected Binary
 Hermes 12%
  16. 16. 1. Bootstrap 2. Compiler 3. Monticello
 
 
 
 16 Build Dissected Chunk files 14%
  17. 17. 1. Bootstrap 2. Compiler 3. Monticello 4. Metacello
 
 17 Build Dissected Monticello 19%
  18. 18. 1. Bootstrap 2. Compiler 3. Monticello 4. Metacello 5. Dev-Environment 18 Build Dissected Metacello
 Baselines 100%
  19. 19. • Ensure initial state! • Allow complex changes that before required staging • e.g., changes in key-object layouts (Slots) • e.g., changes in “in-use” objects (Compiler, Monticello) Building from sources 19
  20. 20. 1. Bootstrap 2. Compiler 3. Monticello 4. Metacello 5. Dev-Environment 20 Build Dissected Metacello
 Baselines 100%
  21. 21. Thou Shalt Update the 21 Baselines
  22. 22. 1. Bootstrap 2. Compiler 3. Monticello 4. Metacello 5. Dev-Environment 22 Build Dissected Metacello
 Baselines 100%
  23. 23. • Build once, validate many times • All tests * #(win,unix,mac) • Staged tests (sunit only so far) * #(win,unix,mac) • Future: Lint Rules? others? Validations 23
  24. 24. What happens when an issue is integrated? 24
  25. 25. A Git-centric process Change n+1 Build 25
  26. 26. files.pharo.org/image/70 26
  27. 27. Tooling 27
  28. 28. Setting up Iceberg 28
  29. 29. The Pharo Plugin 29
  30. 30. The Github Plugin 30
  31. 31. Validating Issues 31
  32. 32. Integration 32
  33. 33. A glimpse from the future 33
  34. 34. Managing External Projects 34 Pull / Push Fork Pull Request
  35. 35. Further Work • Issue tracker integration • Notifications • Evaluate using Github issue tracker • Expect modularisations and changes 35
  36. 36. Conclusion Push n+1 Build 36 ’s Machine Push Pull + + Tx Christophe, Pavel, and all the Pharo community
  37. 37. • Travis • OSX is slow • For windows we would need appveyor… • Less freedom to design our process • Jenkins: we have full control (and responsibility) on it 37

×