On Tue, 12 Jan 2010 11:19:09 +1300, martin f krafft <madduck@madduck.net> wrote: > 1. External database, which has the downside of not being > synchronisable with standard IMAP, like the rest of your mail > (assuming you use IMAP). Also, it's possible for mailstore and > database to get out of sync. Yes. This approach requires some external means of synchronizing the tags from one system to another. I don't understand what it would mean to have the mailstore and the database out of synch here. This approach doesn't have the tags in the mailstore by definition, right? > How about using pseudo-mails stored in Maildir and synchronised by > IMAP? E.g. every folder could have a subfolder .TAGS and if we find > a way to smartly pair messages between parent and subfolder, we'd > have a tag store alongside the mailstore it refers to, but without > the danger of leakage, and without having to rewrite messages. ... > Anyway, the idea is out now. Thoughts? There are a couple of problems that I don't see addressed at all with this approach. The first is that there's not a one-to-one mapping between messages and files in the mail store. (I'm CCed on a lot of list mail meaning that I have multiple files in my mail store for a single message.) Second, the only reason I would be interested in synchronizing mail between two systems is so that I could manipulate the tag data in multiple places, (that is, remove the "unread" tag whether on my network-disconnected laptop or via web-mail when away from my laptop). Using imap for synchronizing a file of tags within the mail store gives you no mechanism for doing any sort of conflict resolution, right? (Which I think in almost all cases is going to be quite trivial if there's a chance for a program to resolve it.) So it sounds to me like we're going to need *something* custom for doing the synchronization, (to handle modifications on both ends). At which point there's only disadvantages to keeping the data inside the mailstore, and there's also no disadvantage left to keeping the data inside a database. [*] [*] Though, I think a plain-text file with tags managed with something like git (and perhaps a custom merger) could save a lot of work. Or perhaps a plain-text journal of tag manipulations on either end that could be replayed on the other. -Carl