aboutsummaryrefslogtreecommitdiffstats
path: root/admin/www/jwzrebuttal.html
blob: 78d92085088127ca7c52b69c38a013d6bd97f361 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
                      "http://www.w3.org/TR/html4/loose.dtd" >
<html>
<!-- THIS PAGE IS AUTOMATICALLY GENERATED.  DO NOT EDIT. -->
<!-- Thu Feb 10 08:31:48 2005 -->
<!-- USING HT2HTML 2.0 -->
<!-- SEE http://ht2html.sf.net -->
<!-- User-specified headers:
Title: Mailman Considered Beneficial

-->

<head>
<title>Mailman Considered Beneficial</title>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" >
<meta name="generator" content="HT2HTML/2.0" >
<style type="text/css">
body { margin: 0px; }
</style>
</head>
<body bgcolor="#ffffff" text="#000000"
      marginwidth="0" marginheight="0"
      link="#0000bb"  vlink="#551a8b"
      alink="#ff0000">
<!-- start of page table -->
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<!-- start of banner row -->
<tr>
<!-- start of corner cells -->
<td width="150" valign="middle" bgcolor="white" class="corner">

<center>
    <a href="./index.html">
    <img border=0 src="./images/logo-70.jpg"></a></center> </td>
<td width="15" bgcolor="#eecfa1">&nbsp;&nbsp;</td><!--spacer-->
<!-- end of corner cells -->
<!-- start of banner -->
<td width="90%" bgcolor="#eecfa1" class="banner">
<!-- start of site links table -->
<table width="100%" border="0"
       CELLSPACING=0 CELLPADDING=0
       bgcolor="#ffffff">
<tr>
    <td bgcolor="#eecfa1">
<a href="./index.html">Home</a>
    </td>
    <td bgcolor="#eecfa1">
<a href="./security.html">Security</a>
    </td>
    <td bgcolor="#eecfa1">
<a href="./docs.html">Documentation</a>
    </td>
    <td bgcolor="#eecfa1">
<a href="./lists.html">Mailing lists</a>
    </td>
</tr><tr>
    <td bgcolor="#eecfa1">
&nbsp;
    </td>
    <td bgcolor="#eecfa1">
<a href="./help.html">Help</a>
    </td>
    <td bgcolor="#eecfa1">
<a href="./download.html">Download</a>
    </td>
    <td bgcolor="#eecfa1">
<a href="./devs.html">Developers</a>
    </td>
</tr>
</table><!-- end of site links table -->

</td><!-- end of banner -->
</tr><!-- end of banner row -->
<tr><!-- start of sidebar/body row -->
<!-- start of sidebar cells -->
<td width="150" valign="top" bgcolor="#eecfa1" class="sidebar">
<!-- start of sidebar table -->
<table width="100%" border="0" cellspacing="0" cellpadding="3"
       bgcolor="#ffffff">
<tr><td bgcolor="#36648b"><b><font color="#ffffff">
Overview
</font></b></td></tr>
<tr><td bgcolor="#eecfa1">
<a href="index.html">Home</a>
</td></tr>
<tr><td bgcolor="#eecfa1">
<a href="security.html"><b>Security</b></li>
</td></tr>
<tr><td bgcolor="#eecfa1">
<a href="features.html">Features</a>
</td></tr>
<tr><td bgcolor="#eecfa1">
<a href="i18n.html">Internationalization</a>
</td></tr>
<tr><td bgcolor="#eecfa1">
<a href="otherstuff.html">Rants, Papers, and Logos</a>
</td></tr>
<tr><td bgcolor="#eecfa1">
<a href="inthenews.html">Mailman in Use</a>
</td></tr>
<tr><td bgcolor="#eecfa1">
<a href="prev.html">Previous Releases</a>
</td></tr>
<tr><td bgcolor="#eecfa1">
<a href="bugs.html">Bugs and Patches</a>
</td></tr>
<tr><td bgcolor="#eecfa1">
<a href="mirrors.html">Mirrors</a>
</td></tr>
<tr><td bgcolor="#eecfa1">&nbsp;</td></tr>
<tr><td bgcolor="#36648b"><b><font color="#ffffff">
Rants
</font></b></td></tr>
<tr><td bgcolor="#eecfa1">
<b>Mailman Considered Beneficial</b>
</td></tr>
<tr><td bgcolor="#eecfa1">&nbsp;</td></tr>
<tr><td bgcolor="#36648b"><b><font color="#ffffff">
Exits
</font></b></td></tr>
<tr><td bgcolor="#eecfa1">
<a href="http://sf.net/projects/mailman">SF Project Page</a>
</td></tr>
<tr><td bgcolor="#eecfa1">
<a href="lists.html">Discussion Lists</a>
</td></tr>
<tr><td bgcolor="#eecfa1">
<a href="http://www.python.org/">Python</a>
</td></tr>
<tr><td bgcolor="#eecfa1">
<a href="http://www.gnu.org/">GNU</a>
</td></tr>
<tr><td bgcolor="#eecfa1">
<a href="http://barry.warsaw.us/">Barry Warsaw</a>
</td></tr>
<tr><td bgcolor="#eecfa1">&nbsp;</td></tr>
<tr><td bgcolor="#36648b"><b><font color="#ffffff">
Email Us
</font></b></td></tr>
<tr><td bgcolor="#eecfa1">
<a href="mailto:barry@python.org">Barry Warsaw</a>
</td></tr>
<tr><td bgcolor="#eecfa1">
&nbsp;
</td></tr>
<tr><td bgcolor="#eecfa1">
<a href="http://www.python.org/"><img border=0
                          src="./images/PythonPoweredSmall.png"
                          ></a>&nbsp;<a href="http://sourceforge.net"><img 
                          src="http://sourceforge.net/sflogo.php?group_id=103"
                          width="88" height="31" border="0"
                          alt="SourceForge Logo"></a>
</td></tr>
<tr><td bgcolor="#eecfa1">
&nbsp;
</td></tr>
<tr><td bgcolor="#eecfa1">
&copy; 1998-2005
Free Software Foundation, Inc.  Verbatim copying and distribution of this
entire article is permitted in any medium, provided this notice is preserved.

</td></tr>
</table><!-- end of sidebar table -->

</td>
<td width="15">&nbsp;&nbsp;</td><!--spacer-->
<!-- end of sidebar cell -->
<!-- start of body cell -->
<td valign="top" width="90%" class="body"><br>
<h3>Mailman Considered Beneficial</h3>

Jamie Zawinski posted an article in 2002 titled <a
href="http://www.jwz.org/doc/mailman.html">Mailman Considered
Harmful</a>.  I know Jamie and respect him, but I respectfully
disagree with his assessment.  You'd be worried if I didn't, eh?

<p>To give Jamie the benefit of the doubt, I believe he was reviewing
older versions of the Mailman software, where some of his complaints
may have been appropriate.  Here is a rebuttal to his
article, based on
<a href="http://sourceforge.net/project/showfiles.php?group_id=103">the
latest stable release of Mailman 2.1</a>, unless otherwise specified.

<h4>Mailman is a pain in the ass for the end user.</h4>

Jamie must have reviewed a pre-2.0 version, because Mailman releases
since 2.0 have implemented the "sane" recipe.  Indeed it would be
insane not to.  I may be mad, but I'm not insane.  In fact, in Mailman
2.1, there are several ways to get unsubscribed, any one of which will
work just fine:

<ul>
    <li>Send a message to <em>list</em>-leave or <em>list</em>-unsubscribe and
        reply to the confirmation message.  It doesn't matter at all what
        is in your original message.
    <li>Mail "unsubscribe" to the <em>list</em>-request address and
        reply to the confirmation message.
    <li>Use a mail reader that understands the standard
        <a href="http://www.faqs.org/rfcs/rfc2369.html">RFC 2369</a>
        List-Unsubscribe header, then just click on that header and
        reply to the confirmation message.
    <li>Visit your <em>user's options page</em>, click on the
        Unsubscribe button and reply to the confirmation message.
        Note that with Mailman 2.1, mailing lists can be personalized,
        which means the url to your options page can be included in
        the footer of every message you get from the list (digests
        currently excluded).
</ul>

What could be simpler?

<h4>Mailman's password mechanism provides zero security.</h4>

I disagree with Jamie about the utility of Mailman's passwords because
in general they do prevent malicious people from changing your
subscription options out from under you.  But I will also concede that
he has a point about password management by naive users, so you should
know that it is trivial to disable monthly password reminders, either
on a list-wide basis or on a per-user basis.

<p>Monthly password reminders serve additional purposes though: they
remind you of lists you are on which you may have forgotten about,
they remind you about how to get unsubscribed from such lists, and
they offer an opportunity for lists to cull their membership of
non-functioning addresses.  In Mailman 2.1, the monthly reminders can
be sent out with <a
href="http://cr.yp.to/proto/verp.txt">VERP</a>-like envelopes, Mailman
can unambiguously parse any bounces from dead addresses, and can use
this information to automatically disable or delete disappeared
members.

<p>When you subscribe to a mailing list, the password is completely
optional -- omit it and Mailman generates a random one for you.  You
generally don't need to know your password except if you want to
change your delivery options, e.g. to temporarily disable delivery
while you're on vacation, or to switch to digest delivery, subscribe
to topics, etc.  For simple membership management (subscribing and
unsubscribing), you never need to know it.  The user options
<b>are</b> useful.

<h4>Web-based subscriptions</h4>

If all you care about is web-based subscriptions, then yes it's pretty
easy to set up a simple CGI to do this.  It's just as easy to do with
Mailman as any other mailing list software.  Note though, that
Mailman's web interface is much more sophisticated because you can do
nearly all the list configuration through the web.  Okay, this is of
primary benefit for list owners rather than list members, and Jamie's
rant is focused on the member experience.  Note though, that Mailman's
subscription page also gives the user the option of selecting a
default language (for multilingual lists) and their preferred delivery
mechanism (digests or regular delivery).

</td><!-- end of body cell -->
</tr><!-- end of sidebar/body row -->
</table><!-- end of page table -->
</body></html>