8 reasons not to build your own CMS

As you work within software engineering environment, you will realise that a single software solution solving all business problems simply does not exist.

A typical Content Management System (CMS) tries to do exactly that and that’s why every single CMS sooner or later fails to deliver.

Here are some practical reasons why you should not attempt to develop your own CMS.

It won’t meet users’ needs

Chances are that the CMS you build will not work for the businesses you target, as you are unlikely to have a wide enough view upon the industry’s needs, unless you are very experienced.

Because of this reason you will find yourself all the time having to extend your solution to accommodate the needs of the new clients you find.

This defeats the purpose of owning an off-the-shelf solution which would automatically work for your next client and simply require an appropriate theme to make it look and feel right.

It’s too much work

The idea of having a pre-built CMS arose from the notion that it’s less work to be customising an existing solution, rather than building from scratch every time a customer needs a CMS.

In reality however, to build even a semi-appropriate CMS requires:

  • a substantial development effort
  • much thinking from User Experience point of view
  • significant amount of testing
  • catering for many different types of user flows and scenarios
  • dealing with all types of content publishing online
  • considerations about deployment and support
  • security concerns

It won’t be a standard solution

On top of the above difficulties, you are also going to come across various complications on how to make any working solution you come up with conform to various standards and guidelines such as the ones from W3C.

This is likely to be a fairly complicated matter to achieve and will require in-depth knowledge of all those standards.

Furthermore, your solution ought to be future proof in this respect and easy to change so that it can be made to be conforming with future emerging standards, such as HTML5.

It won’t be extendible fast enough

If you are building your own solution, it is unlikely to be easy to extend fast enough to satisfying your client’s requirements, even if it is using a plug-in architecture.

The reasons for this will be because you are unlikely to have enough resources available to develop, deploy, test and make components reusable for future needs.

You are also likely to be working on specific scenarios, rather than addressing a more generic problem, so your extensions are likely not to be easily reusable from client to client.

It won’t be tested well enough

A CMS which has been in use for 5 years is likely to have gone through very rigorous user scrutinisation and feedback by now.

Your new CMS will be fresh of  the boil, featuring many bugs which are hard to test, unearth, replicate and fix.

All these bugs will need to be fixed if your product is to see long term success.

This means more time spent on:

  • developing
  • regression testing
  • re-deploying
  • issuing out bug fixes and updates
  • dealing with feedback and bug reports
  • having unhappy customers who are slowly losing faith in your product

Do you really need to be spending time on this, or is your time better invested working with a well tested solution which you might be extending for a particular purpose?

It won’t be easily changeable

This is the main point that made me want to write this article, as I want to change my own CMS, but now have to come up with my own future proofing solution for it.

The main reason is the fact that some of the well ranked URLs on my site might have to change under the new solution.

This is a really bad idea from SEO point of view as the site is likely to lose out on some interesting Google ranking.

The only solution is to spend more time writing .htaccess rules to ensure that the old URLs are redirecting to new URLs in the most appropriate manner and making sure that Google does not see the two URLs as duplicated content.

It won’t add any value

Probably one of the most important points to make is that the work you might want to do on building your own CMS is likely to be a simple replication of already well developed functionality, existing for free out there on the web, and meeting all the above requirements.

So the main question to ask yourself is: ‘Why am I really trying to re-solve a problem that has already been solved before?’

If you can really find a good enough reason for this and think that you have the resources to do it better, then go-ahead and develop your own CMS.

Chances are that the invested effort will not produce anything significantly better than an already existing solution on the market.

Create content, not functionality

For most part you are better off using your valuable time creating valuable content, rather than invaluable functionality.

Using an existing platform, which is altered to suit a particular need is a much easier and saner approach than building something from scratch.

If you can populate an existing CMS with good content, it will be much better than building a new CMS with poor content inside it, as the time is likely to be dedicated to building the functionality, rather than writing the content.

Conclusion

If you are thinking of embarking on the road of custom building a software of any kind, you are best off thinking of a fairly simple, specific solution for a particular problem.

Building a functional CMS is actually one of the most complicated tasks in the arena of online tools, and by no means a good place to start from.

You are also going to be in direct competition with million and one other CMS solutions, including many excellent ones such as Word Press, all the time.

The real question is: ‘Is it worth it and how does your solution differ from already existing, well-tested and fully functioning CMSs on the market?’

About Jason Grant, BSc, MSc

Experience Architect, Developer, Experimenter, Entrepreneur, Lean start-up enthusiast, composer and musician, father and family man, Web Standards fan and Responsive Design thinker.
This entry was posted in Advanced, Architecture. Bookmark the permalink.

18 Responses to 8 reasons not to build your own CMS

  1. I see your points, however, I do believe there is space for a home-built CMS. For some small businesses owners, even the back-end interface of WordPress is confusing to them!

    For primarily static websites, with, say, a news feed/blog or product catalogue, I see no reason not to build your own CMS if you have the time and skills.

    That being said, I have worked with someone elses home-built solution and found it perfect for -simple- sites. Other than that, I would use wordpress or build the site from scratch using a framework and existing modules.

  2. @Jethro Good point. I do agree WordPress admin section is confusing for many users, especially for those who simply want to ‘just get on with it’.

    This is especially the case with structured content like clothes items and so on.

    However, WordPress was never really intended for this purpose and most heavy WordPress customisation initiatives are essentially a form of a hack.

    This is why purpose built CMS systems are around for, say, e-commerce and so on.

  3. sarankumar says:

    i dont agree with you. try to build our own cms .why we use others brain .use our own brain!!!

  4. Boris says:

    Well said. I couldn’t agree more. Writing your own CMS is like a siren (read up on greek mythology if you want) – you hear them calling, it sounds so beautiful but once you go there, you are lost. Don’t do it. Put wax in your ears and have a look at what already exists – and forget WordPress, there are literally more than a thousand CMS’s available. There will be one that fits your needs. If you have low demands, many online solutions provide cool user interfaces and let you customize the look and feel. On the high end, well – you wouldn’t want to write your own CMS if you look for the high end, would you?

  5. web design says:

    As a somewhat experienced web developer, I must admit that your points are very valid. However, I tend to think most CMS out there (especially the useful ones) are targeted for a wide variety of uses. The problem with this approach is that it’s not great for specific needs. It’s also overly confusing to the client, and the developer of he isn’t very experienced with the software. For this reason, I wonder if setting up a custom CMS (atleast in some cases) is better.

  6. SAm B says:

    As a Drupal developer, I’m currently mulling over the idea of delivering a custom CMS for my current work. The functionality required is actually pretty simple, but the amount of the content required is extensive. This means Drupal’s processing overhead is a liability, esepcially with tonnes of modules enabled.
    I’ve found out the hard-way that trying to make a one-size=fits-all system do specific things is very irritating, especially if you’re relying on other people’s code.

  7. I Do NOT Agree. Building a Custom CMS is Great for Testing your Web Development Skills…

  8. Stevan Wing says:

    If you’re interested in the journey and learning along the way rolling your own CMS is fantastic for developing your skills. Having said that you need to have used other CMS’s in order to understand their strengths and limitations.

    I believe you should not sit on either side of the fence and use whatever solution suits your client and their (and your) anticipated needs.

    You need to have used and understand the tools implicitly to be able to make the most appropriate choice.

  9. Will says:

    Hey Jason,

    I have read your article with interest as someone who is 90% through creating a custom CMS. I am fortunate to be both artistic and technically skilled, holding degrees in both the Arts and Computer Science. However, even with these skills and taking significant time out to do it the task has been colossal. I have single-handedly written the CMS using 7 different languages and even had to learn AS3 which I had left well alone until now to compliment the video side of it.

    Anyway, to cut a long story short, when I realized what it was going to take to create a full-blown, word-press style templating system, I opted to change its purpose from a full-blown CMS to a targeted multimedia manager featuring a video subscription service mainly built around the YouTube APIs.

    I completely agree that providing some dedicated, targeted content within the CMS boundaries is far more important than to be foolish enough to go head to head with the likes of WordPress, Drupal and Joomla. However, I do agree with the other guys on here that the skills learnt from such an endeavor are extremely valuable.

    Anyway I’d like to hear more about your experiences with it so feel free to drop me a line. ;)

  10. Will,

    Thanks for your insight! Very relevant and much appreciated.

    I’m starting to think that the only way a CMS makes sense is when it’s custom built for a particular purpose/use case, but that’s usually called a custom app/web site, etc.

    Working with things like WordPress is pretty much a nightmare, when you have a client who wants something fairly particular built for them, that essentially uses most of WordPress baked-in functionality.

    What I would like to see is easy ways of dealing with common/mundane tasks in web apps solved as reusable components that can be used in systems.

    For example, I always seem to need logging in and registration. Can I not just have that as a component with its own APIs and I will build everything else around that or to work alongside that in the way I like it?

    Same with page management stuff, same with a few other things.

    You could say that WordPress tried to provide exactly that with their plugin architecture, but in practice that does not work so well and it’s not a very usable way of working on a (larger) system.

  11. Will says:

    Jason,

    Thanks for your response, yes I totally agree with you, a more modular situation which can be tailored to suit particular needs would be much more convenient. As I said, I am nearly finished with my CMS and I am thinking about allowing the user to change environment variables during the installer to opt in or out of certain parts of the functionality.

    That way too, you can have different values set in the code to present different functionality depending on whether they are using your free version or the upgraded one which they pay for.

    I was thinking along similar lines with regards to E-Commerce software a few months ago after being involved in an Opencart project.

    I had a very difficult time tracing my way back through that CMS from View to Model in order to find the relevant parts to change. It’s like going down one rabbit hole and finding another. Anyway, the point is that I found it was extremely difficult to change the order of the way things happened in the checkout because everything was so interconnected and interdependent.

    I was thinking what a great idea it would be to have the checkout process like a sequence diagram in the back office and be able to manipulate the flow at different points without having to go on a giant Easter egg hunt. If it hadn’t been for Dreamweaver’s search function and Firebug’s network panel, I would never have been able to track down all the knock-on atrocities which occurred from simple flow changes.

    With regards to WordPress, I still use it for most of my free lance jobs, just because it is quick and easy and there are so many cool templates out there for it. I used to be a real purist and hand-code everything I did, even jobs for small businesses but I soon got tired of that once I became more focused on building applications. Now I would rather put the CSS design time into creating immersive UX and the development time into writing cool mash-ups to enhance them.

  12. Yes Will,

    You are going through the same exact pains as we all are. :-/

    There surely must be a better way of doing these things and OO for long time promised this, but I don’t think it has really happened.

    I liked your comment about going down the rabbit hole. It’s very true! :-)

  13. Will says:

    Hehe there are many rabbit holes in a CMS that’s for sure. Your portfolio is very impressive btw. Can I just ask you, did you implement a full CSS templating sytem in your CMS and was it as much of a headache as you’d imagined?

  14. Will I built everything from scratch and didn’t use a MVC framework, which meant that my CMSs was fairly non-maintainable and slow to extend.

    I’m actually going to be releasing new flexewebs.com web site which I have just built in straight, static HTML (just using some PHP includes for repeated blocks).

    It works out (for small sites) that’s the best way to build, release and maintain things.

  15. Will says:

    I see, I didn’t use a framework to begin with either but I managed to move it all onto Zend before it got too big, pretty glad I did that, I’ve had to read a lot of doc tho. The reason I asked about the templating is that I want to cater for non-developers too so I was going to release with say 10 built-in templates which can be used by those who don’t have any tech skills but also to allow developers to read my API doc and manipulate the CSS accordingly. As it’s a video manager I thought it would be cool if they could just and then build their own CSS around it. Does that sound reasoable?

    I have taken a lot of stuff from my knowledge of opencart which basically has a line of code in the controller class which checks for the presence of a template and if it does loads it, otherwise loads the default.

  16. Yeah, that all sounds reasonable and a standard best practice (as much as it can be these days).

    Would like to see the final product once you are done.

  17. Will says:

    Yeah sure thing will drop you a link once it’s done. LOL the line missing above “if they could just…” was “php echo video_manager(skin_name) incase you were wondering why it didn’t make sense.

    Aut because it was being output in html and that variable was empty it rendered blank as we both know too well! Thanks for the input have a great xmas ;)

  18. Sure!
    All the best for the festive season to you too!

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>