Mozilla Programming

The Jetpack Debate

I’ve generally found Jetpack to be pretty cool. It’s easier to develop and I’m fairly familiar with both “traditional” extension development and jQuery so it seems natural to me. However I generally agree with Daniel Glazman’s blog post on Jetpack. I’ll even agree that closures can make code more difficult to read, though I think I’ve mostly adapted to it at this point.

Jetpack reminds me more of building JS “widgets” than extensions. I’m not sure I see the advantage of moving away from XUL which really isn’t “hard” for 98% of things (though XUL <wizard/> has admittedly made me say WTF a few times) to HTML unless some sort of portability were gained, but that doesn’t seem very likely at least right now. I haven’t seen any indication of intent either. XUL has the advantage of making good UI seemingly easy while HTML really doesn’t, though I’ll admit HTML5 is changing that.

The biggest problem I see with Jetpack is that too much of it is designed around existing needs. The problem with this process is that it’s always playing catch-up. The best extensions are disruptive and do things nobody ever thought of, or even thought possible. Looking at the Jetpack JEP list I see pagemods and toolbar. The kicker is these are “implementing” and “planning” respectively right now.

Things like jetpack.slideBar, and especially jetpack.lib.twitter make me feel a bit concerned. Why? Because they encourage too much conformity, and too many twitter client Jetpacks.

When developers are given such a sterile environment that’s intended to promote experience and stability it ends up inadvertently creating monotony and stalling innovation. If you want proof look at the iPhone. There are indeed some great apps and I say that as an iPhone user myself, but for each great application there are 1,000 that aren’t worth the price (which is often free). Many are just cookie cutter apps with a companies logo on them. Google used one undocumented API for a feature Apple didn’t think of providing a documented API for, and it was news worthy. While Jetpack distribution isn’t limited in the same way that iPhone apps are with the App Store the design questions still remain.

To quote Adblock Plus author Wladimir Palant:

…Jetpack has to support Adblock Plus, not the other way around. As it is now, Jetpack isn’t suitable for complicated extensions.

That’s the wrong order.

5 replies on “The Jetpack Debate”

“There are indeed some great apps and I say that as an iPhone user myself, but for each great application there are 1,000 that aren’t worth the price (which is often free).”

I’m not sure how this statement doesn’t also apply to AMO…

Yes, one thing someone else commented on is that the Jetpack extensions can only use features that have been exposed to it through APIs like jetpack.slideBar, whereas regular extensions can do practically anything. That may be a good security model, but would seem crippling to many of the extensions currently available.

That said, I’ve played with it a bit, and one thing is does* seem good for is simple ‘helper’ scripts. One of IE8’s nicer features is what they call Accelerators, letting you do things like select an address from a page, right-click, “map with live search” to show that address on a map. Or select some foreign-language text, right-click, “translate with live search” to get an English translation.

I think of them as “micro extensions” – a very simple addon, not requiring any sophisticated UI, and ideally, something that can be coded in a dozen lines or less. That seems to be a good match for the Jetpack model…

This reminds me a bit of Valgrind, which also provides facilities for building program analysis tools. There are similar frameworks out there that make it really easy to write a really simple analysis tool. In Valgrind simple tools require a bit more effort. But really simple tools are boring, it’s the complicated/powerful ones that are interesting. And that’s where Valgrind shines in comparison to these other frameworks.

IMHO, the ability to write a really simple tool (or Jetpack) in 5 lines is overrated.

@Majken “Lucy” Connor: It does, but I think to a lesser degree. I’m not sure if I’d attribute it to market-hype flooding the iPhone ecosystem to a greater degree, or something else.

@Simon: I view Jetpack as more complementary (similar to Greasemonkey) because of pretty much that.

@Robert: a good comparison – certainly, JetPack should be able to do anything GreaseMonkey can, and probably more cleanly given the availability of JQuery syntax. I think it’s niche is a little higher than that, though – like I said before, it also compares well with IE8’s Accelerators, which allow very simple extensions to browser behaviour. JetPack is more capable than those too, but that’s till the space I see it in – good for writing simple browser hacks, not well suited to anything really sophisticated.

Leave a Reply

Your email address will not be published. Required fields are marked *