understanding the pharo dev process
TRANSCRIPT
![Page 1: Understanding the Pharo Dev Process](https://reader033.vdocuments.mx/reader033/viewer/2022051521/5a6d40bb7f8b9acc418b5501/html5/thumbnails/1.jpg)
Undestanding the Pharo dev Process
Guille Polito, CNRS & Inria @guillepolito
![Page 2: Understanding the Pharo Dev Process](https://reader033.vdocuments.mx/reader033/viewer/2022051521/5a6d40bb7f8b9acc418b5501/html5/thumbnails/2.jpg)
2
Open Issue
Submit Code
ValidateCode
Integrate +
Build
Close Issue
![Page 3: Understanding the Pharo Dev Process](https://reader033.vdocuments.mx/reader033/viewer/2022051521/5a6d40bb7f8b9acc418b5501/html5/thumbnails/3.jpg)
Pharo < 7
n+1
Change
n
3
![Page 4: Understanding the Pharo Dev Process](https://reader033.vdocuments.mx/reader033/viewer/2022051521/5a6d40bb7f8b9acc418b5501/html5/thumbnails/4.jpg)
:the new kid on the block
4
![Page 5: Understanding the Pharo Dev Process](https://reader033.vdocuments.mx/reader033/viewer/2022051521/5a6d40bb7f8b9acc418b5501/html5/thumbnails/5.jpg)
Pharo 7?
n n+1
Change
?5
![Page 6: Understanding the Pharo Dev Process](https://reader033.vdocuments.mx/reader033/viewer/2022051521/5a6d40bb7f8b9acc418b5501/html5/thumbnails/6.jpg)
Pharo Repository
6
master
development
• master branch will point to latest stable release
• development branch with current development
V6.0V6.1
![Page 7: Understanding the Pharo Dev Process](https://reader033.vdocuments.mx/reader033/viewer/2022051521/5a6d40bb7f8b9acc418b5501/html5/thumbnails/7.jpg)
Proposing a Change
7
’s Machine
Push
ForkPull Request
Commit
Clone+ +
![Page 8: Understanding the Pharo Dev Process](https://reader033.vdocuments.mx/reader033/viewer/2022051521/5a6d40bb7f8b9acc418b5501/html5/thumbnails/8.jpg)
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
![Page 9: Understanding the Pharo Dev Process](https://reader033.vdocuments.mx/reader033/viewer/2022051521/5a6d40bb7f8b9acc418b5501/html5/thumbnails/9.jpg)
Maintaining your repo
9
’s Machine
Push
Pull
+ +
![Page 10: Understanding the Pharo Dev Process](https://reader033.vdocuments.mx/reader033/viewer/2022051521/5a6d40bb7f8b9acc418b5501/html5/thumbnails/10.jpg)
Multiple Images
10
’s Machine
+
HEAD=12b96fd7
HEAD=12b96fd7Load, commit
HEAD=40121187HEAD=12b96fd7
![Page 11: Understanding the Pharo Dev Process](https://reader033.vdocuments.mx/reader033/viewer/2022051521/5a6d40bb7f8b9acc418b5501/html5/thumbnails/11.jpg)
What happens when a fix is proposed?
11
![Page 12: Understanding the Pharo Dev Process](https://reader033.vdocuments.mx/reader033/viewer/2022051521/5a6d40bb7f8b9acc418b5501/html5/thumbnails/12.jpg)
A Git-centric processPull Request
Change
n+1
Build
12
Validate
![Page 13: Understanding the Pharo Dev Process](https://reader033.vdocuments.mx/reader033/viewer/2022051521/5a6d40bb7f8b9acc418b5501/html5/thumbnails/13.jpg)
• Jenkinsfile
• travis.yml like file
• describe the build process
The Build Process
13
![Page 14: Understanding the Pharo Dev Process](https://reader033.vdocuments.mx/reader033/viewer/2022051521/5a6d40bb7f8b9acc418b5501/html5/thumbnails/14.jpg)
1. Bootstrap
14
Build Dissected
10%
![Page 15: Understanding the Pharo Dev Process](https://reader033.vdocuments.mx/reader033/viewer/2022051521/5a6d40bb7f8b9acc418b5501/html5/thumbnails/15.jpg)
1. Bootstrap
2. Compiler
15
Build Dissected
BinaryHermes 12%
![Page 16: Understanding the Pharo Dev Process](https://reader033.vdocuments.mx/reader033/viewer/2022051521/5a6d40bb7f8b9acc418b5501/html5/thumbnails/16.jpg)
1. Bootstrap
2. Compiler
3. Monticello
16
Build Dissected
Chunk files14%
![Page 17: Understanding the Pharo Dev Process](https://reader033.vdocuments.mx/reader033/viewer/2022051521/5a6d40bb7f8b9acc418b5501/html5/thumbnails/17.jpg)
1. Bootstrap
2. Compiler
3. Monticello
4. Metacello
17
Build Dissected
Monticello
19%
![Page 18: Understanding the Pharo Dev Process](https://reader033.vdocuments.mx/reader033/viewer/2022051521/5a6d40bb7f8b9acc418b5501/html5/thumbnails/18.jpg)
1. Bootstrap
2. Compiler
3. Monticello
4. Metacello
5. Dev-Environment
18
Build Dissected
MetacelloBaselines
100%
![Page 19: Understanding the Pharo Dev Process](https://reader033.vdocuments.mx/reader033/viewer/2022051521/5a6d40bb7f8b9acc418b5501/html5/thumbnails/19.jpg)
• 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
![Page 20: Understanding the Pharo Dev Process](https://reader033.vdocuments.mx/reader033/viewer/2022051521/5a6d40bb7f8b9acc418b5501/html5/thumbnails/20.jpg)
1. Bootstrap
2. Compiler
3. Monticello
4. Metacello
5. Dev-Environment
20
Build Dissected
MetacelloBaselines
100%
![Page 21: Understanding the Pharo Dev Process](https://reader033.vdocuments.mx/reader033/viewer/2022051521/5a6d40bb7f8b9acc418b5501/html5/thumbnails/21.jpg)
Thou Shalt Update the
21
Baselines
![Page 22: Understanding the Pharo Dev Process](https://reader033.vdocuments.mx/reader033/viewer/2022051521/5a6d40bb7f8b9acc418b5501/html5/thumbnails/22.jpg)
1. Bootstrap
2. Compiler
3. Monticello
4. Metacello
5. Dev-Environment
22
Build Dissected
MetacelloBaselines
100%
![Page 23: Understanding the Pharo Dev Process](https://reader033.vdocuments.mx/reader033/viewer/2022051521/5a6d40bb7f8b9acc418b5501/html5/thumbnails/23.jpg)
• 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
![Page 24: Understanding the Pharo Dev Process](https://reader033.vdocuments.mx/reader033/viewer/2022051521/5a6d40bb7f8b9acc418b5501/html5/thumbnails/24.jpg)
What happens when an issue is integrated?
24
![Page 25: Understanding the Pharo Dev Process](https://reader033.vdocuments.mx/reader033/viewer/2022051521/5a6d40bb7f8b9acc418b5501/html5/thumbnails/25.jpg)
A Git-centric process
Change
n+1
Build
25
![Page 27: Understanding the Pharo Dev Process](https://reader033.vdocuments.mx/reader033/viewer/2022051521/5a6d40bb7f8b9acc418b5501/html5/thumbnails/27.jpg)
Tooling
27
![Page 28: Understanding the Pharo Dev Process](https://reader033.vdocuments.mx/reader033/viewer/2022051521/5a6d40bb7f8b9acc418b5501/html5/thumbnails/28.jpg)
Setting up Iceberg
28
![Page 29: Understanding the Pharo Dev Process](https://reader033.vdocuments.mx/reader033/viewer/2022051521/5a6d40bb7f8b9acc418b5501/html5/thumbnails/29.jpg)
The Pharo Plugin
29
![Page 30: Understanding the Pharo Dev Process](https://reader033.vdocuments.mx/reader033/viewer/2022051521/5a6d40bb7f8b9acc418b5501/html5/thumbnails/30.jpg)
The Github Plugin
30
![Page 31: Understanding the Pharo Dev Process](https://reader033.vdocuments.mx/reader033/viewer/2022051521/5a6d40bb7f8b9acc418b5501/html5/thumbnails/31.jpg)
Validating Issues
31
![Page 32: Understanding the Pharo Dev Process](https://reader033.vdocuments.mx/reader033/viewer/2022051521/5a6d40bb7f8b9acc418b5501/html5/thumbnails/32.jpg)
Integration
32
![Page 33: Understanding the Pharo Dev Process](https://reader033.vdocuments.mx/reader033/viewer/2022051521/5a6d40bb7f8b9acc418b5501/html5/thumbnails/33.jpg)
A glimpse from
the future33
![Page 34: Understanding the Pharo Dev Process](https://reader033.vdocuments.mx/reader033/viewer/2022051521/5a6d40bb7f8b9acc418b5501/html5/thumbnails/34.jpg)
Managing External Projects
34
Pull / PushFork
Pull Request
![Page 35: Understanding the Pharo Dev Process](https://reader033.vdocuments.mx/reader033/viewer/2022051521/5a6d40bb7f8b9acc418b5501/html5/thumbnails/35.jpg)
Further Work
• Issue tracker integration
• Notifications
• Evaluate using Github issue tracker
• Expect modularisations and changes
35
![Page 36: Understanding the Pharo Dev Process](https://reader033.vdocuments.mx/reader033/viewer/2022051521/5a6d40bb7f8b9acc418b5501/html5/thumbnails/36.jpg)
ConclusionPush
n+1
Build
36
’s Machine
Push
Pull
+ +
Tx Christophe, Pavel, and all the Pharo community
![Page 37: Understanding the Pharo Dev Process](https://reader033.vdocuments.mx/reader033/viewer/2022051521/5a6d40bb7f8b9acc418b5501/html5/thumbnails/37.jpg)
• 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