Differences between revisions 1 and 2
Revision 1 as of 2007-05-29 15:19:44
Size: 5467
Editor: barry
Comment:
Revision 2 as of 2007-05-29 15:38:37
Size: 5465
Editor: barry
Comment:
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
#pragma page-filename DEV/versions/589839 #pragma page-filename DEV/versions/589840
Line 57: Line 57:
% bzr branch sftp://<you>@bazaar.launchpad.net/%7Emailman-coders/mailman/<branch> % bzr branch sftp://<you>@bazaar.launchpad.net/~mailman-coders/mailman/<branch>

Developing Mailman using Bazaar and Launchpad

The Mailman source code was original maintained using CVS, and only a few people had write access to the code. Later, development was moved to SourceForge and then the CVS repository was converted to Subversion. This proved to be a successful transition, as Subversion provides many benefits over CVS.

Now however, it's become clear that even Subversion has its limitations, and better options exist. Specifically, we want to use a distributed (or decentralized) revision control system. A dvcs has many beneficial features, both for the core developers and for casual, third party developers. These include:

  • No write access to the central repository is necessary in order to develop, maintain, version control, and publish unofficial contributions.
  • No connection to a repository server is necessary in order to commit changes.
  • Much better branching and merging operations; no need to commit partially completed work.
  • Much better merge tracking.
  • Ability to sign revisions with GPG.

  • Written in Python, with an easy plug-in architecture.

  • Simple and intuitive commands.

What are the most immediate benefits? Tops on my list is the ability to commit changes and use all the benefits of version control without having to be connected to the server hosting the official branches. That means it's much easier for me to develop Mailman when, say I'm on a train. Once I'm back on the net, I can push the changes back to the hosted service and then everyone else can see the latest updates.

The other really cool thing is that unofficial developers can much more easily maintain their own branches, with easy sync'ing and merging with the official branches. That means 1) the core developers are no longer a bottleneck for you to publish your cool Mailman hacks; 2) your branches are much easier for core developers to review and merge than using a bunch of diff files.

Using a dvcs is an eye-opening change, so I hope you give it a try.

Bazaar

We have chosen Bazaar as the dvcs for Mailman. Bazaar is free software, released under the GPL.

You should be able to learn enough about Bazaar (often called bzr after its command name) to be productive in a few hours, if you are already familiar with other revision control systems. I encourage you to read up on the Bazaar web site. Also, Bazaar is available on all major platforms; with many having packages available already (certainly so for Ubuntu Linux and Mac OS X via MacPorts).

I highly recommend Bazaar version 0.16 or newer. Use bzr \-\-version to see what version you've got.

Full disclosure: Barry's company, Canonical develops Bazaar. This means Barry has some inside avenues for addressing any issues we might have with Bazaar.

Launchpad

Launchpad is a distributed software development platform which can be used to host Bazaar branches (among other things). We will use Launchpad to host the official Mailman branches. It's important to note that you do not need to use Launchpad to host and publish your own branches! If you have a web server or sftp site, you can easily host your own branches. We use Launchpad because it's highly available and backed up, and it is well integrated with other services we may some day take advantage of.

Full disclosure: Barry's company Canonical also develops and maintains Launchpad, which means he has some inside avenues for addressing any issues we might have with the hosting service.

Read access

These branches are not yet available, but soon will be. Check back here; when this notice is removed the branches will be live.

You can get read access to the official branches by simply doing this:

% bzr branch http://bazaar.launchpad.net/~mailman-coders/mailman/<branch>

where <branch> is one of the following official branches:

  • 2.1 -- the stable Mailman 2.1 maintenance branch
  • 2.2 -- the in-development branch of Mailman 2.2
  • 3.0 -- the in-development branch of Mailman 3.0
  • admin -- administrative tools, www.list.org web site, and release tools

Write access

In order to get write access to these branches, you must join the mailman-coders Launchpad team. So of course, this means you must first register on Launchpad. You can request membership in this team, but you must be approved by a team owner. This is how we control write access to the official branches, so only core Mailman developers will be approved.

Once you are a member of mailman-coders, you will create your own local branches:

% bzr branch sftp://<you>@bazaar.launchpad.net/~mailman-coders/mailman/<branch>

where <you> is your Launchpad user name, and <branch> has the same meaning as above. You can make all the local changes and commits you want, and then when you're ready to push your changes to the official branches, you will use bzr push from your branch directory.

Getting branch change notifications

Join the mailman-checkins@python.org mailing list; this list will get branch change notifications just like it did with Subversion commits.

MailmanWiki: DEV/MailmanOnLaunchpad (last edited 2017-06-02 22:09:36 by msapiro)