It appears that great minds think alike (or in the case of open-source software and the close-ties between Google and Mozilla, share-alike). Within a week of each other both Mozilla and Google have announced new initiatives to allow for extensions to their browsers to be written using regular HTML / JavaScript and CSS, greatly lowering the bar for developers to join in. Strap on your Mozilla Jetpack and take a peek at extensions for Chrome.
Of Jetpack:
Mozilla Jetpack is a Firefox extension itself, which then provides the framework necessary to develop HTML-based Firefox extensions. The big improvement? Not having to restart the browser to install or update extensions! The downside is that Mozilla are effectively creating an extension system within an extension system. Joy. That could bring all sorts of headaches trying to manage a dual-layer extension system, let alone communicating that to end-users. However–that said–it’s very unlikely Mozilla intend it to be this way, rather they may bake Jetpack into Firefox itself, and remove that extra layer of complication.
By creating Jetpack as Firefox extension they do not have to wait until the next release of Firefox to make the functionality available, especially if it’s new, untested and requiring feedback. Web developers will have no problem installing an extension and working with the platform in view that when it does go 1.0, Mozilla will have had all the feedback they need from developers to ensure a smooth delivery to regular users.
Of Chrome
Chrome has not had any extension ability just yet, and it’s often requested. If only for AdBlock sometimes.
With Chrome’s design throwing away so much UI to begin with, it could seem counter-intuitive to provide a way for people to just add it back in. Ultimately that way allows Google to avoid adding something for everybody, and instead let the community provide the extensions. It worked for Firefox, why not Chrome?
Of Ease
Writing a Firefox extension is difficult. Really, really difficult. Not in the comp-sci kind of way, but simply in the difficulty-through-unfairness kind of way. Much of the XUL language is simply undocumented, or badly documented with many sections being out of date or outright missing features that are available. The JavaScript API is a mess requiring very heavy JS to do even simple things–JavaScript which you would have no hope in the world of actually learning without disassembling other people’s extensions. If you want to do something simple–show only folders in a tree view of files, for example–it is usually a long Google search and disassembly mission finding the answer, because the documentation certainly doesn’t help.
Whilst I welcome Jetpack and may very well have a go at it, it is still just another layer on top of the real XUL code underneath. Jetpack may be good if you want to add UI, but no good if you want to remove it or do any major reshuffling. Jetpack may require that when you get to a certain level there will be something you want to do that will only be possible by moving to a full XUL extension. Though, that may not necessarily be a bad thing–it makes for a natural progression path for improving developer skills.
Of Importance
This is really very important to us. It gives us a certain democratisation of one of the pieces of software we interact with daily. By lowering the barrier for developers to invent extensions, it increases the ability for people to remix and shake-up the browser just as much as the pages we use to view it. Imagine extensions that deeply interact with the webpages themselves, sharing various code elements between the two. In a far-flung future we may finally be reducing the browser to the thinnest of veneers as web pages become apps themselves. 😉
Of course, the lower the barrier, the more crud that spills over. But now, instead of being forced to look at a terrible web page, we can just choose to not install it.
Will Google host and update an adblock plus like extension that will block their ads? Or will we need a fork of the whole system for that. It will be interesting who that dilemma is resolved.
Where are you seeing that google will not allow extensions not authorized by them? Even if they don’t host it, who cares?
It was a hypothetical question. Mozilla are not in the advertising business, allowing AdBlock Plus on their add-ons site is not a conflict of interest.
Who cares? There are lots of places on the web where you can download ad-blocking tools. Google won’t make this mistake, as they know people will react badly and will rush to other web sites to get their ad blocker. The community might even be able to boycott Google Chrome if Google were to refuse ad-blocking extensions.
Isn’t Jetpack just Greasemonkey?
What will happen to Greasemonkey? I think its kind of stupid for Mozilla to reinvent the wheel when something already exists.
I mean Greasemonkey might not be exactly Jetpack but isnt it achieving the kind of thing Jetpack is doing?
Confused….:)
Sorry no, GreaseMonkey allows you to modify website you’re viewing. Jetpack allows you to modify Firefox itself. You can write toolbars and status bar items and such using HTML.
WTF?
Since when has HTML been a programming language?
I didn’t say it was, I just said that you could write extensions using HTML JavaScript is the programming language involved here.
No, no.
I wasn’t aiming at you: I think it is Google and Mozilla who wants us to believe so.
I had a look at the Google slideshow and quite honestly it is awesome; process isolation for each extension for example, using web technologies that’ll allow a person to make one extension and for it to be usable on multiple browsers (hopefully Apple and Opera will come to the party on this one). I don’t use many extensions but if it means that one less barrier can be taken down as to allow people to move between different browsers or use multiple browsers depending on the circumstances – Firefox on the desktop and Chrome on the Netbook (for example) then I welcome out new extension API overlords
But back in december on the Opera forums I suggested that they extend their widgets code – which is pretty much just HTML and javascript, to allow this same type of functionality so it could have something resembling extensions.
… and people scoffed at it as either impossible or undesirable.
Now FF and Chrome are going to have it.
Of course! If Firefox or Google does it it’s just wonderful. If IE or Opera does it it’s just evil. </sarcasm>