Distributed development with Bazaarnano-bio.ehu.es/files/lecture-pouillon-bazaar.pdfOverview An...

66
Overview An extremely flexible tool Example: the management of ABINIT The end Distributed development with Bazaar Yann Pouillon 1. Facultad de Químicas, Universidad del País Vasco UPV/EHU, Donostia-San Sebastián, Spain. 2. European Theoretical Spectroscopy Facility (ETSF), Spain. CECAM Tutorial — Zaragoza, Spain 2010/06/21

Transcript of Distributed development with Bazaarnano-bio.ehu.es/files/lecture-pouillon-bazaar.pdfOverview An...

Page 1: Distributed development with Bazaarnano-bio.ehu.es/files/lecture-pouillon-bazaar.pdfOverview An extremely flexible tool Example: the management of ABINIT The end Distributed development

Overview An extremely flexible tool Example: the management of ABINIT The end

Distributed development with Bazaar

Yann Pouillon

1. Facultad de Químicas, Universidad del País Vasco UPV/EHU,Donostia-San Sebastián, Spain.

2. European Theoretical Spectroscopy Facility (ETSF), Spain.

CECAM Tutorial — Zaragoza, Spain2010/06/21

Page 2: Distributed development with Bazaarnano-bio.ehu.es/files/lecture-pouillon-bazaar.pdfOverview An extremely flexible tool Example: the management of ABINIT The end Distributed development

Overview An extremely flexible tool Example: the management of ABINIT The end

Outline

1 OverviewAn evolutionary processQuick tour of Bazaar 2.1

2 An extremely flexible toolKeeping up with an evolving projectPopular Bazaar workflows

3 Example: the management of ABINITSustaining the growth of the codeThe ABINIT Forge

Page 3: Distributed development with Bazaarnano-bio.ehu.es/files/lecture-pouillon-bazaar.pdfOverview An extremely flexible tool Example: the management of ABINIT The end Distributed development

Overview An extremely flexible tool Example: the management of ABINIT The end

Outline

1 OverviewAn evolutionary processQuick tour of Bazaar 2.1

2 An extremely flexible toolKeeping up with an evolving projectPopular Bazaar workflows

3 Example: the management of ABINITSustaining the growth of the codeThe ABINIT Forge

Page 4: Distributed development with Bazaarnano-bio.ehu.es/files/lecture-pouillon-bazaar.pdfOverview An extremely flexible tool Example: the management of ABINIT The end Distributed development

Overview An extremely flexible tool Example: the management of ABINIT The end

Different times, different challenges, different models

1970’s: first steps (SCCS times)VCS = tool to keep history of single filesweave method: uniform data retrieval timeoutcome: SCCS adopted by Unix

1980’s: from solo to team work (RCS times)independent streams of developmentproject management & VCS decoupledoutcome: data retrieval efficiency & reliability

1990’s: organizing collaboration (CVS times)golden age of client-server modeluprising of the centralized modeloutcome: atomicity, file management, deployment

2000’s: going back to freedomemergence of the distributed modelexplosion of "ecological diversity"outcome: better flexibility, usability & scaling

Page 5: Distributed development with Bazaarnano-bio.ehu.es/files/lecture-pouillon-bazaar.pdfOverview An extremely flexible tool Example: the management of ABINIT The end Distributed development

Overview An extremely flexible tool Example: the management of ABINIT The end

Different times, different challenges, different models

1970’s: first steps (SCCS times)VCS = tool to keep history of single filesweave method: uniform data retrieval timeoutcome: SCCS adopted by Unix

1980’s: from solo to team work (RCS times)independent streams of developmentproject management & VCS decoupledoutcome: data retrieval efficiency & reliability

1990’s: organizing collaboration (CVS times)golden age of client-server modeluprising of the centralized modeloutcome: atomicity, file management, deployment

2000’s: going back to freedomemergence of the distributed modelexplosion of "ecological diversity"outcome: better flexibility, usability & scaling

Page 6: Distributed development with Bazaarnano-bio.ehu.es/files/lecture-pouillon-bazaar.pdfOverview An extremely flexible tool Example: the management of ABINIT The end Distributed development

Overview An extremely flexible tool Example: the management of ABINIT The end

Different times, different challenges, different models

1970’s: first steps (SCCS times)VCS = tool to keep history of single filesweave method: uniform data retrieval timeoutcome: SCCS adopted by Unix

1980’s: from solo to team work (RCS times)independent streams of developmentproject management & VCS decoupledoutcome: data retrieval efficiency & reliability

1990’s: organizing collaboration (CVS times)golden age of client-server modeluprising of the centralized modeloutcome: atomicity, file management, deployment

2000’s: going back to freedomemergence of the distributed modelexplosion of "ecological diversity"outcome: better flexibility, usability & scaling

Page 7: Distributed development with Bazaarnano-bio.ehu.es/files/lecture-pouillon-bazaar.pdfOverview An extremely flexible tool Example: the management of ABINIT The end Distributed development

Overview An extremely flexible tool Example: the management of ABINIT The end

Different times, different challenges, different models

1970’s: first steps (SCCS times)VCS = tool to keep history of single filesweave method: uniform data retrieval timeoutcome: SCCS adopted by Unix

1980’s: from solo to team work (RCS times)independent streams of developmentproject management & VCS decoupledoutcome: data retrieval efficiency & reliability

1990’s: organizing collaboration (CVS times)golden age of client-server modeluprising of the centralized modeloutcome: atomicity, file management, deployment

2000’s: going back to freedomemergence of the distributed modelexplosion of "ecological diversity"outcome: better flexibility, usability & scaling

Page 8: Distributed development with Bazaarnano-bio.ehu.es/files/lecture-pouillon-bazaar.pdfOverview An extremely flexible tool Example: the management of ABINIT The end Distributed development

Overview An extremely flexible tool Example: the management of ABINIT The end

The centralized model

Strength: control

Individualistic (driving force = project leader)

Requires a server

Requires permanent connection to the server

Snapshotting & publishing tightly bound

Associated social model: benevolent dictatorship

Subversion: "subvert the beast"

Since 2000: overcome CVS limits while keeping compatibilityToday: probably the most popular for the centralized modelReason: smooth transition from CVS

Page 9: Distributed development with Bazaarnano-bio.ehu.es/files/lecture-pouillon-bazaar.pdfOverview An extremely flexible tool Example: the management of ABINIT The end Distributed development

Overview An extremely flexible tool Example: the management of ABINIT The end

The centralized model

Strength: control

Individualistic (driving force = project leader)

Requires a server

Requires permanent connection to the server

Snapshotting & publishing tightly bound

Associated social model: benevolent dictatorship

Subversion: "subvert the beast"

Since 2000: overcome CVS limits while keeping compatibilityToday: probably the most popular for the centralized modelReason: smooth transition from CVS

Page 10: Distributed development with Bazaarnano-bio.ehu.es/files/lecture-pouillon-bazaar.pdfOverview An extremely flexible tool Example: the management of ABINIT The end Distributed development

Overview An extremely flexible tool Example: the management of ABINIT The end

The centralized model

Strength: control

Individualistic (driving force = project leader)

Requires a server

Requires permanent connection to the server

Snapshotting & publishing tightly bound

Associated social model: benevolent dictatorship

Subversion: "subvert the beast"

Since 2000: overcome CVS limits while keeping compatibilityToday: probably the most popular for the centralized modelReason: smooth transition from CVS

Page 11: Distributed development with Bazaarnano-bio.ehu.es/files/lecture-pouillon-bazaar.pdfOverview An extremely flexible tool Example: the management of ABINIT The end Distributed development

Overview An extremely flexible tool Example: the management of ABINIT The end

The distributed model

Strength: freedom & autonomy

Team-oriented (driving force = community)

Exploration of new concepts made easy (no loss of history)

Network access: only to publish or access remote changes

Associated social model: doocracythe actual developers take the decisionsdynamical reorganization, delegation of powersmostly bottom-up structure

Bazaar: "VCS for Human Beings"

"Just a tool" philosophy + bindings to other VCS’s

Page 12: Distributed development with Bazaarnano-bio.ehu.es/files/lecture-pouillon-bazaar.pdfOverview An extremely flexible tool Example: the management of ABINIT The end Distributed development

Overview An extremely flexible tool Example: the management of ABINIT The end

The distributed model

Strength: freedom & autonomy

Team-oriented (driving force = community)

Exploration of new concepts made easy (no loss of history)

Network access: only to publish or access remote changes

Associated social model: doocracythe actual developers take the decisionsdynamical reorganization, delegation of powersmostly bottom-up structure

Bazaar: "VCS for Human Beings"

"Just a tool" philosophy + bindings to other VCS’s

Page 13: Distributed development with Bazaarnano-bio.ehu.es/files/lecture-pouillon-bazaar.pdfOverview An extremely flexible tool Example: the management of ABINIT The end Distributed development

Overview An extremely flexible tool Example: the management of ABINIT The end

The distributed model

Strength: freedom & autonomy

Team-oriented (driving force = community)

Exploration of new concepts made easy (no loss of history)

Network access: only to publish or access remote changes

Associated social model: doocracythe actual developers take the decisionsdynamical reorganization, delegation of powersmostly bottom-up structure

Bazaar: "VCS for Human Beings"

"Just a tool" philosophy + bindings to other VCS’s

Page 14: Distributed development with Bazaarnano-bio.ehu.es/files/lecture-pouillon-bazaar.pdfOverview An extremely flexible tool Example: the management of ABINIT The end Distributed development

Overview An extremely flexible tool Example: the management of ABINIT The end

Centralized vs. distributed: a false debate

Former bone of contention

Patch bomb = unmanageable contribution

Distributed model: no protection

Centralized model: just more difficult

Patch bomb = social failure =⇒ no technical solution

Importance of fluid communication

Interplay between social & technical aspects

Centralized model popular for historical reasons

Balance between control & freedom: YOU choose !

Reminder: CVS = beast of SVN−→ SVN = beast of other tools

Page 15: Distributed development with Bazaarnano-bio.ehu.es/files/lecture-pouillon-bazaar.pdfOverview An extremely flexible tool Example: the management of ABINIT The end Distributed development

Overview An extremely flexible tool Example: the management of ABINIT The end

Centralized vs. distributed: a false debate

Former bone of contention

Patch bomb = unmanageable contribution

Distributed model: no protection

Centralized model: just more difficult

Patch bomb = social failure =⇒ no technical solution

Importance of fluid communication

Interplay between social & technical aspects

Centralized model popular for historical reasons

Balance between control & freedom: YOU choose !

Reminder: CVS = beast of SVN−→ SVN = beast of other tools

Page 16: Distributed development with Bazaarnano-bio.ehu.es/files/lecture-pouillon-bazaar.pdfOverview An extremely flexible tool Example: the management of ABINIT The end Distributed development

Overview An extremely flexible tool Example: the management of ABINIT The end

In conclusion ...

Do not feed the troll!

Page 17: Distributed development with Bazaarnano-bio.ehu.es/files/lecture-pouillon-bazaar.pdfOverview An extremely flexible tool Example: the management of ABINIT The end Distributed development

Overview An extremely flexible tool Example: the management of ABINIT The end

Outline

1 OverviewAn evolutionary processQuick tour of Bazaar 2.1

2 An extremely flexible toolKeeping up with an evolving projectPopular Bazaar workflows

3 Example: the management of ABINITSustaining the growth of the codeThe ABINIT Forge

Page 18: Distributed development with Bazaarnano-bio.ehu.es/files/lecture-pouillon-bazaar.pdfOverview An extremely flexible tool Example: the management of ABINIT The end Distributed development

Overview An extremely flexible tool Example: the management of ABINIT The end

Main objectives of Bazaar

Usability: "DVCS for Human Beings" (Ubuntu philosophy)

Portability: only requires Python ≥ 2.4Efficiency:

smart support for renaming files & directoriesoptimal use of disk spaceminimal overhead (fast branching & merging)

Productivity: "just a tool" (read the documentation)

Extensibility: Python plugins & well-documented API

Pluggability: suitable for embedded systemsSafety:

strong & active open-source communitytest suite with > 10,000 automatic tests

Freedom: Bazaar is Free Software (GPLv2+)

Page 19: Distributed development with Bazaarnano-bio.ehu.es/files/lecture-pouillon-bazaar.pdfOverview An extremely flexible tool Example: the management of ABINIT The end Distributed development

Overview An extremely flexible tool Example: the management of ABINIT The end

Bazaar core concepts

Revision: snapshot of the state of a file treeBranch: ordered series of revisionsRepository : store of revisions (branches sharing history)Working Tree: version-controlled directory holding sourceCheckout : source tree remotely connected to a branchStandalone Tree: independent branch with working treeBranching: action of splitting development linesMerging: action of joining development linesConflict : two branches contain different changes at thesame placeCriss-Cross: painfully intricate branches

For more informationhttp://doc.bazaar-vcs.org/bzr.dev/en/user-guide/

http://doc.bazaar-vcs.org/bzr.dev/en/user-reference/bzr_man.html

Page 20: Distributed development with Bazaarnano-bio.ehu.es/files/lecture-pouillon-bazaar.pdfOverview An extremely flexible tool Example: the management of ABINIT The end Distributed development

Overview An extremely flexible tool Example: the management of ABINIT The end

Bazaar core concepts

Revision: snapshot of the state of a file treeBranch: ordered series of revisionsRepository : store of revisions (branches sharing history)Working Tree: version-controlled directory holding sourceCheckout : source tree remotely connected to a branchStandalone Tree: independent branch with working treeBranching: action of splitting development linesMerging: action of joining development linesConflict : two branches contain different changes at thesame placeCriss-Cross: painfully intricate branches

For more informationhttp://doc.bazaar-vcs.org/bzr.dev/en/user-guide/

http://doc.bazaar-vcs.org/bzr.dev/en/user-reference/bzr_man.html

Page 21: Distributed development with Bazaarnano-bio.ehu.es/files/lecture-pouillon-bazaar.pdfOverview An extremely flexible tool Example: the management of ABINIT The end Distributed development

Overview An extremely flexible tool Example: the management of ABINIT The end

Bazaar core concepts

Revision: snapshot of the state of a file treeBranch: ordered series of revisionsRepository : store of revisions (branches sharing history)Working Tree: version-controlled directory holding sourceCheckout : source tree remotely connected to a branchStandalone Tree: independent branch with working treeBranching: action of splitting development linesMerging: action of joining development linesConflict : two branches contain different changes at thesame placeCriss-Cross: painfully intricate branches

For more informationhttp://doc.bazaar-vcs.org/bzr.dev/en/user-guide/

http://doc.bazaar-vcs.org/bzr.dev/en/user-reference/bzr_man.html

Page 22: Distributed development with Bazaarnano-bio.ehu.es/files/lecture-pouillon-bazaar.pdfOverview An extremely flexible tool Example: the management of ABINIT The end Distributed development

Overview An extremely flexible tool Example: the management of ABINIT The end

Bazaar core concepts

Revision: snapshot of the state of a file treeBranch: ordered series of revisionsRepository : store of revisions (branches sharing history)Working Tree: version-controlled directory holding sourceCheckout : source tree remotely connected to a branchStandalone Tree: independent branch with working treeBranching: action of splitting development linesMerging: action of joining development linesConflict : two branches contain different changes at thesame placeCriss-Cross: painfully intricate branches

For more informationhttp://doc.bazaar-vcs.org/bzr.dev/en/user-guide/

http://doc.bazaar-vcs.org/bzr.dev/en/user-reference/bzr_man.html

Page 23: Distributed development with Bazaarnano-bio.ehu.es/files/lecture-pouillon-bazaar.pdfOverview An extremely flexible tool Example: the management of ABINIT The end Distributed development

Overview An extremely flexible tool Example: the management of ABINIT The end

Bazaar core concepts

Revision: snapshot of the state of a file treeBranch: ordered series of revisionsRepository : store of revisions (branches sharing history)Working Tree: version-controlled directory holding sourceCheckout : source tree remotely connected to a branchStandalone Tree: independent branch with working treeBranching: action of splitting development linesMerging: action of joining development linesConflict : two branches contain different changes at thesame placeCriss-Cross: painfully intricate branches

For more informationhttp://doc.bazaar-vcs.org/bzr.dev/en/user-guide/

http://doc.bazaar-vcs.org/bzr.dev/en/user-reference/bzr_man.html

Page 24: Distributed development with Bazaarnano-bio.ehu.es/files/lecture-pouillon-bazaar.pdfOverview An extremely flexible tool Example: the management of ABINIT The end Distributed development

Overview An extremely flexible tool Example: the management of ABINIT The end

Bazaar core concepts

Revision: snapshot of the state of a file treeBranch: ordered series of revisionsRepository : store of revisions (branches sharing history)Working Tree: version-controlled directory holding sourceCheckout : source tree remotely connected to a branchStandalone Tree: independent branch with working treeBranching: action of splitting development linesMerging: action of joining development linesConflict : two branches contain different changes at thesame placeCriss-Cross: painfully intricate branches

For more informationhttp://doc.bazaar-vcs.org/bzr.dev/en/user-guide/

http://doc.bazaar-vcs.org/bzr.dev/en/user-reference/bzr_man.html

Page 25: Distributed development with Bazaarnano-bio.ehu.es/files/lecture-pouillon-bazaar.pdfOverview An extremely flexible tool Example: the management of ABINIT The end Distributed development

Overview An extremely flexible tool Example: the management of ABINIT The end

Bazaar core concepts

Revision: snapshot of the state of a file treeBranch: ordered series of revisionsRepository : store of revisions (branches sharing history)Working Tree: version-controlled directory holding sourceCheckout : source tree remotely connected to a branchStandalone Tree: independent branch with working treeBranching: action of splitting development linesMerging: action of joining development linesConflict : two branches contain different changes at thesame placeCriss-Cross: painfully intricate branches

For more informationhttp://doc.bazaar-vcs.org/bzr.dev/en/user-guide/

http://doc.bazaar-vcs.org/bzr.dev/en/user-reference/bzr_man.html

Page 26: Distributed development with Bazaarnano-bio.ehu.es/files/lecture-pouillon-bazaar.pdfOverview An extremely flexible tool Example: the management of ABINIT The end Distributed development

Overview An extremely flexible tool Example: the management of ABINIT The end

Bazaar core concepts

Revision: snapshot of the state of a file treeBranch: ordered series of revisionsRepository : store of revisions (branches sharing history)Working Tree: version-controlled directory holding sourceCheckout : source tree remotely connected to a branchStandalone Tree: independent branch with working treeBranching: action of splitting development linesMerging: action of joining development linesConflict : two branches contain different changes at thesame placeCriss-Cross: painfully intricate branches

For more informationhttp://doc.bazaar-vcs.org/bzr.dev/en/user-guide/

http://doc.bazaar-vcs.org/bzr.dev/en/user-reference/bzr_man.html

Page 27: Distributed development with Bazaarnano-bio.ehu.es/files/lecture-pouillon-bazaar.pdfOverview An extremely flexible tool Example: the management of ABINIT The end Distributed development

Overview An extremely flexible tool Example: the management of ABINIT The end

Bazaar core concepts

Revision: snapshot of the state of a file treeBranch: ordered series of revisionsRepository : store of revisions (branches sharing history)Working Tree: version-controlled directory holding sourceCheckout : source tree remotely connected to a branchStandalone Tree: independent branch with working treeBranching: action of splitting development linesMerging: action of joining development linesConflict : two branches contain different changes at thesame placeCriss-Cross: painfully intricate branches

For more informationhttp://doc.bazaar-vcs.org/bzr.dev/en/user-guide/

http://doc.bazaar-vcs.org/bzr.dev/en/user-reference/bzr_man.html

Page 28: Distributed development with Bazaarnano-bio.ehu.es/files/lecture-pouillon-bazaar.pdfOverview An extremely flexible tool Example: the management of ABINIT The end Distributed development

Overview An extremely flexible tool Example: the management of ABINIT The end

Bazaar core concepts

Revision: snapshot of the state of a file treeBranch: ordered series of revisionsRepository : store of revisions (branches sharing history)Working Tree: version-controlled directory holding sourceCheckout : source tree remotely connected to a branchStandalone Tree: independent branch with working treeBranching: action of splitting development linesMerging: action of joining development linesConflict : two branches contain different changes at thesame placeCriss-Cross: painfully intricate branches

For more informationhttp://doc.bazaar-vcs.org/bzr.dev/en/user-guide/

http://doc.bazaar-vcs.org/bzr.dev/en/user-reference/bzr_man.html

Page 29: Distributed development with Bazaarnano-bio.ehu.es/files/lecture-pouillon-bazaar.pdfOverview An extremely flexible tool Example: the management of ABINIT The end Distributed development

Overview An extremely flexible tool Example: the management of ABINIT The end

Bazaar core concepts

Revision: snapshot of the state of a file treeBranch: ordered series of revisionsRepository : store of revisions (branches sharing history)Working Tree: version-controlled directory holding sourceCheckout : source tree remotely connected to a branchStandalone Tree: independent branch with working treeBranching: action of splitting development linesMerging: action of joining development linesConflict : two branches contain different changes at thesame placeCriss-Cross: painfully intricate branches

For more informationhttp://doc.bazaar-vcs.org/bzr.dev/en/user-guide/

http://doc.bazaar-vcs.org/bzr.dev/en/user-reference/bzr_man.html

Page 30: Distributed development with Bazaarnano-bio.ehu.es/files/lecture-pouillon-bazaar.pdfOverview An extremely flexible tool Example: the management of ABINIT The end Distributed development

Overview An extremely flexible tool Example: the management of ABINIT The end

Bazaar core concepts

Revision: snapshot of the state of a file treeBranch: ordered series of revisionsRepository : store of revisions (branches sharing history)Working Tree: version-controlled directory holding sourceCheckout : source tree remotely connected to a branchStandalone Tree: independent branch with working treeBranching: action of splitting development linesMerging: action of joining development linesConflict : two branches contain different changes at thesame placeCriss-Cross: painfully intricate branches

For more informationhttp://doc.bazaar-vcs.org/bzr.dev/en/user-guide/

http://doc.bazaar-vcs.org/bzr.dev/en/user-reference/bzr_man.html

Page 31: Distributed development with Bazaarnano-bio.ehu.es/files/lecture-pouillon-bazaar.pdfOverview An extremely flexible tool Example: the management of ABINIT The end Distributed development

Overview An extremely flexible tool Example: the management of ABINIT The end

The Bazaar working tree

Directory structuremy_project/

+-.bzr/+-README+-branch/+-branch-format+-branch-lock/+-checkout/+-repository/

+-.bzrignore+-file1+-file2+-file3+-...

Page 32: Distributed development with Bazaarnano-bio.ehu.es/files/lecture-pouillon-bazaar.pdfOverview An extremely flexible tool Example: the management of ABINIT The end Distributed development

Overview An extremely flexible tool Example: the management of ABINIT The end

Bazaar main commands

bzr help: get generic help

bzr help commands: get help on commands

bzr [command] --help: get help on [command]

bzr init: create a standalone tree

bzr status: display current status of a branch

bzr add: tell Bazaar to version-control files & dirs

bzr remove: tell Bazaar to stop version-controlling files

bzr commit: take a snapshot of the working tree

bzr push: publish history to a remote branch

bzr pull: import history from a remote branch

bzr info: display branch information

Page 33: Distributed development with Bazaarnano-bio.ehu.es/files/lecture-pouillon-bazaar.pdfOverview An extremely flexible tool Example: the management of ABINIT The end Distributed development

Overview An extremely flexible tool Example: the management of ABINIT The end

Committing changes

Writing changelogsOne short summary line (no trailing dot)

* dir1/sub1/file1: Some changes. Makefull sentences.

* dir2/sub2/file2,dir3/sub3/file3: Someother changes.

* dir4/sub4/file4: Related changes (noblank line before).

* Additional notes and issues.

Recommended: GNU changelog format

All lines < 80 characters and start at first column

Reference document:http://www.gnu.org/prep/standards/html_node/Change-Logs.html

Page 34: Distributed development with Bazaarnano-bio.ehu.es/files/lecture-pouillon-bazaar.pdfOverview An extremely flexible tool Example: the management of ABINIT The end Distributed development

Overview An extremely flexible tool Example: the management of ABINIT The end

Merging branches

When joining development lines: conflicts may happenSolving conflicts: graphical tools might help, e.g.:

kdiff3xxdiff

bzr merge: merge a branch into another−→ criss-cross =⇒ bzr merge --weave

bzr conflicts: display remaining conflicts

bzr resolved: mark a conflict as resolved

bzr revert: rollback files/everything to the last snapshot

Page 35: Distributed development with Bazaarnano-bio.ehu.es/files/lecture-pouillon-bazaar.pdfOverview An extremely flexible tool Example: the management of ABINIT The end Distributed development

Overview An extremely flexible tool Example: the management of ABINIT The end

Merging branches

When joining development lines: conflicts may happenSolving conflicts: graphical tools might help, e.g.:

kdiff3xxdiff

bzr merge: merge a branch into another−→ criss-cross =⇒ bzr merge --weave

bzr conflicts: display remaining conflicts

bzr resolved: mark a conflict as resolved

bzr revert: rollback files/everything to the last snapshot

Page 36: Distributed development with Bazaarnano-bio.ehu.es/files/lecture-pouillon-bazaar.pdfOverview An extremely flexible tool Example: the management of ABINIT The end Distributed development

Overview An extremely flexible tool Example: the management of ABINIT The end

Good practice

Committing safely

ALWAYS issue a bzr status before committing

Merging safely

1 Commit first2 Merge the other branch3 Solve the conflicts4 Commit again5 Continue developing ...

Page 37: Distributed development with Bazaarnano-bio.ehu.es/files/lecture-pouillon-bazaar.pdfOverview An extremely flexible tool Example: the management of ABINIT The end Distributed development

Overview An extremely flexible tool Example: the management of ABINIT The end

Good practice

Committing safely

ALWAYS issue a bzr status before committing

Merging safely

1 Commit first2 Merge the other branch3 Solve the conflicts4 Commit again5 Continue developing ...

Page 38: Distributed development with Bazaarnano-bio.ehu.es/files/lecture-pouillon-bazaar.pdfOverview An extremely flexible tool Example: the management of ABINIT The end Distributed development

Overview An extremely flexible tool Example: the management of ABINIT The end

User interfaces

GUI: Bazaar Explorer

Web: Loggerhead

Page 39: Distributed development with Bazaarnano-bio.ehu.es/files/lecture-pouillon-bazaar.pdfOverview An extremely flexible tool Example: the management of ABINIT The end Distributed development

Overview An extremely flexible tool Example: the management of ABINIT The end

Outline

1 OverviewAn evolutionary processQuick tour of Bazaar 2.1

2 An extremely flexible toolKeeping up with an evolving projectPopular Bazaar workflows

3 Example: the management of ABINITSustaining the growth of the codeThe ABINIT Forge

Page 40: Distributed development with Bazaarnano-bio.ehu.es/files/lecture-pouillon-bazaar.pdfOverview An extremely flexible tool Example: the management of ABINIT The end Distributed development

Overview An extremely flexible tool Example: the management of ABINIT The end

There is no "one true way"

Definition

Workflow: way a team chooses to work together

In a project: workflow changes may become necessary

With Bazaar: the tool adapts to your needs

Purpose: let you focus on what truly matters

Following workflow descriptions

Extracted from the Bazaar User Guidehttp://doc.bazaar-vcs.org/bzr.dev/en/user-guide/

Page 41: Distributed development with Bazaarnano-bio.ehu.es/files/lecture-pouillon-bazaar.pdfOverview An extremely flexible tool Example: the management of ABINIT The end Distributed development

Overview An extremely flexible tool Example: the management of ABINIT The end

There is no "one true way"

Definition

Workflow: way a team chooses to work together

In a project: workflow changes may become necessary

With Bazaar: the tool adapts to your needs

Purpose: let you focus on what truly matters

Following workflow descriptions

Extracted from the Bazaar User Guidehttp://doc.bazaar-vcs.org/bzr.dev/en/user-guide/

Page 42: Distributed development with Bazaarnano-bio.ehu.es/files/lecture-pouillon-bazaar.pdfOverview An extremely flexible tool Example: the management of ABINIT The end Distributed development

Overview An extremely flexible tool Example: the management of ABINIT The end

Outline

1 OverviewAn evolutionary processQuick tour of Bazaar 2.1

2 An extremely flexible toolKeeping up with an evolving projectPopular Bazaar workflows

3 Example: the management of ABINITSustaining the growth of the codeThe ABINIT Forge

Page 43: Distributed development with Bazaarnano-bio.ehu.es/files/lecture-pouillon-bazaar.pdfOverview An extremely flexible tool Example: the management of ABINIT The end Distributed development

Overview An extremely flexible tool Example: the management of ABINIT The end

Solo / single

Best practice for programming / writing:backup of old versionsrollback to an earlier statetracking of historyfast and lightweight

Papers, posters, talks, reviews, ...

Page 44: Distributed development with Bazaarnano-bio.ehu.es/files/lecture-pouillon-bazaar.pdfOverview An extremely flexible tool Example: the management of ABINIT The end Distributed development

Overview An extremely flexible tool Example: the management of ABINIT The end

Partners / peer-to-peer

Advantages over solo:easier sharing of dataline-wise tracking of changes (who did what)no server requiredintelligent merging

Page 45: Distributed development with Bazaarnano-bio.ehu.es/files/lecture-pouillon-bazaar.pdfOverview An extremely flexible tool Example: the management of ABINIT The end Distributed development

Overview An extremely flexible tool Example: the management of ABINIT The end

Lock-step / centralized

Advantages over centralized VCS’s:better branching and mergingsimpler renaming support (files & directories)ability to change workflow whenever it makes sense

Page 46: Distributed development with Bazaarnano-bio.ehu.es/files/lecture-pouillon-bazaar.pdfOverview An extremely flexible tool Example: the management of ABINIT The end Distributed development

Overview An extremely flexible tool Example: the management of ABINIT The end

Centralized with local commits

Advantages over centralized:can work offline (e.g. during travel)less interference of bad commits

Page 47: Distributed development with Bazaarnano-bio.ehu.es/files/lecture-pouillon-bazaar.pdfOverview An extremely flexible tool Example: the management of ABINIT The end Distributed development

Overview An extremely flexible tool Example: the management of ABINIT The end

Distributed with shared mainline

Advantages over centralized with local commits:easier organization of workcross-merging possibleshared repositories and integrated merging

Page 48: Distributed development with Bazaarnano-bio.ehu.es/files/lecture-pouillon-bazaar.pdfOverview An extremely flexible tool Example: the management of ABINIT The end Distributed development

Overview An extremely flexible tool Example: the management of ABINIT The end

Distributed with human gatekeeper

Advantages over distributed with shared mainline:systematic review of the codetighter control over when changes go to mainline

Page 49: Distributed development with Bazaarnano-bio.ehu.es/files/lecture-pouillon-bazaar.pdfOverview An extremely flexible tool Example: the management of ABINIT The end Distributed development

Overview An extremely flexible tool Example: the management of ABINIT The end

Distributed with automatic gatekeeper

Advantages over distributed with human gatekeeper:systematic testing of the code (higher mainline integrity)better scaling with team growthdedicated tool: Patch Queue Manager (PQM)

Page 50: Distributed development with Bazaarnano-bio.ehu.es/files/lecture-pouillon-bazaar.pdfOverview An extremely flexible tool Example: the management of ABINIT The end Distributed development

Overview An extremely flexible tool Example: the management of ABINIT The end

Outline

1 OverviewAn evolutionary processQuick tour of Bazaar 2.1

2 An extremely flexible toolKeeping up with an evolving projectPopular Bazaar workflows

3 Example: the management of ABINITSustaining the growth of the codeThe ABINIT Forge

Page 51: Distributed development with Bazaarnano-bio.ehu.es/files/lecture-pouillon-bazaar.pdfOverview An extremely flexible tool Example: the management of ABINIT The end Distributed development

Overview An extremely flexible tool Example: the management of ABINIT The end

The mutation of ABINIT

Challenges

Growing size of the code

Growing complexity of the code

Growing number of contributors

Growing size of the community

ABINIT developers: all around the world + heterogeneousUntil 2004

source code managed by CVSworkflow: mostly solo

2004 −→ 2008transition: CVS −→ GNU Arch −→ Bazaarexploration of workflows

Page 52: Distributed development with Bazaarnano-bio.ehu.es/files/lecture-pouillon-bazaar.pdfOverview An extremely flexible tool Example: the management of ABINIT The end Distributed development

Overview An extremely flexible tool Example: the management of ABINIT The end

Breaking free from the client-server model

GNU Arch (2001)

Originally: set of specifications to manage project history−→ generic protocol−→ overcome the drawbacks of centralized versioning−→ freedom regarding implementations

Specifically designed for distributed development

Work while disconnected from the network

Branching and mirroring do not require cooperationUses available infrastructure: no dedicated server

support for multiple network protocolspermissions managed by the underlying system

Implementations in C / C++ / Python

Page 53: Distributed development with Bazaarnano-bio.ehu.es/files/lecture-pouillon-bazaar.pdfOverview An extremely flexible tool Example: the management of ABINIT The end Distributed development

Overview An extremely flexible tool Example: the management of ABINIT The end

Breaking free from the client-server model

GNU Arch (2001)

Originally: set of specifications to manage project history−→ generic protocol−→ overcome the drawbacks of centralized versioning−→ freedom regarding implementations

Specifically designed for distributed development

Work while disconnected from the network

Branching and mirroring do not require cooperationUses available infrastructure: no dedicated server

support for multiple network protocolspermissions managed by the underlying system

Implementations in C / C++ / Python

Page 54: Distributed development with Bazaarnano-bio.ehu.es/files/lecture-pouillon-bazaar.pdfOverview An extremely flexible tool Example: the management of ABINIT The end Distributed development

Overview An extremely flexible tool Example: the management of ABINIT The end

From GNU Arch to Bazaar

TLA (Tom Lord’s Arch) [2001–2005]home page: http://wiki.gnuarch.org/FrontPageseveral forks: ArX, arch++, bazpart of the GNU Project in 2003basic maintenance since 2006

Baz (fork of TLA) [2004–2005]project initiated by Canonical Ltd. (Ubuntu)simpler UI, new archive format, better algorithmsmany issues: usability, lack of flexibility, bad scaling

Bazaar "New Generation" (bzr) [since 2005]home page: http://bazaar-vcs.org/not based on GNU Arch anymore, still using some conceptscompletely rewritten from scratch in Python 2.4key component of Ubuntu and Launchpad

Page 55: Distributed development with Bazaarnano-bio.ehu.es/files/lecture-pouillon-bazaar.pdfOverview An extremely flexible tool Example: the management of ABINIT The end Distributed development

Overview An extremely flexible tool Example: the management of ABINIT The end

From GNU Arch to Bazaar

TLA (Tom Lord’s Arch) [2001–2005]home page: http://wiki.gnuarch.org/FrontPageseveral forks: ArX, arch++, bazpart of the GNU Project in 2003basic maintenance since 2006

Baz (fork of TLA) [2004–2005]project initiated by Canonical Ltd. (Ubuntu)simpler UI, new archive format, better algorithmsmany issues: usability, lack of flexibility, bad scaling

Bazaar "New Generation" (bzr) [since 2005]home page: http://bazaar-vcs.org/not based on GNU Arch anymore, still using some conceptscompletely rewritten from scratch in Python 2.4key component of Ubuntu and Launchpad

Page 56: Distributed development with Bazaarnano-bio.ehu.es/files/lecture-pouillon-bazaar.pdfOverview An extremely flexible tool Example: the management of ABINIT The end Distributed development

Overview An extremely flexible tool Example: the management of ABINIT The end

From GNU Arch to Bazaar

TLA (Tom Lord’s Arch) [2001–2005]home page: http://wiki.gnuarch.org/FrontPageseveral forks: ArX, arch++, bazpart of the GNU Project in 2003basic maintenance since 2006

Baz (fork of TLA) [2004–2005]project initiated by Canonical Ltd. (Ubuntu)simpler UI, new archive format, better algorithmsmany issues: usability, lack of flexibility, bad scaling

Bazaar "New Generation" (bzr) [since 2005]home page: http://bazaar-vcs.org/not based on GNU Arch anymore, still using some conceptscompletely rewritten from scratch in Python 2.4key component of Ubuntu and Launchpad

Page 57: Distributed development with Bazaarnano-bio.ehu.es/files/lecture-pouillon-bazaar.pdfOverview An extremely flexible tool Example: the management of ABINIT The end Distributed development

Overview An extremely flexible tool Example: the management of ABINIT The end

Outline

1 OverviewAn evolutionary processQuick tour of Bazaar 2.1

2 An extremely flexible toolKeeping up with an evolving projectPopular Bazaar workflows

3 Example: the management of ABINITSustaining the growth of the codeThe ABINIT Forge

Page 58: Distributed development with Bazaarnano-bio.ehu.es/files/lecture-pouillon-bazaar.pdfOverview An extremely flexible tool Example: the management of ABINIT The end Distributed development

Overview An extremely flexible tool Example: the management of ABINIT The end

Components of the Forge

File server available through SSHbackup facilitymerging made easy

Repositoriesone per developer / teamcontaining all necessary branchesstrict naming conventions for public branches

Maintenance utilitiescreation of repositories & branchesinformation about archive statusmanagement of permissions (Unix)

Test farm / nightly buildschecking branch status: buildability & mergeabilitymonitoring critical filesbuilding branches on various architectures−→ various hardware / OS / compiler combinationsreporting nicely & daily online

Page 59: Distributed development with Bazaarnano-bio.ehu.es/files/lecture-pouillon-bazaar.pdfOverview An extremely flexible tool Example: the management of ABINIT The end Distributed development

Overview An extremely flexible tool Example: the management of ABINIT The end

Components of the Forge

File server available through SSHbackup facilitymerging made easy

Repositoriesone per developer / teamcontaining all necessary branchesstrict naming conventions for public branches

Maintenance utilitiescreation of repositories & branchesinformation about archive statusmanagement of permissions (Unix)

Test farm / nightly buildschecking branch status: buildability & mergeabilitymonitoring critical filesbuilding branches on various architectures−→ various hardware / OS / compiler combinationsreporting nicely & daily online

Page 60: Distributed development with Bazaarnano-bio.ehu.es/files/lecture-pouillon-bazaar.pdfOverview An extremely flexible tool Example: the management of ABINIT The end Distributed development

Overview An extremely flexible tool Example: the management of ABINIT The end

Components of the Forge

File server available through SSHbackup facilitymerging made easy

Repositoriesone per developer / teamcontaining all necessary branchesstrict naming conventions for public branches

Maintenance utilitiescreation of repositories & branchesinformation about archive statusmanagement of permissions (Unix)

Test farm / nightly buildschecking branch status: buildability & mergeabilitymonitoring critical filesbuilding branches on various architectures−→ various hardware / OS / compiler combinationsreporting nicely & daily online

Page 61: Distributed development with Bazaarnano-bio.ehu.es/files/lecture-pouillon-bazaar.pdfOverview An extremely flexible tool Example: the management of ABINIT The end Distributed development

Overview An extremely flexible tool Example: the management of ABINIT The end

Components of the Forge

File server available through SSHbackup facilitymerging made easy

Repositoriesone per developer / teamcontaining all necessary branchesstrict naming conventions for public branches

Maintenance utilitiescreation of repositories & branchesinformation about archive statusmanagement of permissions (Unix)

Test farm / nightly buildschecking branch status: buildability & mergeabilitymonitoring critical filesbuilding branches on various architectures−→ various hardware / OS / compiler combinationsreporting nicely & daily online

Page 62: Distributed development with Bazaarnano-bio.ehu.es/files/lecture-pouillon-bazaar.pdfOverview An extremely flexible tool Example: the management of ABINIT The end Distributed development

Overview An extremely flexible tool Example: the management of ABINIT The end

Different scales, different workflows

Top level: distributed with human gatekeeper

Geographical teams: peer-to-peer, lock-step, local commits

Topical teams: peer-to-peer, distributed + shared mainline

Maintainers: solo, using shared repositories

Example of shared repositoryABINIT/

+-6.3/ # <--- Repository+-6.3.0-pouillon/+-6.3.0-trunk/+-6.3.0-gmatteo-public/

Page 63: Distributed development with Bazaarnano-bio.ehu.es/files/lecture-pouillon-bazaar.pdfOverview An extremely flexible tool Example: the management of ABINIT The end Distributed development

Overview An extremely flexible tool Example: the management of ABINIT The end

Benefits to ABINIT from Bazaar

Central archive for data storage & sharing

Reduced overhead for merges

Easy propagation of partial merges

All developer teams may work as they prefer

Only initial support required (autonomy comes fast)

Services: test farm, branch browser, web reporting

Good practice

A technical tool never fulfills social dutiesTo ensure sustainability:

define & enforce clear rules for developers

define & enforce clear policies for the branches

make sure information flows

Page 64: Distributed development with Bazaarnano-bio.ehu.es/files/lecture-pouillon-bazaar.pdfOverview An extremely flexible tool Example: the management of ABINIT The end Distributed development

Overview An extremely flexible tool Example: the management of ABINIT The end

Acknowledgments

Funding by MICINN & ETORTEK

ABINIT Developers

Bazaar Developers

Wikimedia Commons & Wikipedia

art.gnome.org

Page 65: Distributed development with Bazaarnano-bio.ehu.es/files/lecture-pouillon-bazaar.pdfOverview An extremely flexible tool Example: the management of ABINIT The end Distributed development

Overview An extremely flexible tool Example: the management of ABINIT The end

Always remember ...

Golden rule of versioning

Commit early, commit often!

Thank you!

Page 66: Distributed development with Bazaarnano-bio.ehu.es/files/lecture-pouillon-bazaar.pdfOverview An extremely flexible tool Example: the management of ABINIT The end Distributed development

Overview An extremely flexible tool Example: the management of ABINIT The end

Always remember ...

Golden rule of versioning

Commit early, commit often!

Thank you!