PyBaz and BazaarNG



PyBaz and bzr are both written in Python. We should not end up with two incompatible scripting APIs to Bazaar-NG. As Bazaar converges with Bazaar-NG, that could happen.

As bzr is an implementation of Bazaar-NG, its internal API might be different from its internal API.

This specification discusses the roadmap for PyBaz as it and bzr evolve.


The scripting API of bzr should be included in bzr itself, there is no need to make it a separate module, and that would make maintenance and use unecessarily complicated.

PyBaz models Arch very closely and would need extensive modification to provide a good API to the Bazaar-NG model. In addition, this code base is crufty and suffers many design problems.

Evolving the PyBaz API would be a lenghty process of deprecation. Fixing the current inherent problems of PyBaz and evolving it to match the Bazaar-NG model would be a lot of work.

Scope and Use Cases

External tools need a flexible interface to operate on Bazaar-NG data.

Some examples of tools that need a scripting API:

  • graphical user interfaces
  • alternative command line interfaces
  • robots, like Patch Queue Manager
  • conversion tools, like CSCVS
  • branch topology graphers

Community and company software currently use PyBaz, and will have to undergo important changes to accomodate the model differences between Arch and Bazaar-NG.

Implementation Plan

bzr will provide a stable scripting API to enable its use as a Python library.

PyBaz will change as much as necessary to support evolutions in baz that affect company software.

One change that would have to be implemented in the short term to support baz 1.3 and 1.4 is specified on the gnuarch wiki:

When bzr is deemed suitable for production, PyBaz will be orphaned and high-level code that depends on it will have to be updated in one step.

Data Preservation and Migration

No transition path will be provided for high-level code depending on the PyBaz API.

Authors of tools based on PyBaz have been consulted and feel it would be simpler to just call bzrlib.

Version control data migration will be provided by BazAndBzrConvergence.

Packages Affected


User Interface Requirements

Most users access this functionality through hct and will not be affected.

Outstanding Issues


UbuntuDownUnder/BOFs/PybazAndBzr (last edited 2008-08-06 16:39:35 by localhost)