Extension driven development

November 28, 2009 – 11:37 pm

What then do I mean by “extension driven development”? It is the concept of changing the way that Thunderbird is developed and distributed, with a bare minimum set of core code, and the main features presented as a set of extensions, shipped with the product,  that can be enabled or disabled by users.

I don’t have any illusions that this has a significant chance of being implemented, and I’m not even sure it’s a good idea myself. But I ask you to suspend disbelief for a minute, and imagine a change to the development culture and process.

An email client is different from a web client in many ways, but one significant way is that there is no real need for a fat uniform core product that developers can target (such as web developers for FireFox). So we are free to allow wide changes in our product configuration that would not make sense for FireFox. There is really no fundamental need for Thunderbird to be presented as a single, fat, feature-laden client.

Instead, ship Thunderbird as a minimal base with a collection of extensions. The extensions could be in a variety of statuses. At one status extreme, “Core” extensions would be enabled by default, would be fully localized, and their updates would be shipped with updates to the core product, rather than through AMO. Many existing core features would be converted into “Core” extensions that could be disabled if desired (for example bayes junk processing, or gloda.) At the other extreme, “Pilot” extensions would be shipped with the core product in a disabled state, would be updated by AMO, and not fully localized. There would also be “Standard” extensions that are shipped with the product, not maintained through AMO, but would not be enabled by default. Lightning might be one example of this. FiltaQuilla or JunQuilla could easily get added to this category in the future, or popular extensions like ThunderBrowse.

So why would you do such a crazy thing? For several reasons.

First, you would have a path to add features to the program that is not as generally disruptive as has been, for example, gloda or the new message header. By not using a new extension, an existing user would not see changes to their workflow that they did not want or appreciate. Also, new features need not delay the release of new versions of Thunderbird, as “Pilot” status extensions could be updated through AMO.

Second, new complex features like gloda, even though they are developed by the core team (well mostly asuth) are in a state of rapid flux, and would really benefit from allowing updates more frequently than even the accelerated release process will allow.

Third, you provide a natural path for outside developers to add contribution to the product without having to completely submerge themselves in the Mozilla culture, or give up complete control of their creation.

Fourth, this really recognizes that the use of an email client is highly personal. Basic users could be presented a basic email client. Advanced users could easily add advanced features. (Existing AMO-based extensions are also good for this, but the quality is not uniform, and they frequently are not kept up to date. And the standard product is still very fat with lots of features that are unneeded by most users.)

Fifth, this would solve the serious issue with Thunderbird of how hard it is for the average user to install addons (because the most popular and important addons would be shipped with the product).

There’s another dimension to this, and that is the developer’s relationship with his or her extension. I know that I feel a responsibility for my extensions that is beyond the responsibility I feel for any core code. You can see that in the documentation that I provide, and my reliability in responding to issues. I think that many other extension developers are like that as well. I’m guessing that they would be delighted to see a higher level of promotion of their work, without the need to cede complete control that incorporation in core might involve.

I suppose I could write a book on what this might look like, but for now let me leave it here.

rkent

  1. 4 Responses to “Extension driven development”

  2. This is the standard approach with many software companies. Look at Eclipse or JetBrains IDEA. Two very successful plugin based platforms doing this for years…

    Thunderbird can benefit from this! The big start was with Lightning, but I hope to see more serious development with other extensions and getting shipped with the core.

    By Armond Avanes on Nov 29, 2009

  3. I think this has a significant chance of being implemented, or at least I hope so, because it’s what I too am pushing for.

    Gloda is an interesting example case because it actually did start out its life as an extension. Apart from a dependency on Thunderbird locales for localized strings, it largely retains this structure.

    While I have been plugging Jetpack for quite some time as the future of (easy) extensions for Thunderbird, there is exciting news in that Jetpack is being rebooted to be even more appropriate for the use-cases you discuss.

    Namely, I think Jetpack2 (not sure if it will actually have the 2, but let’s use it for the sake of argument), will allow Thunderbird to ship with extensions built-in that are still exposed as extensions AND also provide for the user to download more recent versions of those extensions.

    This would help alleviate the need to monkey-patch 3.0’s Gloda to allow other extensions to access/provide new Gloda features and functionality, like GlodaQuilla’s do-not-index feature (which is fully sanctioned monkey-patching).

    By Andrew Sutherland on Nov 29, 2009

  4. Just realized this was also posted to the mozilla.dev.apps.thunderbird newsgroup. I’m going to repost my reply there and continue all follow-up from there.

    By Andrew Sutherland on Nov 29, 2009

  1. 1 Trackback(s)

  2. Nov 29, 2009: Twitted by planetmozilla

Post a Comment