Ferro

23 Aug 2013

I released Ferro today. It is my second extension to Google Chrome. Check it out at getferro.com.

I started work on it soon after I wrote my first extension in March of 2011. I read a couple books on Javascript and soon after discovered Coffeescript, which I greatly prefer. At the same time, I found Backbone and decided to try using it for the options page. In hindsight, it would have been useful for the main popup UI as well. Almost exactly a year ago I resigned from the job I had had since college, leaving me with much more time to work on Ferro and my company, Orglist (sign up for the beta list at orglist.org). Another factor that aided development was Chrome’s release of the keyboard shortcut API, which allowed me to remove the content scripts. I previously used content scripts in every page to listen for keyboard shortcuts and render the UI, which was particularly complicated because content scripts have no direct access to the extension’s data and Chrome API.

There are a couple things in Ferro that are novel, at least in my experience. The first is that some commands are allowed to appear in the first section of the launcher. In Ferro, there are commands that can take the current tab as an argument, such as “Pin”, and commands that don’t take an argument, such as “Reload All Tabs.” The second possibly-novel aspect is the manner in which donations work. The user is presented with the amount of their donation left after credit card processing fees, incentivising the Bitcoin donation option. There are also two lists of previous donations: a full list at donate.getferro.com, which is sorted by amount, incentivising large donations, and the most recent five donations, located on the bottom-right of the extension options page, incentivising frequent donations. The donor name field in the latter in particular could be used as an ad channel, if someone’s target audience was efficiency experts who opened their Ferro options page often to view their saved sessions or the command list. But I doubt I’ll be receiving many donations, and if it were to ever get out of hand I could always raise the minimum donation and/or manually approve donation records before they were displayed.

The code is fairly rough, since it was my first substantial JS project at the time I started. I ingrained early the custom compilation system and lack of a class system, and I didn’t take the time later on to change these and some other aspects. If I thought that many people would contribute, I might clean it up, but as it is, it works, and my priority is Orglist. That being said, I will maintain it. I will fix bugs and add commands when new API functions are released. I will respond to and categorize issues and review and merge pull requests. And I think I will continue to do so for a good while, because I use Ferro myself and want it to continue being useful to others. It always saddens me when I find an open source project that I want to use, but then I find that there are many outstanding issues and the repo owner is AWOL.