«« Real Life Takes Over for a Bit MT-Blacklist in Action »»
blog header image
Extensible Software

I've been meaning to write about this for a while now, but stuff has come up. It's certainly not a new topic but it's an interesting software engineering topic: writing extensible software.

And I'm not just talking about extensible for the developers themselves, I mean writing the software to include hooks for other developers -- usually users -- to add to your product.

Extensible software is starting to be more and more common. Development tools like Eclipse are extensible through plugins, my blogging tool Movable Type supports plugins, there are third party add-ons for MSN Messenger and Outlook. There are also extensions for my favourite browser, Mozilla Firefox.

Making an extensible or plugable architecture lowers development risk, because people will go out and make plugins for things they really want, which in turn improves the overall value of your product. Sometimes features that start on as "third party add-ons" end up in future versions of the product, like message logging in MSN Messenger. The MSN Messenger team can gauge the popularity of that third party add-on without risking development time on it. Then when it's popular enough they'll put it in the main product.

Another reason to be extensible is that you turn your product into a platform. The more "killer app" entensions there are for your product, the more in demand and ubiquitus the product will be because the product is required to use the killer extensions. This might explain why these types of products are often free because the companies that make them can make money in other ways by leveraging the platform.

When IBM they ran the Eclipse project, for example, they used the Eclipse platform for one of their enterprise products called Websphere Application Developer, which they sold as a development environment for their Websphere server product. Eclipse's popularity then increased as well because people were extending it in many ways, some not even related to Websphere or Java.

Another advantage is that some of the more advanced users prefer an extensible product over a restricted one. These advanced bleeding-edge users often start the adoption of a specific product, so it's worth appealing to them.

Keep in mind that if people are hacking on top of your product they will report defects to you so that their extensions will work properly. Free testing is always a good thing, and again will improve the value of your product with less work on your part.

Posted at November 26, 2004 at 02:42 AM EST
Last updated November 26, 2004 at 02:42 AM EST
Comments

First, my condolences on your Granpa's passing away. It' good that you have all his journals to remeber him by. It's always good to have these wee treasures.

I've been writing an extensible application in c# that allows us to plugin our own modules. Basically the plugin's are modules that are part of a collection of tools.

The reason for us going down this road is that we'll very rarely have to update the application that host's the modules. Instead we'll be doing updates to the plugin's. It will be easier to manage and by splitting each module into it's own library there's no risk of one module affecting another module through continual development.

» Posted by: Matthew Lang at December 2, 2004 09:00 AM

That's a good point, Matthew. A plugin-style architecture "forces" your development to be modularized, where the central stuff can be highly tested and rarely modified while you add plugins to enhance the system.

» Posted by: Ryan at December 2, 2004 10:40 AM
Google
 
Search scope: Web ryanlowe.ca