A CMS, shorts for Content Management System is a web application that makes it easier to create, edit and publish content on a web site. The features of a CMS system vary, they also take care of a lot of behind the scenes work such as:
Automatically generate navigation elements,
Making content searchable and indexable,
Keeping track of users, their permissions and security settings,
And much, much more...
But using a CMS to develop a website can not only greatly reduce the cost to develop the website, but the amount of time required to develop a website as well. Using a CMS will enable the website layout to be quickly designed and applied to the entire website. Content can be dynamically loaded it and created either by dedicated site authors or outsourced. Using a CMS to develop a website will not only ensure a quick initial launch, but will also ensure the website is easy to manage and modify in the future, ensuring easy and cost-effective management throughout the life of the project.
You can update your website on your own terms,
No HTML knowledge needed,
Redesigning your website won't require a complete site overhaul,
Access the most up-to-date web functionality,
Manage your entire internet marketing strategy under one roof.
Performance: Even the best CMS will always be slower than a simple html website,
SEO: While some CMS have made enormous progress, flexibility for SEO is not complete,
Flexibility: The CMS allows you to do many things ... but not everything,
Maintenance and stability: A CMS is a complex program, which is likely to experience failures,
Migration: A site under CMS is more complicated to migrate than a simple classic website.
Why build a CMS?
With all the debate going back and forth on which is the best CMS, I'd like to take some time to explain why I choose to write my own. I realised many years ago when I tried to create some websites, to do this I needed to take a lot of times to create an entire website with the same root, it's getting too big and too complex, so I needed a CMS to simplify the maintainability. After testing a lot of CMS, I realised that I needed to create my own.
Why I Chose To Write My Own
A lots of free CMS already exists so why do I want to build another ?
Building a CMS is something rather complex, I don't want to reinvent the wheel, this is why I thought about it several times before embarking on a such project. But the first and clearest reason why I chose to write my own, is that I had a very specific idea of what it should do, and how it should work.
For example, I wanted to create a CMS with the last features of the main language (here PHP), with beautiful code and with a lot of comments to create a friendly coded CMS, easily maintainable by everyone.
The Benefits of Writing Your Own
This is one of those cases where small things have a big impact. Frankly, there aren't that many benefits to writing my own CMS, but those that there are, are very significant. The reasons I chose to write my own can all be summarized in a single benefit, that writing a custom solution means I can have exactly the system I want, that does everything I want it to and nothing that I don’t.
And when it comes to actually using the system on a day-to-day basis, writing my own means there’s no additional learning curve. I already know every in-and-out of how my admin interface works, because I wrote it to be intuitive to me. The same is true for updating and improving the system itself, and if I need to add new features later or change the way something works, I’ll already know exactly where to add or change the code.
The Drawbacks of Writing Your Own
There's a flip-side to the security benefit, which is that a self-written CMS can still be the victim of a security exploit, in fact it’s more likely to be.
More likely because the major cause of all security flaws is programming errors.
There might be bugs in my code that expose security holes, and I don’t have the benefit of a community of people looking over the code, making improvements, helping to isolate and remove such potential problems.
Community in general is a very strong reason to favor an existing CMS. Whatever I want my CMS to do, I’ll have to write myself, and there might come a time when that in itself becomes a practical issue.
Maybe I just won't have the time to add the feature I need, something I could have solved in half a day with a WordPress plugin.
Even a simple CMS takes a very long time to build. I knew it would never be a trivial task, but I didn't predict at the start just how much of my time would be spent writing admin functions.
With hindsight, it should have been obvious, that building the admin tools would be (and was) about 90% of the work. On and off, this system has taken me half the year to develop, and I’d be lying if I said I was thoroughly motivated for all that time!