17-March 2009
I was setting up a GMail filter today and noticed something unique about the way the filters are designed: it’s impossible to create one filter that conflicts with another. This allows the user to not have to worry about the order of application of the filters. Beautiful!
This is mostly thanks to GMail’s use of labels instead of folders. Every other e-mail client that I’ve used: Mail.app, Eudora, Outlook, Zimbra, and Thunderbird, all (or need to have) a way to assign a priority to filters to specify which filter has the last say with your messages. For example, one filter might move a message to folder A, but if the message is also matched by a filter that moves messages to folder B, then the first filter’s action is undone. When filters move messages to folders, it becomes important which filter was applied last. Using labels instead of folders, each filter just adds to the message’s list of labels, so it does not matter which order they were applied in.
The rest of the actions, like “Forward it to:”, “Never send it to Spam”, “Mark as read”, “Archive it”, and “Star it” all have this same property; they can all be done without undoing the effects of the previously applied filter. The only action that kind of breaks this rule is “Delete it”, which gives some insight into GMail’s initial hesitation to allow users to delete messages when GMail first rolled out.