PyBaz and BazaarNG
Created: 23/04/05 by RobertCollins
- Malone Bug:
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.
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.
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: http://wiki.gnuarch.org/PybazArchiveLocation
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.
User Interface Requirements
Most users access this functionality through hct and will not be affected.