Writing a browser extension for three browsers
einaregilsson.com
einaregilsson.com
I should note it looks like this issue is mostly fixed going forward. The chrome extension model won, and Firefox and Windows Edge are supposed to be supporting either directly or through electrolysis.
I.E. was not an extension, but a toolbar, written in C++ (being C++ the debugger was Windows visual studios so it was doable). Firefox was Xul based and almost impossible to debug at the time (much improved in recent months), and chrome just worked.
Opera 15+ is merely a fork of Chrome with some slight ui modifications. It does not merit being called a browser in its own right.
Opera up to version 12 was a great standalone browser with UI and performance characteristics still surpassing all competitors even at this point in time. (As long as you exclude JS-heavy things.)
However at some point MBAs managed to take over, decided to continue making most of the company income with their mobile ad network.
Developing Opera 12 further was expensive, so they figured out a way to keep most of the users (for the ad revenue), while radically slashing the dev expenditure on the browser: Fork and rebrand chrome, while adding a few token features, pretend Opera 12 doesn't exist, and push people heavily to "upgrade".
I tried to do the same in FireFox, and gave up. I couldn't get my head around the documentation without taking a day out to get going.
But yes, that does make it complicated to figure out what's the best way to make stuff for Firefox.
Thanks
If you can wait for the WebExtension API. If not use Jetpack. Don't write new extensions with XUL/XPCOM.
I was pleasantly surprised by Jetpack though, the jpm tool is very nice.
And frankly, the old model is not so bad; if you're building any kind of extension that does more than connecting a button to an HTTP call, the couple of hours you'll need to get started are irrelevant in the long run.
Now when I see any working extension in Firefox I marvel at how much work that person must have put in to get it to work. Over time hopefully Firefox will get better. But the extensions have been bad for a while...