I'm going to create a web-based content management system for work. Before I start, what should I consider when designing and implementing my own CMS website?
views:
508answers:
10Why do you want to reinvent the wheel?
Isn't there a CMS that fits your needs?
If you really want to develope something new, have a look at their designs.
Creating an universal "one size fits all" CMS is next to impossible. Peoples' requirements vary wildly, and versatility inevitably decreases usability. I suggest making a good custom CMS for some particular purpose, instead of trying to do all-in-one tool (there are already plenty of them, or at least attempts...)
As for the "why reinvent the wheel?" comments - one very valid reason is to create something custom. A tool (CMS) that fits a particular purpose can be stabler, lighter, easier to use, more secure and simply better, that some generic tool. Besides, making one can be lots of fun!
Unless you have very specific requirements such as integration with an existing or legacy system you would serve yourself and your employer best by using an off the shelf CMS. Many of the leading CMS engines support plugins, ad-ons or modules which you can use to integrate your existing busines applications into. All but the simplest CMS support templating so you can modify the look and feel to match other sites from the supplier.
I answered a similar question here:
I think from a developer's perspective it would be an open modular architecture. IMHO there are always things to add which the CMS platform isn't providing out of the box. Existing modules should cover the most important tasks: news, contacts, documents, forums, shop, survey, events, image gallery, navigation, links, fulltext-search, login, newsletter, etc. Also, it should be database-based.
From the user's perspective I think that the content editor (WYSIWYG) is the most important piece. The ability to edit inside the "live" page is a great feature. Upload of images with automated resizing and the upload of files should be easy.
The existence of page/control and website templates is also very helpful when you're starting with a CMS. Versioning of documents/pages is also a often required feature and a work-flow engine, where there are authors who create content and editors who are allowed to unlock it.
RSS syndication is another important feature that should be available in a modern CMS.
For international site it very important that the CMS had some sort of built-in multi-lingual support.
Then I think a good CMS nowadays must provide tools for Search Enginge Optimization, e.g. there must be a way to define and insert search engine friendly URLs.
There s a recent blog post from Smashing Magazine that definitely hits all of the key CMS features. If you're looking for a definitive high-level list of CMS characteristics I think this is about as good as it gets.
Of course no CMS hits all 10 of these perfectly, but these are very valuable things to think through whether your picking one or building one from scratch.
Smashing Magazine - 10 Things to Consider When Choosing the Perfect CMS *
- Core Functionality (page management)
- The editor (WYSIWYG editor)
- Managing assets (files)
- Search (site search)
- Customization (presentation, themes, skinning)
- User Interaction (extensions, modules)
- Roles and permissions
- Versioning (tracking changes to content)
- Multiple website support (portals)
- Multilingual support (localization)
I'll also make a point (or agree with the others who've answered similarly) that the main reason to use a web framework/CMS is because you don't want to re-invent the wheel - so you may not want to re-invent the CMS wheel either :)
Note: the * above means that the contents of the parenthesis are mine and not part of the original article.
I would totally research existing CMS's, pick 3 to 5 of the ones suitable for the environment (MSSQL/MySQL? ASP/PHP?), then install each one, try to throw a basic skeleton of the site together on each of them, see what modules already exist and try to code a small custom module for it on your own. Then pick the one you found the most convenient.
Honestly, writing your own CMS is too time consuming, trust me, I tried. You want to find a solution that fits these:
1) your coders can extend it 2) your graphics people can easily apply styles to it 3) your users/editors can easily add content
(Unless you get paid for trying to code your own system from the scratch and use it as a learning experience for yourself. I can understand that. And feel sorry for the users ;)
What you need is not so much a CMS, as a web development platform. May CMS-es try to do that, too. I'm don't know how many of them succeed. For me, the biggest advantage of a CMS has always been the flexibility it gives you as a developer. You should be able to plug in easily and add custom solutions for your custom problems.
If you are positive that you need a custom implementation, then you should be aware why. For me, dealing with page construction and creation is not something that would provide an incentive for writing a whole CMS yourself. Things that I would want to do myself, rather than rely on 3rd parties are:
- logging, stats
- web services
- low-level metadata management (keywords, SEO-related)
For everything else, i would rather find a ready solution.
I am biased so I'll skip my recommendation, but if the CMS provides a framework for you, I don't think it is worth the effort to write everything from scratch. Sometimes, an extensible wrapper for the technology you are developing with is the best solution.
You may find some useful points in this post...
Though this deals with asp.net mvc, but the features are as important for any lanaguage or platform.
What should you consider? I suppose that you are talking about WCMS for creating sites.
First consider the target audience and the type of sites you will build with your new WCMS. From that you will know what basic features the CMS users will need...
Consider only must-have features and forget about all other possible features! There are countless features and these will only distract you from focusing on the right system design...
Designing CMS is quite complex task that will lead you through many problem domains ranging from DB, server configuration, HTML, CSS ... to AJAX. You need to know little (better more) of all.
Remember that the most likely the target audience will include experienced designers and unexperienced content editors.
This will require you to become a guru in CSS/HTML to be able to show helping hand to profi designers. If you are not then find some experienced designer for consultations! (I mean it because you are building tools for designers = you must known their job better then most of them). Template system that does extend designer's capabilities (not limits them) is very important to CMS!
I am author of 3 CMS systems - 2 of them still actively developed, one is enterprise-level WCMS and has over 60 modules used by many fortune 500 companies, other one is my hobby project where I can test really revolutionary approaches that you cannot dare in enterprise-level environment... I have lot of experience in that area and I would like to warn you that developing the CMS from the scratch is very painful and lengthy process (especially if it is terra nova for you) and you must be prepared that it is almost impossible to do it right for the first time.
If this is really critical for you employer then don't risk it. If your employer can spare some time developing CMS with difficult to predict result, go for it, you will learn so much that you personally will never regret it!