Some of the free software I’ve written has been part of some longer-term agenda, or even to cater to the needs of a company I work for; but some if it has been more personal and immediate. Writing a piece of software can be like scratching an itch: You’re missing functionality on a system or in an application you’re using, you find yourself repeating some tedious manual procedure, and at some point you just say “Fuck it, I’ll just automate this myself, and do it right once and for all”. And then you spend a days, and weeks (and maybe months) working out all the corner cases, improving performance, adding feature you don’t need at all and you think are totally useless, but other users insist on having… so it takes on a life of its own.

My extensions for the Thunderbird email client are the two most prominent examples of this scratch-your-own-itch kind of project. I’m a heavy user of email - with periods in my life in which I received dozens of messages a day. I carefully auto-filter my email, trying to make sure I don’t leave anything intended for me, or important to me unread. Now, Thunderbird may not be the best mail client out there in many respects; and can certainly be horrible when it comes to internal project governance - but, it’s been my email client for my entire adult life. Not long after I first got an email address as a teenager, I was already using Netscape (which had a browser and a mail client combined) in the old days and the habit stuck. Also, Thunderbird is multi-platform, relatively popular, based on a layout engine with pretty good support for Right-to-Left languages (I speak Hebrew), and - most importantly - it was very extension-friendly.

BiDi Mail UI - BiDirectional language UI and other ehhancement

One extension was an initiative that two different people started simultaneously: Myself and Asaf Romano were both frustrated by how Thunderbird was not exposing GUI for setting the direction of email messages you were reading - so that we were reading Hebrew email laid out the wrong way. Actually, there was an earlier extension which started addressing this problem, but most of the functionality was missing. So, both of us started improving it, and at some point we noticed each other’s work, joined forces and merged our code. After that we added more complex features: Direction auto-detection, per-paragraph direction setting, correction of Mozilla’s charset detection when it misses on right-to-left languages, etc. We found volunteers to help us translate the extension’s UI into Arabic, Farsi and Urdu - and while Thunderbird’s user base among those language community is small, I’m still proud of having published some software usable for speakers of these languages in particular.

Remove Duplicate Messages

Don’t you get annoyed when, by mistake, you have a bunch of emails re-sent to you more than once? Or copy a folder with messages back into a folder which already has some of them? And then you have to pick them out one by one and delete? Well, I do. Now, there was already an extension for removing duplicates, but alas - its license didn’t allow for publishing modifications; and I needed some filtering feature it was lacking… So I had to blind-rewrite the whole damn thing! Luckily, I also made it a lot faster in the process, made it somehow more robust, and added features beyond what I myself needed; so the rewrite gained in popularity, eventually surpassing the original. I tried getting in touch with the original extensions author, but he could not be reached, and eventually did not make it pas the “great purge” of extensions for Thunderbird 68.

This extension became an addons.mozilla.org recommended item for the message reading category, and by now has had over 100,000 users or so… my most popular piece of software to date.