GNU Mailman 3.0 is out !

by
in internet on (#8231)
story image(Finally) after years of development, Mailman has reached its third release.

It's a big change, thoroughly explained in this (not so) old article by Barry Warsaw, the lead developer behind Mailman 3.0. In short, Mailman has been organized as a suite of 5 subprojects, each in charge of a different aspect:
  • Mailman Core - the core delivery engine which accepts messages, providers moderation and processing of the messages, and delivers messages to mailing list member recipients. It exposes its functionality to other components over a private, administrative REST API.
  • Postorius - A new Django-based web user interface for end users and list administrators.
  • HyperKitty - A new Django-based web archiver.
  • mailman.client - The official Python 2 and 3 bindings to the administrative REST API. Used by Postorius and HyperKitty, this provides a convenient, object-based API for programmatic access to the Core.
  • mailman-bundler - A convenient package for building out the entire Mailman suite.
Among the new shiny things:
What's new about Mailman 3? Well, lots! Some highlights include:
  • Backed by a relational database;
  • True support for multiple domains, with no cross-domain mailing list naming restrictions;
  • One user account to manage all your subscriptions on a site;
  • The core's functionality exposed through an administrative REST+JSON API;
  • All passwords hashed by default, and no monthly password reminders!
  • Users can post to lists via the web interface;
  • Built-in archive searching!
and more. Tons more.
Note that it is not recommended to update your lists from 2.x to 3.0 zero yet as it may not go smoothly. The update feature is planned for 3.1 but if you've got some test machine, feel free to play around with the update and report bugs.

[submitter's note]: some details in the announcements seemed a bit weird to me, notable, I quote, "The core requires Python 3.4 while Postorius and HyperKitty require Python 2.7.". Why use two different (and maybe incompatible) versions of python ? Another one is about the API numbering scheme. Well, we'll see how it goes ...
Fatal Error - sql [select reason, count(reason) as reason_count, value from comment_vote where comment_id = ? group by reason order by reason_count desc] arg [264753] msg [SQLSTATE[42000]: Syntax error or access violation: 1055 Expression #3 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'pipedot.comment_vote.value' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by] - Pipedot
Fatal Error
sql [select reason, count(reason) as reason_count, value from comment_vote where comment_id = ? group by reason order by reason_count desc] arg [264753] msg [SQLSTATE[42000]: Syntax error or access violation: 1055 Expression #3 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'pipedot.comment_vote.value' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by]