[Patch] [long] Reply-To munging: stop the madness
And by "the madness", I mean the fact that I've seen more list traffic devoted to reply-to munging in the past year than to any other single subject. That's just silly; but Reply-To flamewars seem to break out every three months or so on every list I'm subscribed to. It's a tragic waste of bandwidth. It seems to me that the obvious way to make everyone happy is to make the presence of "Reply-To: list" headers a per-subscriber option. I have implemented something simple that achieves this goal in a fairly icky way; patch and explanation below. However, the main purpose of this message is to suggest that in some future Mailman release, "Reply-To: list" be a subscriber-centric option rather than a list-centric one. --- The patch below permits a list's accept_these_nonmembers attribute to contain entries of the form "^+listname", which causes Mailman to assume, for post-moderation purposes, that all subscribers to "listname" are also subscribed to the list being managed. For example, if list A's accept_these_nonmembers contains ^+B, then all subscribers to B will be allowed to post to A. This permits the following (suboptimal) solution to the Reply-To munging controversy: For each list L for which L.reply_goes_to_list="This list", create a second list L-no-reply-to with L-no-reply-to.reply_goes_to_list="Poster". Add L-no-reply-to to L's subscriber list. Add ^+L-no-reply-to to L.accept_these_nonmembers. Add ^+L to L-no-reply-to.accept_these_nonmembers. Now, anyone who doesn't want to get Reply-To headers subscribes to L-no-reply-to instead of L. Everyone still posts to L, however, and all traffic posted to L appears on both lists. Due to the ^+ options, anyone subscribed to either list can post to L and have their posts picked up by L-no-reply-to. (Of course, we could have allowed nonsubscribers to post to both lists, but no one on the particular list for which I produced these patches wanted to do that, due to spam problems.) This is obviously a less-than-perfect solution, which is why I'm suggesting it be done differently in a future release. I'm willing to look into implementing Reply-To as a subscriber option, but I may not have time to do so. Here are the patches, to GUIBase.py and Moderate.py. The patch to GUIBase.py simply relaxes the input validation to allow the ^+listname entries; the Moderate.py patch implements the additional moderation logic. ===File /usr/local/mailman/GUIBase.py.diff================== --- /usr/local/mailman/src/mailman-2.1.1/Mailman/Gui/GUIBase.py 2002-08-14 18:02:27.000000000 -0600 +++ GUIBase.py 2003-04-21 07:16:55.000000000 -0600 @@ -73,10 +73,11 @@ # See if this is a context that accepts regular # expressions, and that the re is legal if wtype == mm_cfg.EmailListEx and addr.startswith('^'): - try: - re.compile(addr) - except re.error: - raise ValueError + if not addr.startswith('^+'): + try: + re.compile(addr) + except re.error: + raise ValueError else: raise addrs.append(addr) ============================================================ ===File /usr/local/mailman/Moderate.py.diff================= --- /usr/local/mailman/src/mailman-2.1.1/Mailman/Handlers/Moderate.py 2002-12-30 20:28:41.000000000 -0700 +++ Moderate.py 2003-04-21 09:43:18.000000000 -0600 @@ -16,7 +16,6 @@ """Posting moderation filter. """ - import re from email.MIMEMessage import MIMEMessage from email.MIMEText import MIMEText @@ -28,6 +27,7 @@ from Mailman.i18n import _ from Mailman.Handlers import Hold from Mailman.Logging.Syslog import syslog +import Mailman.MailList @@ -115,14 +115,27 @@ def matches_p(sender, nonmembers): - # First strip out all the regular expressions - plainaddrs = [addr for addr in nonmembers if not addr.startswith('^')] + # First do list inclusions. + incAdd = [] + for linc in nonmembers: + if linc.startswith('^+'): + otherListName = linc[2:] + try: + otherList = Mailman.MailList.MailList(otherListName,lock=0) + otherMembers = otherList.getMembers() + incAdd = incAdd + otherMembers + except: + syslog.write("Moderator","Could not process list inclusion %s"%otherListName) + pass + nonmembers = nonmembers+incAdd + # Strip out all the regular expressions and list inclusions + plainaddrs = [addr for addr in nonmembers if not addr.startswith('^')] addrdict = Utils.List2Dict(plainaddrs, foldcase=1) if addrdict.has_key(sender): return 1 # Now do the regular expression matches for are in nonmembers: - if are.startswith('^'): + if are.startswith('^') and not are.startswith('^+'): try: cre = re.compile(are, re.IGNORECASE) except re.error: ============================================================ Cheers, -- Joe Knapka
On Monday 21 April 2003 9:18 pm, Joseph Knapka wrote:
However, the main purpose of this message is to suggest that in some future Mailman release, "Reply-To: list" be a subscriber-centric option rather than a list-centric one.
Amen.
--
Democracy is two wolves and a lamb voting on what to have for lunch. Liberty is a well-armed lamb contesting the vote.
On Mon, Apr 21, 2003 at 07:18:04PM -0600, Joseph Knapka wrote:
And by "the madness", I mean the fact that I've seen more list traffic devoted to reply-to munging in the past year than to any other single subject. That's just silly; but Reply-To flamewars seem to break out every three months or so on every list I'm subscribed to. It's a tragic waste of bandwidth. It seems to me that the obvious way to make everyone happy is to make the presence of "Reply-To: list" headers a per-subscriber option. I
Amen.
I spent more hours than I care to admit writing a very extensive patch that did that in many details. Unfortunately, it was a bit too complex for Barry's comfort when he thought the release was close (it ended up taking another 9 months or so, but neither of us knew that back then)
I have to admit that after having seen all that personal time ultimately go to waste, I kind of lost interest. (incidently, I was also mainly writing this for the benefit of lists.sourceforge.net, but considering that 1) the site manager ultimately caved in to the few reply-to whiners 2) I was layed off a few months after that anyway, this is not something I really feel like touching anymore)
have implemented something simple that achieves this goal in a fairly icky way; patch and explanation below. However, the main purpose of this message is to suggest that in some future Mailman release, "Reply-To: list" be a subscriber-centric option rather than a list-centric one.
The patch below permits a list's accept_these_nonmembers attribute to contain entries of the form "^+listname", which causes Mailman to assume, for post-moderation purposes, that all subscribers to "listname" are also subscribed to the list being managed. For example, if list A's accept_these_nonmembers contains ^+B, then all subscribers to B will be allowed to post to A. This permits the following (suboptimal) solution to the Reply-To munging controversy:
For each list L for which L.reply_goes_to_list="This list", create a second list L-no-reply-to with L-no-reply-to.reply_goes_to_list="Poster".
Add L-no-reply-to to L's subscriber list.
Add ^+L-no-reply-to to L.accept_these_nonmembers.
Add ^+L to L-no-reply-to.accept_these_nonmembers.
Now, anyone who doesn't want to get Reply-To headers subscribes to L-no-reply-to instead of L. Everyone still posts to L, however, and all traffic posted to L appears on both lists. Due to the ^+ options, anyone subscribed to either list can post to L and have their posts picked up by L-no-reply-to. (Of course, we could have allowed nonsubscribers to post to both lists, but no one on the particular list for which I produced these patches wanted to do that, due to spam problems.)
Mmmh, that's another way to do what I tried to do I guess. Not very transparent, but interesting...
This is obviously a less-than-perfect solution, which is why I'm suggesting it be done differently in a future release. I'm willing to look into implementing Reply-To as a subscriber option, but I may not have time to do so.
Let me save you some time: http://marc.merlins.org/tmp/replyto.diff.cvs The patch doesn't apply as is anymore since it's a year old, but you get the idea
But then again, this was a year ago, and even if some patch ever makes it in, it will be years before the next stable mailman comes out, admins upgrade to it, and this problem eventually goes away :(
Cheers, Marc
"A mouse is a device used to point at the xterm you want to type in" - A.S.R. Microsoft is to operating systems & security .... .... what McDonalds is to gourmet cooking Home page: http://marc.merlins.org/ | Finger marc_f@merlins.org for PGP key
On Tue, 2003-04-22 at 01:34, Marc MERLIN wrote:
But then again, this was a year ago, and even if some patch ever makes it in, it will be years before the next stable mailman comes out, admins upgrade to it, and this problem eventually goes away :(
Gawd, I hope not, but since I'm not actually paid to work on Mailman any more, who knows?
I do feel bad that Marc's hard work never made it in, and I've apologized to him for it. At some point, we'll look at this again and maybe there's a way to architect it to alleviate my concerns.
no-good-deed-goes-unpunished-ly y'rs, -Barry
On Tue, Apr 22, 2003 at 08:35:59AM -0400, Barry Warsaw wrote:
On Tue, 2003-04-22 at 01:34, Marc MERLIN wrote:
But then again, this was a year ago, and even if some patch ever makes it in, it will be years before the next stable mailman comes out, admins upgrade to it, and this problem eventually goes away :(
Gawd, I hope not, but since I'm not actually paid to work on Mailman any more, who knows?
Note, I didn't mean to imply that it'd take you years to get 2.3 out the door, but that + people upgrading probably will. Most people still run mailman 2.0
I do feel bad that Marc's hard work never made it in, and I've (...)
Sorry, that wasn't meant as a slam, I know you spent time looking at this and you tried to put it in. I was more trying to explain that it's a sore point for me and I was not really looking forward to working on it again (before someone asked me to update the patch for mm 2.1)
Marc
"A mouse is a device used to point at the xterm you want to type in" - A.S.R. Microsoft is to operating systems & security .... .... what McDonalds is to gourmet cooking Home page: http://marc.merlins.org/ | Finger marc_f@merlins.org for PGP key
On Mon, Apr 21, 2003 at 07:18:04PM -0600, Joseph Knapka wrote:
It seems to me that the obvious way to make everyone happy is to make the presence of "Reply-To: list" headers a per-subscriber option. I
It *is* a per-subscriber option. It's called "reply all".
Fume.
On Tue, 2003-04-22 at 17:52, Dan Mick wrote:
It *is* a per-subscriber option. It's called "reply all".
<blog>
I'm not sure if it is in the spirit of a typical software 'option' if you have to decide and choose 'reply all' every time. Usually 'option' means a setting you set and forget.
When cruising through my mail from various lists I inevitably forget to 'reply all' on lists where it is warranted and I end up sending a second time to the list in a separate email.
What is really needed is for the user to be able to set on a folder by folder (or even sender by sender) default reply behavior in the *mailer*. But this is no different than allowing them to specify it on the list server really, I suppose.
Also, 'reply all' can be very annoying if the original message has a bunch of other cc addys going on.
<!-- warning: blog continues -->
It comes back to an adage that formed in my mind years ago after dealing with certain project managers and clients:
By definition, there are no simple solutions to complex problems.
Complexity must be unraveled on some level, either in code, or by
the user and the unraveling is never simple because the problem is
complex.
Which leads to the corollary:
Complex code solutions will never be satisfactory to the user if the
user doesn't take the time to comprehend the internal complexity to
a meaningful degree (at least at the user interface level) so that
they work with the grain of the solution instead of against it.
The last hurdle above makes some complex problems pointless to tackle at all for tools of mass use because they will rarely be useful to the user because they will never see the value of studying the complexity enough to grok proper use of the 'solution'.
So it comes full circle in that complex people will always write complex code for themselves and other complex people and simple people will simply have to sink (drown in the confusion of options) or swim (take the time to understand the options and the effect they have) or deal with a simpler version that has fewer options.
I really thinkg that the 'tech stock bubble' popped because marketing departments (and sometimes even developers) were promising simple solutions to complex problems and there wasn't enough real money to engineer complex solutions in the simple time/budget frames promised to venture capitalists and consumers.
People will always have to understand tools to use them effectively. And complex solutions to complex problems will always cost more in time/money than simple solutions. There is no way around it.
I personally prefer lists that always reply to the list. This is because lists interface with all types of people and I refuse to force education on anyone, not out of high ideal, but out of exasperation.
So I 'vote' for the user pressing the 'Delete' button and creating filters for dealing with too much traffic over using 'Reply-All' button judiciously to limit traffic on the post end. Not to mention the fact that by using 'reply' instead of 'reply all' you are basically deciding for the entire list membership whether your response is useful to them or not. I prefer people sling it out there and let the reader decide if it's useful.
</blog>
Ok, I feel better now. :)
Marty
See, this is exactly the sort of traffic I wish to see the end of :-) Can't... resist... posting... ...urgh... followup....
Marty Galyean <marty@penguinarts.com> writes:
On Tue, 2003-04-22 at 17:52, Dan Mick wrote:
It *is* a per-subscriber option. It's called "reply all".
<blog>
I'm not sure if it is in the spirit of a typical software 'option' if you have to decide and choose 'reply all' every time. Usually 'option' means a setting you set and forget.
When cruising through my mail from various lists I inevitably forget to 'reply all' on lists where it is warranted and I end up sending a second time to the list in a separate email.
Hmm, I just did that with this message :-) Why doesn't this list munge Reply-To???? You guys must be a bunch of real losers!!!!!!!!!!!
What is really needed is for the user to be able to set on a folder by folder (or even sender by sender) default reply behavior in the *mailer*. But this is no different than allowing them to specify it on the list server really, I suppose.
Yes, it is. Because expecting this functionality in a client means waiting for every client to implement it; people choose their email client for many reasons besides the useful array of "reply" functions they display. Whereas implementing the option at the list server means that everyone gets the benefit of the fuctionality, regardless of what client they use. The list server is the most potent lever for addressing this particular issue - and note that IMO, the *only* reason to address the reply-to-munging issue *at all* is to make the damned flamewars go away. So doing the simplest thing that can possibly work, as opposed to the most elegant or most useful, is called for. (Obviously, there are other listservers in the world besides Mailman, but there are far fewer of them than there are email clients. And Mailman seems to be well on the way to dominating the market at this point; I think every list I'm subscribed to uses it. But that's a totally subjective impression, and therefore probably worth what you're paying for it, or maybe a smidgen less.)
[scissors of brevity]
Cheers,
-- Joe Knapka
Marty Galyean <marty@penguinarts.com> wrote:
On Tue, 2003-04-22 at 17:52, Dan Mick wrote:
It *is* a per-subscriber option. It's called "reply all".
<blog>
I'm not sure if it is in the spirit of a typical software 'option' if you have to decide and choose 'reply all' every time. Usually 'option' means a setting you set and forget.
When cruising through my mail from various lists I inevitably forget to 'reply all' on lists where it is warranted and I end up sending a second time to the list in a separate email.
I think there's a pretty straightforward way in which this problem could be solved, by using a little robot for managing all you Mailman list subscriptions.
I've wiki'd this idea up at http://wiki.dotgnu.org/GroupsBot
Greetings, Norbert.
-- Founder & Steering Committee member of http://gnu.org/projects/dotgnu/ Free Software Business Strategy Guide ---> http://FreeStrategy.info Norbert Bollow, Weidlistr.18, CH-8624 Gruet (near Zurich, Switzerland) Tel +41 1 972 20 59 Fax +41 1 972 20 69 http://norbert.ch
participants (7)
-
Barry Warsaw -
Dan Mick -
Joseph Knapka -
Marc MERLIN -
Marty Galyean -
Norbert Bollow -
Phil Barnett