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.
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.
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.
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.