Differences between revisions 11 and 12
Revision 11 as of 2010-02-22 07:15:40
Size: 6112
Editor: barry
Comment:
Revision 12 as of 2010-02-22 07:15:41
Size: 6100
Editor: barry
Comment: Migrated to Confluence 4.0
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
#pragma page-filename DEV/versions/14352425 #pragma page-filename DEV/versions/15958128
Line 3: Line 3:
Line 12: Line 13:
The Mailman source code was originally maintained using CVS, and only a few people had write access to the code. Later, development was moved to [[http://sourceforge.net|SourceForge]] and then the CVS repository was converted to Subversion. This proved to be a successful transition, as Subversion provided many benefits over CVS.
Line 14: Line 14:
Now however, it's become clear that even Subversion has its limitations, and better options exist. Specifically, we are now using the distributed (or decentralized) revision control system (dvcs) called [[http://bazaar-vcs.org|Bazaar]]. Bazaar has many beneficial features, both for the core developers and for casual, third party developers. These include: The Mailman source code was originally maintained using CVS, and only a few people had write access to the code. Later, development was moved to [[http://sourceforge.net|SourceForge]] and then the CVS repository was converted to Subversion. This proved to be a successful transition, as Subversion provided many benefits over CVS.

Now however, it's become clear that even Subversion has its limitations, and better options exist. Specifically, we are now using the distributed (or decentralized) revision control system (dvcs) called [[http://bazaar-vcs.org|Bazaar]]. Bazaar has many beneficial features, both for the core developers and for casual, third party developers. These include:
Line 23: Line 25:
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.
Line 25: Line 26:
The other really cool thing is that unofficial developers can much more easily maintain their own branches, with easy synchronization 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. 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 synchronization 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.
Line 30: Line 33:
We have chosen [[http://bazaar-vcs.org|Bazaar]] as the dvcs for Mailman. Bazaar is free software, released under the GPL.
Line 32: Line 34:
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 [[http://www.macports.org|MacPorts]]). We have chosen [[http://bazaar-vcs.org|Bazaar]] as the dvcs for Mailman. Bazaar is free software, released under the GPL.
Line 34: Line 36:
I highly recommend Bazaar version 2.0 or newer. Use {{{bzr \-\-version}}} to see what version you've got. 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 [[http://www.macports.org|MacPorts]]).
Line 36: Line 38:
Full disclosure: Barry's company, [[http://www.canonical.com|Canonical]] develops Bazaar.  This means Barry has some inside avenues for addressing any issues we might have with Bazaar. I highly recommend Bazaar version 2.0 or newer. Use `bzr --version` to see what version you've got.

Full disclosure: Barry's company, [[http://www.canonical.com|Canonical]] develops Bazaar. This means Barry has some inside avenues for addressing any issues we might have with Bazaar.
Line 39: Line 43:
[[http://launchpad.net|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.
[[http://launchpad.net|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.
Line 44: Line 49:
Line 46: Line 52:
{{{{#!table {{{#!table
Line 48: Line 54:
Line 49: Line 56:
Line 52: Line 60:
Line 53: Line 62:
|| {{{bzr branch lp:mailman/2.1}}}
|| `bzr branch lp:mailman/2.1`
Line 56: Line 66:
Line 57: Line 68:
|| {{{bzr branch lp:mailman}}}
}}}}

|| `bzr branch lp:mailman`
}}}
Line 60: Line 73:
In order to get write access to these branches, you must join the [[https://launchpad.net/~mailman-coders|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.
In order to get write access to these branches, you must join the [[https://launchpad.net/~mailman-coders|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.
Line 68: Line 82:
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. 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.
Line 73: Line 87:
You can always publish your own unofficial branches any way you want.  You can also use Launchpad's [[https://help.launchpad.net/CreatingAHostedBranch|branch hosting service]].  Non-core developers can publish their own branches any place you want -- it doesn't have to be on Launchpad.  If you want to take advantage of Launchpad's code hosting facilities, you can register with Launchpad and then push your own branches to it using:
You can always publish your own unofficial branches any way you want. You can also use Launchpad's [[https://help.launchpad.net/CreatingAHostedBranch|branch hosting service]]. Non-core developers can publish their own branches any place you want it doesn't have to be on Launchpad. If you want to take advantage of Launchpad's code hosting facilities, you can register with Launchpad and then push your own branches to it using:
Line 82: Line 97:

Quick start

You need bzr 2.0 or higher.

% bzr init-repo mailman
% cd mailman
% bzr branch lp:mailman

Developing Mailman using Bazaar and Launchpad

The Mailman source code was originally 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 provided many benefits over CVS.

Now however, it's become clear that even Subversion has its limitations, and better options exist. Specifically, we are now using the distributed (or decentralized) revision control system (dvcs) called Bazaar. Bazaar 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 synchronization 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 such as Bazaar 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 2.0 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-only access

You can get a read-only local copy of one of the official branches by using these commands:

Branch Description Bazaar command
2.1 Stable release bzr branch lp:mailman/2.1
3.0 Active development branch bzr branch lp:mailman

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 lp:mailman

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.

You can read more about using team branches on Launchpad.

Publishing your unofficial branches

You can always publish your own unofficial branches any way you want. You can also use Launchpad's branch hosting service. Non-core developers can publish their own branches any place you want – it doesn't have to be on Launchpad. If you want to take advantage of Launchpad's code hosting facilities, you can register with Launchpad and then push your own branches to it using:

bzr push lp:~<you>/mailman/<whatever>

Be sure to add your branch to the list of unofficial branches.

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)