Content Management System Depate
Content Management System debate will never end any time soon. Every CMS user see that they are using the best CMS, no matter the facts are. I am not an exception to that also, but at least I have used more than one cms, and I am trying as much as I can to be a cms agnostic. I have used the major three PHP CMSs out there, Joomla, Drupal, WordPress in that arrangement. In this article I tell you my story and my personal experience in this area, also I will try to list my own notes about the three CMSs (Remember this is my own list & opinion).
First Things First
Joomla
The first time I heared about the word CMS (not the exact term but the meaning), i was shocked. I have never heared about such a thing that will let you build your website without any coding (that’s what i was told, and it is both true and false). Back then the only way to build your website without coding was some static website builders, they were very poor, and didn’t meet my website requirements (a classified ad. website),
I went home very fast to search about this concept (remeber i was told about the concept only, not the CMS term). I used google and tried a lot of search phrases like Dynamic website builder, Build Dynamic Websites, and some more generic searches, and I came across Joomla website. After reading a lot of information on their website, i wanted badly to try this revolutionary concept. I have downloaded Joomla v1.0, and started to read about the installation & creating my first website. The documents were very poor (and still), but I managed to setup a working localhost installation website.
Creating and managing my first dynamic website was unforgetable experience. After I have finished my website on my local server, i wanted to move it to the online space. I went to bluehost and bought my domain name, and a hosting package. Quickly i have installed Joomla again, but this time I coudn’t migrate my website from my localhost to my new live server. My friend (the one who told me about CMS) told me that you can’t migrate it, you will have to build it again from scratch (he was using Drupal by the way).
After i and my wife have built it again from the scratch (she helped me a lot), i discovered that I love building websites, and thought about working in websites building. I thought that I can build any website with Joomla without any coding knowledge.
I started to build a number of sub-domains, and building any website was taking about 2-3 months. I was building them without any technical/code knowledge, to the degree that whenever one of my websites have any PHP error (whether it is easy, or hard to solve the issue), i rebuild the entire website from scratch. I knew nothing about any code (other than some basic HTML tags).
After some time i was asked to build a website for one of my friends for fun only, i thought i should learn PHP and change my career into building websites, i have learned some basic PHP code, and installed Joomla again for the first time. This time i created that website in one month only. I have solved lots of PHP errors, and learning how to backup my site. In short, I have become an experienced Joomla user, and i am using it till now (v3.1 is the latest version I have used) beside the other two CMSs.
Joomla from my experience
From my experience, Joomla is a very powerful, easy to use CMS. It can be extended very easily, modular CMS, have a huge list of useful extensions, and can create any website (yes any website whatever it’s complexity), but (Yes there is always a BUT).
New Joomla users will have a very hard way learning using the system, solving problems, and issues. Joomla documentations are very poor. You will be forced to search the entire internet a lot. Joomla is very slow, with a lot of less than optimized database queries. The Page cycle of Joomla is very complex that can be very slow on multi thousand articles/users websites.
JavaScript and jQuery will always remain a big problem in Joomla. You will find some strange js related errors, mostly due to 3rd party extensions (again to the extensions not working nicely together problem), and you will waste a lot of your valuable time debugging and solving JS issues, and you will mostly fail to have even 97% clean JavaScript setup.
Joomla system has some serious issues with 3rd party extensions (with few exceptions), not in functionality, infact it will work very well with any 3rd party extension (most of them), but rather in allowing any extension to use the system as if it is alone there. Extensions always interfere, they aren’t integrated at all. It took me very long time to integrate a membership extension with an eCommerce extension, and a forum extension.
Joomla Php Code Mess
I have made this special section for this special subject, before I continue listing my experience with Joomla from v1 to v3.2, i want to tell you what is my web development experience right now. I have worked with PHP & Mysql for more than 7 years, have used almost all pobular Php frameworks, have a very good experience in Object Oriented Programming & Design Patterns, but badly my english isn’t so good (doesm’t have anything with web development, but I wanted you to not judge me from my english writting skills). With that said, i have never seen any Php code like Joomla, Yes i love OOP & Design Patterns, but for sometimes they can negatively affect your project if your project doesn’t need such architecture.
Joomla system uses OOP & Design Patterns extensively,somtimes they do so for no other reason than writting object oriented code, and design patterns only!!!!!. OOP has a lot of levels, and you must apply the right level for any given task. Simple tasks in Joomla that can be done with an easy to use/understand OOP, are written in a very very hard style, even experinced OOP developers can lose there ways easily. Take component development as an example, before you start coding, you must do some nonsense work, from using the strict and uncomfortable naming conventions, to creating a lot of dumb files that will do nothing other than allowing you to start your component development!!!!. Why wasting time and resources???
WordPress on the other hand handle this task quite easily (will get to that in details later), name your plugin as you see fit, write 5 lines of code at the beginning of your main plugin file (any file name will work perfectly), and you are ready to go. Your plugin caused any problem?? well, just delete it’s folder and your site is working perfectly again.
How many times your website gets broken just by installing an extension???!!!!, Did you notice how any extension can cause a great mess in your database, which may leave you with one option only, Restore an old backup!!!!!!
Drupal: Users fear you!!!
Now to my second cms in my little experience, Drupal. After using Joomla for some time, i wanted to try other CMSs, and I wanted to test the most advanced one (Drupal), WordPress was out of my equation, because it was popular as a blogging system only. I went to Drupal website, and grabbed the latest version (can’t remember what was the version), installed it, and went to the admin area without reading any documentation, i thought I wouldn’t read any, as I am an experienced Joomla user, but I was totally wrong. The admin area was full of new terms, and words like nodes, taxonemies, modules (equivilant to Joomla extensions).
My Drupal website with very simple out of the box, i found one menu item, and 1 paragraph on it!!!. That was a big shock for me. I realized that this isn’t a normal CMS, it is much like a framework with some CMS features, where all you have is a strong base that you can build any type of sites on top of it. I began to learn how to build websites with Drupal, and have built some, but i didn’t have much time to learn anything new, so after 6 months, i went back to my well-knows Joomla CMS.
Drupal from my experience
Drupal is a very solid CMS/framework, it is very stable, fast, and optimized. You can build about anything on top of it, without having useless features that may slow your site down. You will have your project requirements only, because you are building your project nearly from scratch, not like Joomla, so you are in control.
Drupal code is clean, and optimized. I think it is the most optimal code, without too much of unneeded complexity.
The downside of Drupal is if you want a ready to publish website you can go either Joomla, or WordPress. If you want a strong, solid base that you can build anything on top of it yourself, go with Drupal. Drupal admin area has some terms, that may make new users feel uncomfortable, i think Drupal can replace these terms with something more friendly, specially the concepts behind these terms are very simple.
WordPress from experience
Now to the latest part of my little CMS story, WordPress. I have never get excited to try WordPress because it was popular as a blogging system, but since 2010/2011, i have came across too many great websites, and by looking at the source code, i was shocked when I found that 90% of the well designed websites where WordPress!!!!. I said that I will try this CMS, whatever others are saying about it. and when I first installed it, it was very basic, didn’t have much features. I decided to leave it without ever looking back. One day I have found a wonderful WordPress theme, it was the reason I tried WordPress one more time, but this time i told myself that I must use WordPress as if it is the only CMS, so that I can spend more time with it.
After my second WordPress installation, io realized that I (and most people) was wrong. WordPress can easily build my clients’ type of websites, 98% of my clients just want a website to represent their services, and a blog section. I have built a lot of websites with WordPress, and they are fine. In fact, I am using WordPress now as my primary CMS choice, unless the project is very complex.
WordPress is a great CMS, easy to use (for my clients), fast, can be extended. It has the most fantastic themes out of the 3 CMSs (because of it’s market share). WordPress code is very easy that any new PHP developer can use, and extend, but sometimes you may need more solid/advanced code.
WordPress uses procedural code, which is fine for new developers, but can be very limited to the more experienced ones. You can extend WordPress in many ways, but for some complex projects, you may need to consider one of the other CMSs.
WordPress has been known to be insecure, and this is true. I found myself forced to change the entire file structure for more security, which make the auto updates an impossible task, but i can live with that.
Now my final conclusion:
WordPress is very good for any small-medium website (which represent about 90% of the internet websites, so you can use it in almost 90% of your projects.
Joomla is very good for medium websites, you will have a lot of features out of the box, which may cause some side effects if you don’t need any of these features, and editing the system requires a lot of time, and work.
Drupal is very good for complex websites only, you will have the minimum amount of features out of the box. but it may replace some of frameworks out there. if you came across any projects that can’t be done without PHP frameworks, you would better use Drupal as it will save you a lot of time.