Developer Resources

If you're the kind of person who loves to get elbow deep in code, there are lots of opportunities to dig into Mailman. You may want to find a project on our Mailman TODO list or on the Mailman design notes wiki. Because Wikis are intended to be collaborative, you're free to contribute to this page in true Wiki fashion. You will also definitely want to subscribe to the mailman-developers mailing list.

SourceForge Project Page

Developers should start with the Mailman project at SourceForge. All patches and bugs should be submitted here so they won't get lost, although it is also requested that you inform the mailman-developers list about your submissions.

IRC

Some of the Mailman developers also occasionally hang out on the mailman IRC channel at freenode.net, though attendance has been spotty lately.

Future plans

Now that Mailman 2.1 has been released, I want to start thinking about what will be in Mailman 3.0. I intend to use the wiki for most design artifacts, and the mailman-developers mailing list for most discussions. The items that are high on my list (which is by no means complete or definitive) include:
  • Consolidated user database -- A user should have just one account for every mailing list they are members of at a site, and they should be able to manage all their options through this account. It should be possible to integrate these databases with a site's existing user management system to reduce duplication of data and effort.

  • Unified template system -- Mailman has a somewhat fractured and inconvenient templating system, using both a homegrown HTML object model in Python and coarse templates filled in with data at rendering time. It can be near impossible to change the look and feel of the administration pages, and a small change to the u/i of other pages requires updates in all supported languages. I want to use a templating system like ZPT or Quixote. Actually, I plan to generalize the web interface so that many different templating systems could be used, although we'll pick one to ship by default.

  • A Real Database -- Mailman uses an inefficient persistency system based on Python pickles, and every mailing list has its own pickled state. This has several disadvantages, including poor scalability, difficulty in doing cross-mailing list operations, and the virtual host limitation on list names. Mailman 3.0 will use a real database, perhaps based on ZODB or BerkeleyDB. Again, the goal is to generalize the interface to the backend database so that others can be used, but choose one and ship it by default.

  • Component Architecture -- Zope3's component architecture provides some very nice organizational tools and software development methodologies. We'll be adopting many of these for Mailman 3.0, which will allow us to do the kinds of templating and database generalization described above.
Stephan Richter has let an effort called ZMailman for integrating Zope and Mailman. I consider this a proof of concept of some of the ideas outlined above.