Why port your Firefox add-on to Internet Explorer?
Because your competitors won't, says Microsoft
Add-on-Con Is there a good reason to build a browser add-on for Internet Explorer as well as Firefox? Yes, according to Microsoft IE evangelist Joshua Allen. Building an add-on for IE is so difficult, he said, your browser app competitors won't even bother.
"It's harder to write apps for IE - so it's a harder market for competitors to get into," Allen told developers this morning at Add-on-Con, a Mountain View, California, mini-conference dedicated to, yes, building browser add-ons.
Of course, Allen also argued that IE has more market share. "You want to get to that 70 per cent of the market that uses Internet Explorer," he said. "Right now, IE 6 probably has more market share than Firefox."
And he pointed out that Firefox users are more likely to "mess" with your business model. "They tend to install things like ad blockers, whereas the Internet Explorer user is more mainstream."
Allen acknowledged that add-on makers are more likely to launch their tools on Firefox, a platform that offers real developer tools. He even said that launching on Firefox is the way to go because Michael "TechCrunch" Arrington is more likely to review your product. Arrington - blogging's king maker to start ups - is a Mac man, and Macs don't run IE.
But Allen is happy to say IE 8 will solve the developer tools problem. And he insisted that although porting add-ons to IE is annoying, it can be done. "With Firefox, you've got this more enthusiast audience, more of a controlled test bed. It's a good place to try out ideas before porting them to Internet Explorer," he said.
If you port your Firefox add-on to IE, you may have to use C++. And Allen admitted that this is a bit 1998. "The first thing people say is 'That's horrible. No one programs in C++ anymore,'" he said. But he reckoned there are ways of using languages like Python or Microsoft's C#.
This involves using the .NET Common Language Runtime (CLR). But the trick here is that you'll have to make sure your add-on works on all versions of the CLR. Microsoft only loads one version of the CLR for each IE executable, so you have to make sure there are no breaking changes between versions. "It's a little bit tricky," Allen said.
But go ahead. Give it a shot. Yours competitors won't. ®
"since the whole point of the web is universal interop"
I see the words, but the actions say something completely different. There isn't even "universal interop" with 100% end to end Microsoft. Even skipping over the blatant sins of IE5,6 & 7, the lastest IE8 shows that Microsoft still just doesn't understand web standards, see http://www.theregister.co.uk/2008/12/04/interent_explorer_8_list/
Indeed, why would you use IE?
I agree with Paul McC, the only point of IE is to find FireFox, I just type start, run http://www.getfirefox.com
Or if I load the run files from my pen drive which is a hard drive busting 7Mb or it may be more now, then let it update itself with the latest few Kbs of bandwidth hogging updates, It removes the requirement for IE altogether.
Im stuck for a reason to use IE other than neccessity, for Windows crapdates.
Writing Cross-Browser Extensions is Tough
Note that Cade is reporting purely on the session for porting addons from Firefox to IE. We gave another session on extending IE using some of the incredibly easy extensibility mechanisms like Slices, Accelerators and Visual Search.
The goal of my talk was to cover what you need to do in IE if you want to have common functionality across Firefox -- I committed to the audience to stay away from any functionality that wasn't commonly achievable in both browsers. The other session was about extending IE8 without worrying about Firefox compat; and that is obviously very easy.
My message was that it makes your work harder in *both* Firefox and IE if you want to go cross-browser -- you lose things like XUL UI elements, and you have to use C++ in IE to get XUL equivalents. But it's worth it to target *both* browsers, IMO, since the whole point of the web is universal interop.