understanding the pharo dev process

37
Undestanding the Pharo dev Process Guille Polito, CNRS & Inria @guillepolito

Upload: esug

Post on 28-Jan-2018

269 views

Category:

Software


2 download

TRANSCRIPT

Page 1: Understanding the Pharo Dev Process

Undestanding the Pharo dev Process

Guille Polito, CNRS & Inria @guillepolito

Page 2: Understanding the Pharo Dev Process

2

Open Issue

Submit Code

ValidateCode

Integrate +

Build

Close Issue

Page 3: Understanding the Pharo Dev Process

Pharo < 7

n+1

Change

n

3

Page 4: Understanding the Pharo Dev Process

:the new kid on the block

4

Page 5: Understanding the Pharo Dev Process

Pharo 7?

n n+1

Change

?5

Page 6: Understanding the Pharo Dev Process

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

Proposing a Change

7

’s Machine

Push

ForkPull Request

Commit

Clone+ +

Page 8: Understanding the Pharo Dev Process

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

Maintaining your repo

9

’s Machine

Push

Pull

+ +

Page 10: Understanding the Pharo Dev Process

Multiple Images

10

’s Machine

+

HEAD=12b96fd7

HEAD=12b96fd7Load, commit

HEAD=40121187HEAD=12b96fd7

Page 11: Understanding the Pharo Dev Process

What happens when a fix is proposed?

11

Page 12: Understanding the Pharo Dev Process

A Git-centric processPull Request

Change

n+1

Build

12

Validate

Page 13: Understanding the Pharo Dev Process

• Jenkinsfile

• travis.yml like file

• describe the build process

The Build Process

13

Page 14: Understanding the Pharo Dev Process

1. Bootstrap

14

Build Dissected

10%

Page 15: Understanding the Pharo Dev Process

1. Bootstrap

2. Compiler

15

Build Dissected

BinaryHermes 12%

Page 16: Understanding the Pharo Dev Process

1. Bootstrap

2. Compiler

3. Monticello

16

Build Dissected

Chunk files14%

Page 17: Understanding the Pharo Dev Process

1. Bootstrap

2. Compiler

3. Monticello

4. Metacello

17

Build Dissected

Monticello

19%

Page 18: Understanding the Pharo Dev Process

1. Bootstrap

2. Compiler

3. Monticello

4. Metacello

5. Dev-Environment

18

Build Dissected

MetacelloBaselines

100%

Page 19: Understanding the Pharo Dev Process

• 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

1. Bootstrap

2. Compiler

3. Monticello

4. Metacello

5. Dev-Environment

20

Build Dissected

MetacelloBaselines

100%

Page 21: Understanding the Pharo Dev Process

Thou Shalt Update the

21

Baselines

Page 22: Understanding the Pharo Dev Process

1. Bootstrap

2. Compiler

3. Monticello

4. Metacello

5. Dev-Environment

22

Build Dissected

MetacelloBaselines

100%

Page 23: Understanding the Pharo Dev Process

• 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

What happens when an issue is integrated?

24

Page 25: Understanding the Pharo Dev Process

A Git-centric process

Change

n+1

Build

25

Page 26: Understanding the Pharo Dev Process

files.pharo.org/image/70

26

Page 27: Understanding the Pharo Dev Process

Tooling

27

Page 28: Understanding the Pharo Dev Process

Setting up Iceberg

28

Page 29: Understanding the Pharo Dev Process

The Pharo Plugin

29

Page 30: Understanding the Pharo Dev Process

The Github Plugin

30

Page 31: Understanding the Pharo Dev Process

Validating Issues

31

Page 32: Understanding the Pharo Dev Process

Integration

32

Page 33: Understanding the Pharo Dev Process

A glimpse from

the future33

Page 34: Understanding the Pharo Dev Process

Managing External Projects

34

Pull / PushFork

Pull Request

Page 35: Understanding the Pharo Dev Process

Further Work

• Issue tracker integration

• Notifications

• Evaluate using Github issue tracker

• Expect modularisations and changes

35

Page 36: Understanding the Pharo Dev Process

ConclusionPush

n+1

Build

36

’s Machine

Push

Pull

+ +

Tx Christophe, Pavel, and all the Pharo community

Page 37: Understanding the Pharo Dev Process

• 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