On Wed, 19 Sep 2007, Simon Wistow wrote: SW>1) The package based design SW>2) No pluggable backend
Wirebird suffers a bit from this, in that I haven't gotten enough into the finer points of building packages and such. (I keep hoping to add someone to the project who can fix that sort of thing for me. Along with an SQL-optimization type person, a Javascript person, a web designer... oh, and a pony.) SW>Email::Store was tied closely to Class::DBI which was best of breed at SW>the time. It would have been nice if it could have pluggable backends so SW>that you could have used whatever storage engine you wanted - SW>Class::DBI, DBIx::Class, Data::ObjectDriver even IMAP or a maildir. Best I've managed there is an SQL phrasebook. You can have any kind of storage engine you want as long as it's SQL (though really, it wouldn't be hard to make Wirebird::Resource replaceable. But as with the packages and pluggables, I've gone for "get it working" before "get it working *right*".) SW>3) Always keep a pristine copy of the message around Yes! I learned the value of that many years ago, and can pull up Phoenyx inbound messages from... well, from the days of 5 1/4 floppies, if I can blow enough dust out of the drives to read them and if they haven't bitrotted. It started out as self-defense for mailing-list maintenance ("UNSUSCIRBE ME NOW!!!111!!! I DIDN'T ASK FOR THIS! i'LL REPORT YOU AS A SPPAMER!!" "Um, here's your signup post, with full headers. Perhaps you're suggesting your account is compromised? I can help you notify your ISP if you'd like." Sometimes I miss the days when you could bash the technically illiterate because they didn't belong on the Internet...) In any case, it's been invaluable, especially as I experiment with converting email to HTML. (And worse, already-HTML email to some kind of standardized HTML.) SW>4) That said, convert everything to UTF-8 Yeah, I *really* need to work on this. MIME handling, too. SW>5) Watch your timezones. I worked for an airline, and quickly learned the benefit of having everything in GMT. (Epochal time would have been even better. Don't even get me started on situations when the aircraft could be operating on one "day" and the crew on another, or different crew members on different days, or... you get the idea. Or the beginnings of. You have to work with/for the FAA to appreciate the full horror. And then move to the banking industry to appreciate the relative sanity of FDIC/FSLIC regs.) Eventually Wirebird will display in whatever timezone the user prefers, but right now it's all GMT, and petty humans can just cope. (Or move to Greenwich, if it really bothers them.) SW>6) Think of conversations rather than emails Very much so, yes. The web forum thing enforces this (one thread per page, not counting long-thread pagination). SW>It might be worth architecting it as a series of conversations rather SW>than being email specific. That way later you could add in UseNet for a SW>Deja News style affair (ok so UseNet is very much like email but there I have a proto-NNTP server (which works perfectly with XNews, not so much with less-compliant newsreaders, which is most of them. Make that "a pony who wants to develop an NNTP server"), because when all is said and done, I'd prefer to read things via a newsreader. (At one point, XNews was the only thing tying me to Windows on the desktop.) SW>are differences) and maybe even more exotic things like blog posts SW>(which let's face it, with comments, merely an email thread), IM SW>conversations or SMS. Yes, to Wirebird a blog is just a discussion group with higher restrictions on thread-starters ("blog posts") than on replies ("comments"). Slap a bloggish template on it and there's no difference. IM/SMS (and especially IRC) is still speculative; there's more of a cultural gap there than I think there is between web forum and mailing list. I've also threatened to make Wirebird a wiki, though I haven't yet decided if the thread-starter is the wiki page and replies are the discussion/comment threads, or if they're all wiki pages and the reply structure is the breadcrumb trail. I'm leaning toward the former, since wiki pages tend toward a less structured document tree. But that's down the road anyway. SW>So onto that (the forum/ml idea). I like the idea and it's something SW>I've toyed around with over the years - give the people who want forums SW>what they want and the people who want a mailing list what *they* want SW>and they can be blisfully ignorant of each other (Yahoo! Groups sort of SW>does this as far as I know). Sort of, other than their web interface is still amazingly difficult to use, far more like a mailing list archive than a even a "proper" web forum. Unless, of course, my suspicions are true and Y! keeps a special extra-awful web interface around JUST FOR ME and lets other people use one that actually works. But AFAICT there's no provision for tracking what you've already read, etc. SW>I'm interested to see your progress and design ideas. http://forum.wirebird.com/ is the theoretical home of Wirebird, though right now we're in the middle of changing hosting services (currently we're spread across a local ADSL server, a Dreamhost server, *and* whatever the heck the new hosting service is) and right now it's got the Phoenyx templates with a faked-up header to match the Phoenyx colors (www.wirebird.com has the proper colors), so it doesn't have the blog template in there. Changing servers got interrupted by a round of fall colds (you don't want me trying to fix templates while on decongestants) so the email side of things isn't actually up and running over there. (It'll accept mail (I think; it's a pretty new installation and I might not have it all set up right yet), but it'll just sit in the folder unless I get the daemon running over on that server.) http://forum.phoenyx.net/ is the in-use installation, though I think I'm the only one actually using it in web forum mode, and new-user registration is slightly (okay, very) awkward right now... it's kind of transitional between the old style and the newer "lazy" registration mode (which attempts to implement a sort of bloggish drive-by-commenting mode), and because we automatically converted the existing Phoenyx readership it's not really well tested. (In addition to moving servers, we're also trying to move house. And like I said, I keep hoping to add someone, or a lot of someones, to the project, because this is really huge for just one person. Just a *little* overcommitted here.) Need to pester my sysadmin (who is not-coincidentally my husband) to settle on a version-control package and install it so I can have a public repository. I tried putting the source in TWiki(!) but he didn't take the hint (he's overcommitted too, since his company just went to Linux on the desktop and he's dealing with Groupwise (yes, sympathy cards are in order). Of course, then I'm back to the overcommitment: before I let anybody else see the code, I'd like to clean the cruft left over from refactoring, and put in some better documentation, but as long as I'm the only one on the project, I don't have the time for it. Catch-22.