The Plugin Rule

I got caught up in a discussion on plugins for WordPress today, which got me thinking about some things that I really should share with the Devlounge readership. It might seem a trifle basic to some of you, but you should understand that there are a lot of people who extend and further extend their websites with plugins, widgets, gadgets, gizmos, addons, extensions, or whatever they are called for their publishing platform, and by doing so really just make the visitor’s experience worse.

So what am I talking about, really?

Plugin Overload

Sometimes you stumble over a cool feature that someone has on his or her website. You want it for your own, or your client wants it for their site. Googling it will find a solution, of course, and it might be a plugin for the CMS you’re using.

Excellent! Install! Blam! It’s up!

Then it happens again. And again. It goes on and on, and suddenly you have 20+ plugins installed, and you’re wondering why the reader stats are going down.

The ease of adding plugins makes us sometime forget 5 things:

  1. Extending the CMS with plugins might strain it more.
  2. Additional functionality usually means additional database queries, calls to scripting actions, or whatever.
  3. Widgets hosted on a different server can hog up a site, just because the server they are on isn’t responding properly.
  4. Too many things at once might clash, because the developers didn’t take everything into consideration.
  5. Cramming too many features in one place will most likely make it cluttered and unfocused.

It is very easy to just download a plugin and extend our CMS today. A lot of times that is a good thing, but sometimes it goes too far. There really is no telling how well two different plugins will work together. A lot work perfectly well, but some might clash due to poor programming or coincidence. After all, there is no way that the developer can test his work with everything out there, now is there?

There’s also the matter of load times. First of all, the more you put on a site, the bigger it will get and the slower it will load. This is less of an issue today, with high speed internet access, but it is still an issue. Second, if you use external services, like Share This or Disqus for instance, you will have to wait for them before you can use their functionality. If they are implemented right, the rest of the site will load, but that is not always the case. Third, people are impatient, high speed internet access or not – they want everything to happen the moment they click. So when someone finds a link to your Kick Ass Super Duper Post Of Brilliance, clicks in anticipation of reading something genius, and then it loads slooowly, you might just have lost a faithful reader.

Finally, there is something called two many features as well. Do you really need everything you clutter your site with? Just browsing the blogosphere tells me that the case is usually “probably not”…

The Plugin Rule

So what can you do? I have something I call the Plugin Rule. Basically, it goes something like this:

Never add a plugin for a feature your CMS can do with a little bit of custom coding.

Now, there’s the issue of actually doing that custom coding as well. Let’s say you’re running a WordPress blog and want a submit to Reddit link. You could do that with Share This, with one of the numerous plugins, or you could hack the theme template and add the submit link there. The ideal solution is the last one, since it relies on no plugins nor external services, but not everyone is capable of doing that. They should, of course, choose a plugin that gets the job done. That is, if they really need the feature – otherwise just forget about it.

It all boils down to your level of expertise of course, but try and avoid using plugins for everything. Always search for a less obtrusive solution. And perhaps most important of all: Always question the need of the added functionality. After all, less is sometimes actually more.

  1. By Jeff Starr posted on December 10, 2008 at 7:24 pm
    Want an avatar? Get a gravatar! • You can link to this comment

    Good points. Unfortunately, users lacking in coding knowledge quickly realize the limitations of WordPress when plugins are not used. On my next project, I am planning on running the latest WordPress with no plugins whatsoever and push its functionality as far as possible. Thank goodness for functions.php.

  2. By Benjamin DiGregorio posted on December 26, 2008 at 5:10 am
    Want an avatar? Get a gravatar! • You can link to this comment

    Hacking the theme is always the best option unless of course you can get a theme custom-designed for your site. Too many sites these days load unusually slow because of the number of plugins they have generating additional requests!

  3. By Dan posted on December 30, 2008 at 2:29 pm
    Want an avatar? Get a gravatar! • You can link to this comment

    As developers and programmers, we are prone to implementing our on code solutions versus plugins and add-ons. That does not keep us from using a plugin or add-on now and then and modifying it to meet our needs. Most standard CMS plugins are ongoing development projects by their developers anyways.

  4. By Shirley posted on January 2, 2009 at 1:20 am
    Want an avatar? Get a gravatar! • You can link to this comment

    Yeh, this is a great rule. Plugins can drastically slow down a WP website, as well as make it more vulnerable to ‘attack’. Additionally, if you just install a plugin, you can’t really control how well it is positioned or even its appearance. And finally, plugins complicate upgrades. So unless I am feeling especially lazy, I generally code all of my special features.

  5. By London Web Design posted on September 18, 2009 at 11:56 am
    Want an avatar? Get a gravatar! • You can link to this comment

    I strongly agree with Jeff Starr’s word. This is really a great rule. I think people will definitely found benefit from it. Thanks for sharing such a great and informative post with us. Keep blogging.

  6. TrackbackFreelance Friday: My Writing Week 50 | Thord Daniel Hedengren