The Dark Side of Extensions

One of the best things-- if not the best thing-- about Firefox is the rich, vibrant ecosystem of add-ons that has grown up around it. Almost anything you could possibly want to do with a web browser can be done with Firefox... if you're willing to hunt down the necessary extension. In Buy the Community, not the Product, I argued that this made Firefox the better browser. That's still true today.


This is a companion discussion topic for the original blog entry at: http://www.codinghorror.com/blog/2008/03/the-dark-side-of-extensions.html

It’s a tricky balance between adding unnecessary features and adding useful features. I think when Firefox considers whether or not to incorporate new functionality, they should forget the fact that an extension could be created. They should just ask themselves, “Is this feature helpful to many people? Should we make this a feature that we’ll display on our home page?”

There will always be people that say too much has been added into a once lean browser (hardcore Firefox users) or that too many extensions are needed (Opera users). Firefox is doing fine. Since 1.5, they’ve added “Undo Close Tab”, “Save and Restore session”, and some tabbing options that was previously relegated to extensions. The devs have made many posts that discuss this dilemna of bloat vs features, so they’re well aware of the issue.

Extensions help to keep Firefox lean. Bloating it up with extensions as core features will only result in Firefox becoming fatter than it already is.

Extensions also epitomize what web 2.0 is all about: community. The community contributes to FireFox’s success.

  1. Improved current field highlighting
    Done on Mac.
  2. Alternate font rendering
    Done on Linux - it now follows system settings. (In Safari you can’t change to Windows-like rendering.)
  3. Cleaner downloads dialog
    Done.
  4. Faster HTML rendering
    Done.
  5. Simple, painless bug reporting
  6. Visual incremental find
  7. Detachable tabs
    Done in post-b4 builds.
  8. Draggable images
    Done.
  9. Resizable text areas

I have to almost completely disagree with this whole article. Mostly based on the fact that FF2 and FF3 alike have both been releases that had a lot of addon functionality built into them. You seem to have ignored half the features that you listed that have been brought into FF3, and ignored the things Firefox can do that Safari doesn’t.

Getting a list of the most popular addons is easy too. Just browse by popularity at AMO. You’ll find most of them are obscure things for power users of particular sites (Google Mail Notifier for instance), or things you wouldn’t want in the core for legal/money reasons (AdBlock or NoScript), or things that have been discussed and aren’t within the scope of Mozilla’s goals (IETab). Then you’ll find others like the download statusbar that have been incorporated into FF3. Wait a second! That wasn’t even on Safari’s list of perks was it? No!

For every one of those cool ones though, there are a dozen that haven’t made it in to the core yet. That’s just development. Things take time. Good implementations require a lot of coding work and a lot of UI mockups and review. I’m sure resizable text fields and draggable tabs, etc will make it in the core. But they’re not killer features, and given the choice of using limited development time to enhance the entire engine (something extensions can’t really do), or take someone’s simple extension and beef it up into something that’s ready for every single one of their 100 million+ users to have, I’d rather have to go to AMO (or browse it through the integrated dialog now).

Features are bad. Features add bloat, clutter and bugs. Features steal your time and rot the mind.

Software is bad. Software is full of bugs. I’m tired of stuff that doesn’t work, I’m tired of fixing stuff, and I’m tired of mastering features.

You can add extensions if you want, but extensions are not guaranteed to work with each other, or with future versions. Add a feature and register for MozillaZine. You’re gonna need it.

If I want clutter, I’ll got to Yahoo or something. If I want function, I’ll go to Google. Likewise, do Windows’ incredibly complicated menus and options really do anything for you, or is it just more junk to swear at?

Remember, less is more. Keep it simple.

I switched to Opera for 2 reasons: startup speed, speed dial address bar searching (g whatever to automatically search google for something, as well as y whatever for yahoo etc.). I found out that some of this functionality was available via add-ons for firefox but by then I had switched, and really, do I want the hassle of finding, downloading, installing and then forever updating the extension when the next ver of firefox comes out?

I’m not going to say “OMG I couldn’t LIVE without MY browser!!!1” but I definately prefer it.

Now if you could turn off the built-in torrent downloader I’d never have to start up IE ever again.

hmm… 3 reasons: apologies :slight_smile:

Steve-O

Type opera:config into the address bar :slight_smile:

Then go into the settings for Bittorrent and unclick enable.

Ok, let’s step back a little. We are discussing here the allocation of Firefox development resources. Let’s assume (for the sake of argument) that we are past the trade-offs between bugfixing/improving existing functionality/adding new functionality and we have chosen to allocate a certain amount of resources to adding new functionality.

What I think the development strategy ought to be is this: take aboard:

  • the most desirable extensions. Try to be smart in determing which ones by combining download stats, ratings AND stats from updates (to see which add-ons REMAIN installed).
  • votes on bugs for improvements which really are new features.
  • votes on bugs for fixes that have 1 solutions.

With these sources of wisdom, figure out what can be done in the core product to make fullfilling the desire possible by means of an addon. Do that. Then develop the Add-on. In case of the ambiguous solution to a particular bug: develop two add-ons. Or three.

That’s right: Firefox developers writing add-ons.

I would like to see a similar principle applied to some add-ons themselves: once you get more than one core functionality (and associated option-and-a-half) split up the add-on.

Now, this would kill the already wobbly mess that is the add-ons repository by sheer overload and unsearchability. It would also violate a handful of Human Rights towards end users. I therefore propose the following set of countermeasures, that might even be useful without my rabid proposals above:

  • Dedicate FF resources to upgrading the quality of Add-ons that appear to get the most usage. Trim them to be lean and resource-friendly. Test them rigourously on the FF test facilities.

  • Automatically test combinations, rank conflicts by multiplying the usage factors of the conflicting parties. Fix the conflicts on the top of that list.

  • Publish bug fixing efforts in this respect in some sort of tutorial form, so that the army of add-on developers have a rich resource to learn from other people’s mistakes.

  • Add functionality to the AddOns website like ‘users who installed this add-on also liked these…’. (this may or may not be possible given the information that many users don’t like to give out on grounds of principle)

  • Add functionality to the AddOns to group them. Allow groups of groups. Let a thousand groups grow. A page for an AddOn should say something like ‘This AddOn is included in these packs: WebMaster, MovingContentJunkie, (etc)’ with the option to install those ‘Packs’ in one go.

  • Invest resources in rating AddOns. Not just by the user community, but also metrics on download size, observed memory/CPU/startup time/etc footprint. Use similar resources for improving the descriptions, working towards making it possible to find the right ones. Describe typical usage scenarios, trade-offs, etc.

  • Make an effort to find out why half the Add-Ons authors specifically avoid using the comment/feedback system of the site. Fix the issues. No excuses.

I think that if I got my wishes, we would get a FF that is even leaner than it is already, with many a design choice battled out in the ‘marketplace’ of AddOns.

Some final tangential comments on various previous posters:

  • I reckon that people who complain about missing a feature know at least enough to know that it is missing and some 90 percent of that group can be expected to be able to find the missing piece in some AddOn. IMHO, people who aren’t able to make a selection or an informed decision about whether or not to tick a box in a selection of Add-Ons that are deemed worthy of default inclusion are not going to appreciate the better browsing experience they might possibly be able to have.

  • Any included Add-On chosen leaves many people on the other side of that choice. It is a myth that anyone can decide what’s best for the varied multitude of users that FF has. That line of thinking didn’t quite work for a well-known word processing app–and that should be a simple domain compared to the usage possibilities of a http client with a content rendering engine hooked up to it.

  • On the question of included-in-core vs available-seperately, I would even go so far to say that the most promising example of customising your tool to fit your need is Prism. Forget about site-specific extensions; how about a whole browser geared to just one function?

(rabid ranting now over. relax.)

It pays to be very careful about deciding how universally popular an extension is before rolling it into the product. Integration means having to add functionality to allow people opt-in/out of that feature and have it on their computer either way. It’s all overhead in a system that is constantly trying to remain reasonably lean.

Certainly some features would be universally useful, or at least tolerable, but of the top extensions list you quoted, I have installed about one third, many of them because I’m a web developer. Others on that list are things I absolutely don’t want, but other people will invariably want some of those in their set.

It makes sense to roll the truly universal features in (and this is happening, by all accounts). The rest of the challenge could simply be to make the other popular ones more obvious and easier to “activate”. Then again, I posit that anyone not able to deal with the current add-ins paradigm would gain little benefit from its offerings anyway.

I agree completely. One alternative would be to keep the extra functionality as extensions, but to have them pre-installed by default. That way, advanced users could still disable / uninstall any extension they dislike.

I’m not sure I totally agree with you. Sure, it’d be great to push new features into the browser so I don’t have to download so many plugins, but then would this not just bloat up the browser every release?

Given how many firefox developers work for Google I doubt there will be an ad-blocking extension rolled into the core browser any time soon. I think Jeff’s main point regarding analysis of popular extensions/plug-ins etc for any product remains valid. Another side to this is the “crushing the little guy”. Microsoft makes a huge platform (called windows), any time they try to roll a popular add-in (3rd party application) into the platform various world governments are there rubbing their hands together and seeing dollar signs.

Only two notes from a firefox3b4 user:

  • “Improved current field highlighting” is a litter better than firefox 2 but it’s not at safari’s levels.
  • “Draggable images” are already implemented.

I have to admit, I can’t seem to use anything other than firefox because of the extensions, but no matter how hard I try, I can’t get my wife to use anything other than IE.
What’s interesting is that this same issue goes the opposite direction in operating systems. Apple has the all-in-one package, while Microsoft has created the easily extensible OS with a healthy community of 3rd party applications.

I think they’re doing something in firefox 3 right by improving the core browser engine with minimal changes to layout and functionality. I think the firefox 2 was critized for added spell-checking because of the presumed performance lag this feature would result in.

That being said, as careful analysis of the most popular extensions could probably result in adding a few extra feature which would benefit everyone.

I would make them preinstalled extensions, not part of core product… For example: I don’t want firefox to guess URLs if I entered them wrong, it’s better if they preinstall this extension so I can remove it then to have a peace of code inside a browser that just takes space…

I think Firefox did that. I have been playing with FireFox 3 beta, and it by default asks me now if I want to save open tabs when I am closing the browser.

Earlier a plugin was needed for this. This is just one instance, I am sure there are other extensions that might have been rolled into FF 3.

In general I agree with you and have seen examples of this happening (for example WordPress, rolled in tagging support in their release sometime ago, replacing the hoards of plugins that were used to provide tagging function in Wordpress).

Your earlier post “Why does software spoil?” provides a good reason why some popular functionality shouldn’t automatically be rolled into the browser. I agree with Antoine: it should be possible to download Firefox with package of useful addons already included - give it a name like “Firefox Plus” and users will tend towards it by default - and, for users who are more sure of what they want in their browser, provide a vanilla Firefox as well.