Software add-ons, a.k.a. plug-ins or extensions, offer the promise of more capability beyond the core package. Though the cost for such expandability isn’t free. In my experience they can be both a blessing and a curse.
Add-ons for projects like the Firefox browser and WordPress have benefited both the users and makers. Doing so keeps the core lighter and simpler and without sacrificing the flexibility and customization that have made them so popular. For example, paranoid browser users like myself can supplement built-in features with things like Disconnect or NotScripts.
Once I administered a website using Drupal’s content platform. It was a lot of fun to browse their modules section looking for things that would help enhance the site. However, with Drupal 5 and 6 upgrading meant disabling those modules first, installing the update, then re-enabling them. And some weren’t compatible or didn’t update themselves properly. It was also a manual process, even with the Drush tool helping me along the way.
Drupal began encouraging module authors to offer guarantees they would support the next major version. But I had already been burned. Newer versions may have improved the situation, but a friend and I moved the site to another platform instead.
Add-on advantages typically include:
- Expandability where it’s otherwise impractical (because of the license, platform, etc.)
- Lighter, simpler core
- Customization apart from a vendor’s built-in capabilities
- Allows the core to be free and open while premium features are sold separately
Add-on disadvantages often include:
- Installing, upgrading may be more complex than without
- Add-on interfaces (for programmers or end-users) can be limiting and awkward
- Maintenance of add-ons may lag far behind the core, hindering core upgrades
- Development costs to produce and maintain add-on interfaces and ecosystems
- Additional security risks as the number of vendors involved and attack surface increase
As a software producer the ability to build upon existing platforms helps avoid building from scratch. Often it’s useful as a means to prototype ideas or experiment. Though, the risk of platform upgrades breaking one’s work is ever present. On one project I found myself spending about 2-4 hours each week keeping some add-ons up-to-date with core changes coming from upstream.
Looking at the big picture my experience with add-on’s has been generally positive. They have allowed me to tailor software for according to personal preferences and needs; often far outside the intent of the original vendor. While the disadvantages have discouraged me from using one platform, they aren’t enough to outweigh the benefits.
How about you? What’s your experience with add-ons, plug-ins, modules, and the like? Please consider commenting.