How to build your own CMS — part 2: Do you ...

How to build your own CMS — part 2: Do you really need a custom CMS?

The previous blog post was dedicated to my personal history with CMS’s and how I started. Looking back it was somewhat a 7 year long side project that could never become really viable. Waste of time? No! First of all, it was fun and it gave me the knowledge that I have and use today in projects for aFrogleap. And because I did this in my spare time no one was bothered by it. But obviously, its my goal to make you not having to go through all of this and save you the headaches, and more importantly, time! Building a CMS takes a huge amount of time, dedication and energy. Therefore, be aware of the fact that a CMS is just a tool. You should take enough time to consider if you actually really need a custom CMS. That is why I wrote this article!

People with this question often have different use-cases: a designer can be dissatisfied with the capabilities of current CMS interfaces; a databaseengineer can find the current database architectures a mess; or a programmeris tired of extending a tool that is not really meant for the goal he had. And, of course, it can also be someone that is just eager to learn!

What is your goal?

This is an important question. Are you continuously developing or are you looking for a one time solution? If the second option applies, stop here! Do not go for a custom CMS. Look for existing open source solutions and if not suitable enough, consider an enterprise tool. There are already so many solutions out there. Try existing solutions first and take your time!

If your website will be mostly about articles, contact forms or image galleries, like blogs, news sites, portfolios or company sites, almost all popular CMS’s should be fine. I personally like Wordpress as a “one time install” solution. I find PyroCMS and ModX much better, however, when it comes to customizations. All 3 examples can be installed, configured and maintained by junior developers or motivated non-developers within 1 day through a user interface without touching any code! They also have an active community of all sorts of developers that are willing to help for free. Most CMS’s can also be extended with plugins like a Google Maps plugin or a movie gallery.

Adopt and prosper

If none of the available options seem suitable enough, there is always the option to go custom. Custom might not mean “start from scratch”! Custom can mean that you need a big extension or modification in a CMS that already (partially) does what you want. For example, changing the interface design or creating a completely separate public facing website that only uses the Wordpress database. In most cases you’ll want a separate custom module. This in most cases is the best option to save time, while still being able to have best of both worlds! If you don’t have experience or time to build a CMS and you are working in a commercial environment like in a company, I would recommend this option. But be aware that extending a CMS has its limits: You are forced to stay within the boundaries of the CMS or you and your project will suffer from it! The web has plenty of articles about how to extend or modify the CMS of your choice. Go read that first in case of doubt whether to go with an existing CMS.

If you are focussed on specific programming languages, keep in mind that the CMS that you want to extend might work with a different language / framework / architecture. It will take time to adapt to this style. Creating modules or extending the core with your own (maybe better) style is not an option.

So, is starting from scratch still a viable option? Well… yes! But now it becomes a matter of resources. And with resources I mean developers, tools, time and experience. You should see ‘creating a CMS from scratch’ as an investment in your toolset and maintenance costs! Also, consider it as giving your developers and / or yourself a chance to create a custom tool that is designed to accomplish exactly whatever you need to accomplish.

Below following some use-cases for a custom CMS:

  • You are working on ‘new’ systems
  • Clients are going to pay for the system and its maintenance / extension
  • Your system(s) are mostly data driven
  • Your systems are distributed
  • You want a CMS with a different way of working
  • You are just learning in spare-time
  • You want to be independent
  • You want the system to be light-weighted
  • You want it to be in your programming language of choice
  • It’s not clear what functionality is ultimately needed, but that the project is going to scale is a guarantee.

There are a lot of articles written about ‘when to build your own CMS’ and they are mostly negative, stating that building a CMS is just a waste of time… I personally disagree with most of those statements. Why?

A CMS is just like any other products. A tool. Tools are there to help. Think of a CMS as a drilling machine. Its handy and fast in the repetitive task of drilling. Imagine this, in cramped spaces it’s a pain to use it and a normal screwdriver is not an option. This is where a custom screwdriver might come in handy. A screwdriver that perfectly fits the working space. The same principle goes for CMS’s and your ideal workflow.

For many leading edge developers there is no other option than creating a custom CMS. They require the CMS to support new stuff while many existing CMS’s are really old and use old architectures or languages that are just not efficiënt enough. Some requirements are: Live data (update from others without page refresh like in a chat), responsiveness including mobile size, other database types instead of SQL like mongodb or couchdb and newer toolsets like Node, Meteor, Go etc.

Summary

  1. Building a CMS is a great learning!
  2. Take your time for investigation before you even start.
  3. Check for existing CMS’s it is likely that they already do what you want.
  4. See if extending an existing CMS is an option.
  5. A CMS from scratch is still an option.
  6. A CMS is just a tool.

Next article will be about the ‘what’. There are a lot of misconceptions when it comes to what a system should do before it is named a CMS. For your preparation in building a custom CMS it is required that you know what you are going to build and where to build it for. Even more important: What should you focus on during the pre-build phase to save time and money? I would love to hear your opinion about when you think a custom CMS is a good option and what your definition for a CMS is! Also if you have any questions regarding this topic, don’t hesitate and ask! I will gladly help you out!

See you next time!

chris@afrogleap.com