One of the desirable traits of a great content management system (CMS) is the rich ecosystems of add-ons, plugins, and/or modules that surround them. Community offerings allow us to extend and change a core platform to be able to address countless needs. These opportunities are wonderful, important, and need to be respected for the impact both positive and negative that they can have.
It is my philosophy to choose a CMS platform that addresses a lot of the core functionality I need to deliver a great solution. I look for flexibility with content modeling, a great administrative interface, and a template engine that allows us to start from scratch and efficiently implement the design vision for the site. I also gravitate to platforms with great ecosystems of professionals that offer support and assurance to stakeholders/clients so that there is always qualified help available to them if needed.
Though different platforms refer to them by different names, for the sake of this article I’m going to use "add-ons". Tapping a community created add-on whether open-source or commercial, is an important decision that can have significant impacts on site maintainability, security, and performance.
With each add-on used, three notable things happen.
Ability to stay current increases in effort required
The amount of overall code of the solution increases
Your beholdeness factor increases
Let’s look at each one of these further.
When investing in a technology platform it is good practice to stay current. With downloadable software, updates generally require some manual updating and even for those platforms that have auto-updates (Craft, Wordpress, …) there are point releases and well as commercial add-ons that may require manual update efforts as well.
From my experience, the time and effort required as well as the risk/challenge to upgrade grows exponentially with the number of installed add-ons. One, maybe two add-ons along with core is quick and clear to assess time and effort to upgrade. However, as those add-on numbers grow, the complexity and effort curves up notably.
Time to research all the upgrades and assess interdependencies and compatibilities
Time to process upgrades
Time to test
Time to troubleshoot and fix any issues that may arise
Very practically speaking, when you install an add-on you are adding lines of code to your solution. We, as a community strive to write code as efficiently as possible. We do this to help keep things simple, easier to test and support. Though more lines of code for more features is not inherently bad in any way, it can serve as an indicator of complexity.
More lines of code = a greater chance for bugs and more effort required to maintain for both you and/or the add-on providers.
Whether working with open source software or commercial both have a
beholdenness factor to be aware of but often follow a slightly different
For open source software, you are generally starting with a core CMS
platform with tens, hundreds, maybe thousands of engineers contributing
to the code base. With each add-on you install you need to pay attention
to how you become beholden to the work of a smaller numbers of minds.
Let’s say I have a core CMS with 100 contributors. Next, I add a critical add-on that was created and maintained by two people. All of a sudden, the CMS solution that had such a big community behind it now has critical functionality in the hands and minds of just two contributors.
Let’s say you are using an indie commercial CMS like ExpressionEngine, Statamic, or Craft to name a few, you are likely starting with a very small number of core contributors and with each add-on you increase the number of people you are beholden to notably. Let’s say you start with a solution that has 4 core contributors and you install a critical add-on that has two contributors. The number of people you are dependent on and beholden to has increased by 50%.
In either the open source or indie commercial cases, the number of contributors and this beholdenness factor in particular as you employ the use of multiple add-ons is an important consideration.
How do you choose add-ons responsibly? Here are a few simple tips to consider.
Make sure it is really needed - If you can deliver a professional solution without the add-on with out of the box functionality, do.
Don’t go with a total conversion add-on - Add-ons that overhaul how you template and/or more importantly how you structure and store your core site content should be avoided. If you are choosing an add-on to change the entire “way” of the core platform, then my recommendation is to find another core platform that lets you deliver a solution that is more in line with what you feel is better. It likely exists.
Get to know contributors - When possible, research the individuals and/or company behind the add-on.
It’s Open Source? Can you support the solution yourself if you needed to?- Review the code of open source solutions, not only to assess quality but also to assess your ability to troubleshoot and/or extend the solution if needed.
Commercial add-on? What would happen if? - If the add-on was no longer supported what would happen? Does the current vendor have an exit clause? Would it go open-source? Could you replace it?
Are the number of add-ons you want to install proportionate to the scope of the site?- A simple brochure style website with a blog that is loaded with 20+ add-ons seems out of balance, no? A large site with e-commerce, high traffic, and many content types might justify a larger number of add-ons.
Is your add-on selection transparent to key stakeholders? - Are the stakeholders and/or clients in the loop regarding your add-on selection/recommendations?
The tips above simply should help going in eyes wide open. Add-on choices matter and it is important to give some consideration beyond the initial launch to the days that will follow. Site owners should be aware of the implications of add-ons including features offered, general understanding of time/budget saved in using them, as well as any impact on maintainability.
Principal, Strategy and Technology