I want to define a couple of important concepts before going into the detail of this topic.
What is a Content Management System (CMS)?
A CMS is a system that manages a website's content, without requiring any HTML knowledge, to link pages and to control how the pages look. A CMS makes it much easier for users to create, edit, and publish the content on a website.
What is the scope of the document that covers CMS?
CMS is available in commercial and Open Source licenses. It can be written using different languages such as PHP, Perl, ASP, JSP, etc. To help limit the scope of this document, I will only cover open source CMS that are written in PHP.
What is the definition of content?
Content can mean different things to different people. It can mean news, articles, Blogs, Wikis, forum posts, picture galleries, source codes, file managements for download, product for e-commerce and so on.
And finally... How do I choose the best Open Source CMS for me?
With my observations from the many people that visit opensourceCMS.com, the "How to choose an Open Source CMS" question is the most frequently asked, however there is no single simple answer! Below are my recommendations on the processes that I would normally use in selecting an Open Source CMS.
One of the most basic steps involved in a CMS selection effort is to determine your requirements. The following bullet points may assist you in the determination process.
- Content or Purpose: Defining the purpose of your content is just as important as defining the content itself. Is your content tailored for interaction, forums or for you to express yourself like Blogs and articles?
- Entry format: Content includes text, images, video; audio, XML, PDF, HTML, spreadsheets, etc.
- How should the content be stored: In flat files or in databases?
- Support: For open source projects, the community support is very important. How helpful is it? How active is it?
- Add-ons: There is rarely a CMS available that will match exactly what you need, so it is very important to have as many add-on options available for your chosen CMS as possible.
With the above understanding of your requirements, this is where the rubber hits the road, so to speak. The fun begins with some hands-on experimenting with Content Management Systems, and oodles of research.
opensourceCMS.com is the only site of its class that lets you play with a whole array of open source CMS with full administrator privileges before you do the installation on your own site. There are several categories of CMS at the site to choose from: Portal, Blogs, e-Commerce, Groupware, Forums, e-Learning, Image Galleries, Wiki, Lite and Miscellaneous.
As you are experimenting with different CMS packages you might notice each has its own strengths and weaknesses. Some might prefer PHP-Nuke style, some might like the Mambo way of managing articles using section and category, others might love the way Drupal uses the concept of Taxonomy to organize information amongst others like Wiki, Blogs etc. You will also find CMS like eZ Publish and Xaraya, which comes with choices of multiple personalities for you to choose when you do the install.
The most important thing is choosing a CMS package that fits the way you want to organize your content. It might take you a little bit of effort to learn how a particular CMS works. For example, when I started out learning about CMS I cut my teeth with PHP-NUKE and learned the way it organizes information using the concept of modules and blocks. I later learned about how insecure it is; our site was hacked and defaced a few times. So we set out to look for another CMS and found PHPWebSite; it looks very nice and it works similarly to PHP-NUKE but it didn't perform to our expectation on the version that we looked at, so we were forced to start our search again for another suitable CMS. This time we tried Mambo. Mambo does things different from PHP-NUKE and PHPWebSite. It took me a few weeks of reading forum posts, news, and articles to learn the way Mambo organizes things. Once we got the basics understanding of Mambo, we started customizing just as easy as PHP-NUKE, or even better!
Where should I begin? Read as much as you can on the forum posting of your particular chosen CMS at opensourceCMS.com or at the CMS project home site.
Comparison. You can visit CMSMatrix.com do a comparison on features of different CMS packages that you tentatively want to take a look at.
CMS Rating As I was doing research on different CMS packages, I figured that I would need some way to give me a starting point to determine where to start. That is when I decided to develop a dynamic list of CMS ratings based on visitors' ratings, voted for by visitors of opensourceCMS. I created a composite of all the ratings into a list sorted by category and by rating score in a descending order. You can find the CMS rating list here.
CMS top hits. One other tool that I use to help me decide on which CMS to choose is by looking at the hits statistics on a particular CMS demo at the opensourceCMS.com site. So I decided to develop a CMS Top Hits list. This list is a dynamic collection of the statistics of the daily hits counted by the visitors to the CMS demo. One other figure that I found very useful beside the hits count is the 'Ratio'. The Ratio is calculated based on this formula: Ratio = (number of hits) / (number of days since this CMS was listed at the site). By using this indicator all CMS has a fair chance comparing to other CMS that might be listed at the site for a longer time. You can find the CMS Top Hits list here
How about other kind of CMS? As I was studying the world of CMS I found that there are many CMS packages available out there on the net. Beside the usual category that you might find at opensourceCMS.com, there are: CMS Framework, KMS, Directory, Calendar, etc. There are too many to name here! You can find a collection of my research on different kinds of CMS from my site at OngETC.com
Is it secure? You might want to visit www.osvdb.org to see how much vulnerabilities your chosen CMS had and how quickly it was patched. You might not want to pick a particular CMS that it is particularly insecure.
Try again? You might have discovered that you sometimes have to abandon the CMS you have chosen for some reason(s) and go back to the hands-on point and try out a different CMS.
Next, decide what features and functions you would like to use on your site. The following questions might help you to decide:
- Do you want to store your content in flat files or databases?
- Will there be a need for an event calendar?
- Will there be a need for an upload/download area?
- What about an image gallery?
- How about a poll or survey tool?
- Will you be needing multi language support or translation function?
- How about WYSIWYG (What You See Is What You Get) editor for content?
- Is security and permission important to you? How do you want to set permission and assign access to your content?
Components and modules are "plug-ins" that typically provide add-ons to the core system. Sometimes there are presets of add-ons installed as a part of the base system and sometimes you will have to install them separately. This can vary greatly from one system to the next. More established systems like Mambo will have a lot of community support which translates to a wide variety of components, modules and plug-ins.
You will soon find out that some of the features you want, might not be available as part of the core or add-ons. You might have to buy a commercial add-on product, pay a 3rd party developer to do it for you or learn enough to develop your own.
It helps to list all the things you need and use that as your shopping list to test against and to experiment with. The key word here is experiment because that's the best way to understand how useful it might be.
Lastly, once you determine the base system and the add-on features to use, it is time to decide on how your site will look. Most systems utilize templates or skin and CSS (cascading style sheets) that allow you to tailor the look of your site. It's up to your imagination!
Even if you are not a graphic or template designer, there are many free or commercial templates that you can acquire and tailor to fit your taste. You can download these and add them to your site which can really give it a complete makeover. Some of the CMS have a "template chooser" that lets you pick different "skins" for your site.
In Summary, this article started out by defining 'what is a CMS?' 'What is the scope of this article?' 'How content definition could be differed in people mind?' 'How do you decide which CMS is best for you?'
We also looked at what criteria to use to define your requirements. With your tentative set of requirements, this article suggests where to go to do some hands-on experiments to gain more understanding about different choices of CMS, and how to fine tune or expand your criteria. We also shared a little of our experience when we went through the process of choosing a CMS.
Once you identify a CMS that you like, then it would be worth while to do a lot of reading regarding your choices, whether at opensourceCMS.com, or at the CMS project home site and any additional affiliate sites that you can find. You might consider doing a search on Google about your particular CMS to see what else you might find. The point is doing as much reading as you can afford!
With knowledge from all the reading you have done, it is time to decide on what additional feature-sets you want and find out whether it is available on the core system; pre-built plug-ins, and freely available open source or commercial plug-ins.
Finally you will need to decide on a template for your site. You might develop yourself, download some open source templates, or buy from a professional commercial template designer.
That should give a good overview of the whole lifecycle in choosing an open source CMS and give a brief glimpse into some things for consideration.
Now is the time to load your content to your site and ready for the debut to the world!
By Chanh Ong
Chanh Ong is a Computer Specialist. Chanh has many years experience in various computer platforms and operating system, programming languages, system administration, DBA and etc.