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