Hello,
I've implemented an experimental mail bot to archive NM conversations.
It contains mad science.
The idea is that you Cc all your mails to:
"archive-$SOMETHING@nm.debian.org"
and then in https://nm.debian.org/public/process/$SOMETHING you get a
"download mail archive" link. In the process page you can now also see
the archive email address you can use.
$SOMETHING can be:
- the uid of the applicant (if it has already been chosen):
archive-enrico@nm.d.o;
- the email of the applicant, with = instead of @:
archive-enrico=enricozini.org@nm.d.o;
- or even *nothing*: archive@nm.d.o; in that case, the archive
destination is inferred by looking at the email headers.
Practical consequences:
- If you do things right, you don't need to send an extra email with
the mailbox when approving an applicant. If you need to send extra
stuff like minechangelogs output, or IRC conversation transcripts, or
whatever, you can just send it to archive-$SOMETHING@nm.d.o and we
will find it.
- When assigning applicants to AMs, we can now send only one automated
email without a manual followup, since the assignment email now
contains the URL to download the mailbox.
- We can reassign applicants with inactive AMs without waiting for the
inactive AM (or more likely the applicant) to send the partial
mailbox.
- We can have a look at the current conversation before pinging
processes that look stuck.
- We should now avoid problems with mail clients generating broken
mailboxes, or mail software corrupting them during transfer.
Usage examples:
[for example's sake, let's pretend I'm the applicant. But do remember
to replace my information with that of your applicants, obviously]
* Conversation with an applicant
Your address and the applicant's address are in the headers, that is
enough to find your process record, so you can just Cc archive@nm.d.o
* Conversation with an advocate or a comaintainer
The bot won't be able to know which applicant you are inquiring
about, so you need to cc archive-enrico@nm.d.o or
archive-enrico=enricozini.org@nm.d.o
* Mailing all your applicants
Going on vacation and letting all your applicants know?
You can send a single mail to all of them, and Cc archive@nm.d.o: the
mail will be archived in all their mailboxes.
* Pinging AMs
Suppose I (as FD) want to ping all AMs that look inactive, and have
that ping show up in every process mailbox.
I can send a single mail to all the AMs, Cc archive@nm.d.o, and it
will be stored in all the mailbox for all the applicants of all those
AMs.
* Archiving random mails, just for the records
Cc or bounce them to archive-enrico@nm.d.o or
archive-enrico=enricozini.org@nm.d.o
* Populating the archives with your existing mailbox
Ok, this feature is cool but wasn't there when you started with your
current applicant(s). How do you catch up?
Open your mailbox, select all messages, bounce them all to
archive-enrico@nm.d.o or archive-enrico=enricozini.org@nm.d.o
Questions that may be Frequently Asked in the future:
Q: what if my applicant isn't Cc-ing the archive address in their
replies?
A: consider it a T&S test: it's quite important to keep interested
parties in Cc during online email conversations.
Q: anyone can send mails to the archive! Doesn't it mean that evil
people could send rubbish, too?
A: sure, and they could always send forged emails directly to your AM,
pretending to be you.
DO sign your emails :)
Q: can I add information after a process is finished?
A: mail is only archived for "active" processes.
A process starts as active, and is marked inactive during the
nightly maintenance, when its state is DONE or CANCELED. An
application gets state DONE once the LDAP account is created, so
mail can still be archived until the process is really done.
I plan to let archival happen until after a month since the last
process activity (so that, for example, followups can be archived
for CANCELLED applications) regardless of the active/inactive state,
but that's not implemnted yet.
Q: where are the archives stored?
A: on nm.debian.org, and they are not world readable.
Q: where's the code?
A: http://anonscm.debian.org/gitweb/?p=nm/nm2.git;a=summary
together with the rest of the nm.debian.org codebase.
Ciao,
Enrico
--
GPG ky: 4096R/E7AD5568 2009-05-08 Enrico Zini <enrico@enricozini.org>
Attachment:
signature.asc
Description: Digital signature