Here's a list of problems I ran into:
1) Sometimes, when moving messages, usually in immediate response to
downloading new mail, some mail items will swap headers and bodies with
other items. Other times, some messages will completely dissapear.
Basically, random message corruption occurs, and it seems to be
completely irregular, leading me to believe it's some sort of race
condition. Since I have no understanding of the implied semantics of
moveMessages or mail arrival events, I have no event where to even
start looking into this issue.
2) There's no progmatic interface to finding when a messages has
arrived in an inbox and successfully passed all filters. This is a big
problem since the spam filter only runs after a Biff action finishes
downloading *all* new messages. If a large message download starts
(say, you have 60 new messages after being out of town for a few days)
and is cancelled, the spam filter never runs, which means from the
perspective of a plugin, no new mail has arrived.
3) There's a filterPlugin object, but no interface exists yet for a
client to use it (which is fine and perfectly understandable), and
furthermore, it doesn't work like the built in manual filter rules. The
manual rules are run per each message, between when it is downloaded
and when it arrives in an inbox, and works by rewriting the uri the
message is to be given. This also means it doesn't have to wait for a
whole corpus to download before it can be run. If the bayesian filter
could be made to work like this, which a notification interface when it
finished with its classifaction, it would solve a lot of problems.
There are other issues too, but I can easily fix them once I get XPCOM
working.
I also understand that Thunderbird 2.0 might change the platform
completely, which will probably invalidate a lot of my work. That's
fine, it doesn't bother me too much, though if possible I'd like to at
least release a decent version of this extension before that happens.
The download link is available at the extension's homepage (listed
below). There's also a less technical discussion of some of the above
listed issues.