Page MenuHomePhabricator

Make mail stamps routable on the server, include transaction information, and replace mail tags
Open, NormalPublic

Description

T13053/T10448 introduced "mail stamps", which are more expressive labels for mail to support client routing. They can also be inlined into the mail body for client routing with Gmail.

Currently, stamps coexist with the older (and significantly less expressive) "mail tags" system, and you can't write rules against stamps in Phabricator itself, only against tags.

I'd like to replace Phabricator-side routing of mail with a stamps-based system and remove the current SettingsEmail Preferences UI. This probably isn't very difficult technically, but building a UI to let users define rules is likely a significant amount of work, since it should ideally be a big fancy Javascript thing that lets users define rules with a lot of logic, accommodates "global" and "personal" rules in a reasonable way, and doesn't require any PhDs to configure the common 90% of things that users are most interested in configuring.

Outstanding use cases for this include:

  • (T4654) Rules like "when I'm mentioned: send me an email and stop processing rules".
  • (T10448) Original request: ignore all (some? This was a little vague) mail from Owners packages.
  • (T11363) Ignore revisions being updated.
  • Also, ignore revisions being closed.
  • (PHI175) Ignore resigns.
  • (PHI54) Maybe ignore revision mail where you aren't a reviewer?

Stamps also currently do not include information about the actions that the mail describes, only stateful information about the object. This is likely not difficult but is a fair amount of legwork. I also want to add some UI around stamps first so we can automatically generate a list of applicable transactions and the tags they generate, to make sure I'm not missing anything when I implement this stuff as much as anything else.

Event Timeline

epriestley triaged this task as Normal priority.
epriestley mentioned this in Unknown Object (Phriction Wiki Document).Feb 10 2018, 1:02 AM
hskiba added a subscriber: hskiba.Feb 12 2018, 2:10 PM

Will stamps be applied for all email notifications and reasons for the recipient to receive them, so as to fix T6297: Maniphest email notification doesn't say why I'm receiving it?

No. Mail stamps are not intended to answer "Why am I receiving this mail?" in the general case (which lives in T9412 now, I think).

For example, you might receive a mail notification about a revision because:

  • the revision affected /barn/animals/cow/moo.txt;
  • the Owners package O123 Cow Crew owns /barn/animals/cow with "Weak Dominion" and no more specific package owns moo.txt, and has an autoreview rule;
  • one of the owners for the package is the project #farmhands;
  • you are a member of that project.

A mail stamp can't express this. It would look something like package(O123, project(#farmhands, member(@alice)))), perhaps, which would neither answer the question (at least, for a non-expert user), nor be particularly routable with client rules, nor be very amenable to server-side routing.

I suspect the /mail/view/<message-id>/ page will eventually have a more detailed UI element which explains why everyone who received the mail was part of the recipient list, but this is moderately complicated to build and I don't currently believe that it's a very important feature. (A good chunk of T9412 is users just forgetting that they used 'Watch Project" -- which isn't great, but which I think isn't a huge concern.)

@epriestley T7468 was marked as duplicate of T10448, which was resolved with a pointer to this task. Does that mean T7468: No way to disable web notifications for token awards is resolved and/or will be resolved by this task? If not, should it be re-opened?