Differences between revisions 1 and 14 (spanning 13 versions)
Revision 1 as of 2007-05-29 15:19:44
Size: 5467
Editor: barry
Comment:
Revision 14 as of 2015-01-12 01:00:43
Size: 6747
Comment: what you can work on, and not
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/589838

This guide will help you work on Mailman 2.x or ''most'' of the Mailman 3 suite (the core engine, [[DEV/Postorius Web Interface|Postorius]], mailman.client, and the bundler), all of which are on Launchpad. [[HyperKitty]] is on !GitHub; see HyperKitty docs for more info.

= Quick start =

You need bzr 2.0 or higher.

{{{
% bzr init-repo mailman
% cd mailman
% bzr branch lp:mailman
}}}
Line 3: Line 16:
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 [[http://sourceforge.net|SourceForge]] and then the CVS repository was converted to Subversion. This proved to be a successful transition, as Subversion provides many benefits over CVS.
Line 5: Line 17:
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: 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 14: Line 28:
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 16: Line 29:
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. 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 18: Line 31:
Using a dvcs is an eye-opening change, so I hope you give it a try. 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.
Line 21: Line 36:
We have chosen [[http://bazaar-vcs.org|Bazaar]] as the dvcs for Mailman. Bazaar is free software, released under the GPL.
Line 23: Line 37:
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 25: Line 39:
I highly recommend Bazaar version 0.16 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 27: Line 41:
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 30: Line 46:
[[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 34: Line 51:
== Read access ==
{{{#!wiki important
These branches are not yet available, but soon will be. Check back here; when this notice is removed the branches will be live.
== Accessing branches ==

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

{{{#!table
'''Branch'''

|| '''Description'''

|| '''Bazaar command'''
==
2.1

|| Stable release

|| `bzr branch lp:mailman/2.1`
==
3.0

|| Active development branch

|| `bzr branch lp:mailman`
Line 39: Line 75:
You can get read access to the official branches by simply doing this: == Write access ==
Line 41: Line 77:
{{{
% bzr branch http://bazaar.launchpad.net/~mailman-coders/mailman/<branch>
{{{#!wiki caution

Write access is generally not needed

Normally you don't need to be a member of mailman-coders or have write access to contribute. You publish your changes to an unofficial branch either on Launchpad or elsewhere and create a merge proposal to merge your branch.
Line 45: Line 84:
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 [[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 57: Line 89:
% bzr branch sftp://<you>@bazaar.launchpad.net/%7Emailman-coders/mailman/<branch> % bzr branch lp:mailman
Line 60: Line 92:
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.

You can read more about [[https://help.launchpad.net/FeatureHighlights/TeamBranches|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 [[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:

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

You may add your branch to the list of [[../MailmanBranches|unofficial branches]], but in order to get your changes accepted, you create a merge proposal for your branch.
Line 63: Line 107:
Join the mailman-checkins@python.org mailing list; this list will get branch change notifications just like it did with Subversion commits.
Join the [[http://mail.python.org/mailman/listinfo/mailman-checkins|mailman-checkins@python.org]] mailing list; this list will get branch change notifications just like it did with Subversion commits.

This guide will help you work on Mailman 2.x or most of the Mailman 3 suite (the core engine, Postorius, mailman.client, and the bundler), all of which are on Launchpad. HyperKitty is on GitHub; see HyperKitty docs for more info.

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.

Accessing branches

You can get a 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

Write access is generally not needed

Normally you don't need to be a member of mailman-coders or have write access to contribute. You publish your changes to an unofficial branch either on Launchpad or elsewhere and create a merge proposal to merge your branch.

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>

You may add your branch to the list of unofficial branches, but in order to get your changes accepted, you create a merge proposal for your branch.

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)