Bundling more plugins into bzrtools

Robert Collins robertc at robertcollins.net
Wed Feb 13 20:35:58 GMT 2008


On Wed, 2008-02-13 at 09:15 -0800, Toshio Kuratomi wrote:
> Hello all,
> 
> I'm a packager of bzr and related tools for Fedora.  At the moment, I'm 
> the only packager of bzr and related tools for Fedora.  As such, I've 
> run up against a problem that I think is plaguing other packagers as 
> well (See dato's posting [1]_ for one instance): There are a huge number 
> of useful plugins[2]_ for bazaar but it takes an equally huge amount of 
> manpower to package them.
> 
> There are two main reasons for this:
> 
> 1) Many of the plugins don't have a regular release schedule and are 
> only available as a bzr branch.  For a packager, this means that they 
> have to poll the upstream branch to check if any significant changes 
> have occurred since the last snapshot was taken.  If changes have 
> occurred, they have to create a snapshot of the source.  Then they can 
> create the updated package.  If the plugins were part of a package that 
> had regular releases the packager could just subscribe to announcements 
> for that package or have a script watch for a new tarball to appear in a 
> download directory and skip directly to step three.

set -e
old_revno=$(bzr revno)
bzr pull
if [ $(bzr revno) == old_revno ] then;
    exit
fi
new_revno=$(bzr revno)
bzr export ../$(basename $(pwd))-${new_revno}.tar.bz2

Throw that in cron, run it as often as you like and now you can have a
watch script watch that directory.

> 2) Each plugin is a small amount of code but takes practically the same 
> amount of packaging work as a much larger package.  The overhead for 
> packaging and maintaining each of bzr-webserve, bzr-bisect, bzr-dbus, 
> bzr-stats, and etc is the same as maintaining the bzr package itself. 
> The more packages are consolidated into a single base the more time 
> downstream maintainers have to spend helping to address actual bugs 
> rather than looking for new versions of each little package.

Finding new versions of each package should be /entirely/ automated. If
its not; I'm happy to provide advice on how to use bzr to do that; and
for the plugins I write I'm extremely happy to add some small metadata
to the branches to ease automation.

>  From a packager's point of view, the solution to these issues is 
> upstream consolidation.  If there is an upstream tarball that provides 
> ten helpful plugins the packager would be able to package 10x as much 
> functionality.
> 
> This consolidation is also helpful to the upstream projects.  For 
> instance, if bzr-dbus, bzr-bisect, and bzr-stats tried to solve problem 
> #1 individually they would each have to implement build scripts to make 
> their checkout into a ready to consume tarball

bzr export if we want to create tarballs; but really - tarballs are
slower, are not incrementally updatable, and are generally not very
convenient. You can't log a tarball, nor update from it. (Well, I hope
to change this soon, but in the general case).

> , each have to write 
> instructions for installing,

we have to anyway

>  and each have to create releases when the 
> time came.

I don't understand why we'd need to do this; if bzr-dbus is compatible
with bzr 1.1, but hasn't had any commits, nor any change in
compatibility with bzr 1.2, why do I need to do a new release of
bzr-dbus?

>   If combined, one set of build scripts and one release 
> manager could do the job for all of them.
> 
> Aaron Bentley's bzrtools package is a nice illustration of the payoff. 
> bzrtools has releases that coincide with every bzr major release.  It 
> has multiple useful plugins that give it great packager bang for the 
> buck.  Consequently bzrtools is packaged for Debian, Ubuntu, Fedora, 
> Gentoo, FreeBSD, etc while other useful plugins like stats, bisect, and 
> dbus are packaged for very few.

I'm not sure I agree with your cause and effect analysis here. I think
bzrtools does a much better job of making itself visible to the
packaging community through releases-every-bzr-release. Most of my
plugins I don't give formal releases to, but I'm happy to write a script
to do so if thats really the problem.

> Aaron Bentley is also willing to *merge more plugins* into bzrtools if 
> the plugin authors want that to happen which is the point of this whole 
> email, really.  Please, plugin authors, let's start a conversation about 
> merging more of these plugins into bzrtools so your hard work is 
> packaged up for others to use and thank you for creating :-)

I'm pretty uninterested in getting my plugins merged into bzrtools. I
think bzrtools is great, but saying 'you must centralise to get users'
rather defeats the point of having written the plugin in the first
place: its meant to be an optional extension, and putting it bzrtools
will make it non-optional if you want anything else that is already in
bzrtools. And thats a problem when, like yesterday, some internal
changes in the dbus python bindings propogated to hardy and I fixed the
plugin - but added a stricter dependency. bzrtools has _much_ wider
compatibility than that.

-Rob
-- 
GPG key available at: <http://www.robertcollins.net/keys.txt>.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: This is a digitally signed message part
Url : https://lists.ubuntu.com/archives/bazaar/attachments/20080214/b23979c4/attachment.pgp 


More information about the bazaar mailing list