What's wrong in Mozilla's plan for Firefox ??
I just read the blog post of Mike Connor, Firefox's lead engineer. And I'm depressed.
In future version of Firefox, it's proposed to "deprecate" the current extension system in favor of jetpack. And I don't know why, but in his blog post, it reads like "remove". And I'm afraid, like many other readers, that the current extension system will be removed.
Mozilla, please confirm, officially, that the deprecation and the removal are not in your plans ! If you do it, it will be a big mistake.
So Jetpack, in theory, is good for web developper who wants to create little extension without reading 400 pages of doc.
However, this is pure theory. Jetpack (same applies to the extension mechanism of Google Chrome) has several issues.
First, it has a limited API, and you (as developer) are in kind of sandbox. Mike says "If Jetpack isn’t capable enough, file bugs and request functionality". Well ok, but even if we have an extended API, it will remain limited. And more the API will grow, the harder the API will be to use (so creating an extension that way won't be far easier than today's way of doing). On the contray, the current extension system has not limitl. You can do everything. You can even load any binary components, use any libraries provided by Gecko, and you can do everything you want in the UI, thanks to XUL overlays ! The current extension system is totally OPEN. Jetpack, because of its architecture, of its goal, will never have this openness. We won't be able to create amazing extensions like we do today.
Second, the syntax. Jetpack API is using the jQuery syntax. Web developper, if you don't know what is a closure, or don't understand the concept of closures, creating an extension with Jetpack is not for you.
Third, the goal of jetpack, is to make development of extension easier than with the current extension system. Well, sorry to say that, but for the moment, it is kind of a joke. When the developper have to manipulate XPCOM components or use properties like wrappedJSObject, I don't see where is the progress. Granted, things like
jetpack.menu.context.page.on("img").add(..) saves many line of codes, comparing what we have to do in the current extension system.
I have one question, though: why not invest time in the FUEL API ? It was a good start to have a simple API simplifying recurrent tasks compared to the current extension mechanism. It was a good place to include shortcuts API like the ones proposed for Jetpack. I don't understand why it was abandonned...
Fourth, jetpack have some lacks. No possiblity to localize jetpack extensions, many other issues pointed out by Glazou, and worse (IMHO) no possiblity to use XUL instead of HTML. By XUL, I talk about the XML language, not the aggregate of all Mozilla technologies. The HTML box model just sucks to create user interfaces. Some jetpack extensions try to ease the pain absolutely positioning some html elements. It just cannot live with the flexible box model we use in XUL, in the Firefox UI, or in other toolkits in other UI languages (qt or other).. Using HTML elements inside a flexible layout can be a nightmare for the developer, but also for the user because it can break the UI (and possibly induce conflicts with other extensions?). With XUL, you don't have to care about the position of your XUL widgets, just insert them in the right container, and the flexible layout will do the rest. You also write less code because XUL widgets are really made for UI. HTML is not. So IMHO, XUL remains better and simpler than HTML to create UI. In fact, it seems to me that the current Jetpack API tries to reach the power of XUL, but with ugly hacks and using a language (HTML) which is not designed for that goal.
I hope Jetpack will become simpler than it is today and will have less lacks. But for the time being, I'm not entirely convinced by its supposed superiority, even for simple extensions.
But even with enhancements, jetpack won't reach the richness of XPI extensions. If the current extension system is removed from Firefox, it won't be a progress. Firefox will lose some its key values in the current Browser War (except its beautiful logo). No reasons for the user to choose Firefox instead of Chrome or Opera or any other browser. And the project will loose probably many contributors (including possibly myself).
So Mozilla, ok for Jetpack, ok to provide a mechanism to create easily some extensions, but please --confirm you won't deprecate or remove the current extension system-- (done, see update above). Developers should still have access to all the richness and power included in Gecko to allow them to create amazing extensions. Do not build a fence around your technologies and our creativity! Remain Open!