Distributed Development with Bazaar
Total Page:16
File Type:pdf, Size:1020Kb
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 Overview An extremely flexible tool Example: the management of ABINIT The end Outline 1 Overview An evolutionary process Quick tour of Bazaar 2.1 2 An extremely flexible tool Keeping up with an evolving project Popular Bazaar workflows 3 Example: the management of ABINIT Sustaining the growth of the code The ABINIT Forge Overview An extremely flexible tool Example: the management of ABINIT The end Outline 1 Overview An evolutionary process Quick tour of Bazaar 2.1 2 An extremely flexible tool Keeping up with an evolving project Popular Bazaar workflows 3 Example: the management of ABINIT Sustaining the growth of the code The ABINIT Forge 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 files weave method: uniform data retrieval time outcome: SCCS adopted by Unix 1980’s: from solo to team work (RCS times) independent streams of development project management & VCS decoupled outcome: data retrieval efficiency & reliability 1990’s: organizing collaboration (CVS times) golden age of client-server model uprising of the centralized model outcome: atomicity, file management, deployment 2000’s: going back to freedom emergence of the distributed model explosion of "ecological diversity" outcome: better flexibility, usability & scaling 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 files weave method: uniform data retrieval time outcome: SCCS adopted by Unix 1980’s: from solo to team work (RCS times) independent streams of development project management & VCS decoupled outcome: data retrieval efficiency & reliability 1990’s: organizing collaboration (CVS times) golden age of client-server model uprising of the centralized model outcome: atomicity, file management, deployment 2000’s: going back to freedom emergence of the distributed model explosion of "ecological diversity" outcome: better flexibility, usability & scaling 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 files weave method: uniform data retrieval time outcome: SCCS adopted by Unix 1980’s: from solo to team work (RCS times) independent streams of development project management & VCS decoupled outcome: data retrieval efficiency & reliability 1990’s: organizing collaboration (CVS times) golden age of client-server model uprising of the centralized model outcome: atomicity, file management, deployment 2000’s: going back to freedom emergence of the distributed model explosion of "ecological diversity" outcome: better flexibility, usability & scaling 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 files weave method: uniform data retrieval time outcome: SCCS adopted by Unix 1980’s: from solo to team work (RCS times) independent streams of development project management & VCS decoupled outcome: data retrieval efficiency & reliability 1990’s: organizing collaboration (CVS times) golden age of client-server model uprising of the centralized model outcome: atomicity, file management, deployment 2000’s: going back to freedom emergence of the distributed model explosion of "ecological diversity" outcome: better flexibility, usability & scaling 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 compatibility Today: probably the most popular for the centralized model Reason: smooth transition from CVS 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 compatibility Today: probably the most popular for the centralized model Reason: smooth transition from CVS 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 compatibility Today: probably the most popular for the centralized model Reason: smooth transition from CVS 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: doocracy the actual developers take the decisions dynamical reorganization, delegation of powers mostly bottom-up structure Bazaar: "VCS for Human Beings" "Just a tool" philosophy + bindings to other VCS’s 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: doocracy the actual developers take the decisions dynamical reorganization, delegation of powers mostly bottom-up structure Bazaar: "VCS for Human Beings" "Just a tool" philosophy + bindings to other VCS’s 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: doocracy the actual developers take the decisions dynamical reorganization, delegation of powers mostly bottom-up structure Bazaar: "VCS for Human Beings" "Just a tool" philosophy + bindings to other VCS’s 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 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 Overview An extremely flexible tool Example: the management of ABINIT The end In conclusion ... Do not feed the troll! Overview An extremely flexible tool Example: the management of ABINIT The end Outline 1 Overview An evolutionary process Quick tour of Bazaar 2.1 2 An extremely flexible tool Keeping up with an evolving project Popular Bazaar workflows 3 Example: the management of ABINIT Sustaining the growth of the code The ABINIT Forge 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.4 Efficiency: smart support for renaming files & directories optimal use of disk space minimal overhead (fast branching & merging) Productivity: "just a tool" (read the documentation) Extensibility: Python plugins & well-documented API Pluggability: suitable for embedded systems Safety: strong & active open-source community test suite with > 10,000 automatic tests Freedom: Bazaar is Free Software (GPLv2+) Overview An extremely flexible tool Example: the management of ABINIT The end Bazaar core concepts Revision: snapshot of the state of a file tree Branch: ordered series of revisions Repository: store of revisions (branches sharing history) Working Tree: version-controlled directory holding source Checkout: source tree remotely connected to a branch Standalone Tree: independent branch with working tree Branching: action of splitting development lines Merging: