One of the first problems is that what one thinks is a CMS is not necessarily what others think it is. Yes, it is a Content Management System but that is less than a precise definition. Rather than try to refine the definition extensively, let me say the general goal is to just create a dynamic web site. Public, more than one person adding content and lots of people reading content. Not precise but at least it will get us closer to the same game.
Many years ago my friend Teran said "Use Drupal. It is always the right answer." From my diversions in the past, he was pretty close to right. But that was then and we are talking now. I happen to believe Drupal, while a fine CMS, is the right answer a smaller percentage of the time today.
That said, I have designed and built web sites with Drupal versions 4 through 7, Joomla, Django, Ocportal and have attempts with some other tools. I would not write off any of these tools but they are all different. Let me go through them alphabetically.
Django is a web framework, not a CMS. That said, it is extremely nice to work with for a number of reasons including that it is in Python rather than PHP. Beyond that, you don't even need to know Python (or SQL) to create sites with it. Its built-in Admin interface pretty much means you can have a non-geek adding data long before you have figured out how to present it. It is an amazing tool.
That's the good news. The bad news is that you have to design the way you want the data displayed and write templates and such. You have to write a menu system. And more. None of that is hard (at least in Django) but it may not be what you have in mind.
For a single-purpose site (that is, just presenting one kind of data rather than an assortment of forums, blogs, galleries and such) it is not a big deal. But, if you want something full-featured in terms of what most people call a CMS, it is a lot of work.
The good news is that there are systems built on top of Django which will get you closer. Here are three.
- Django CMS — This is a kit-form CMS. You select the pieces you want to activate and it all ends up magically integrated. From my experience it is a bit harder than just clicking but it does work.
- Merengue — Like Django CMS in concept but different in the approach. Unfortunately, it is still quite a bit of work to build what you want because it is all flexibility.
- Pinax — Pinax is not a CMS. It is a build tool. Thus, you tell it what you want and it puts together your site from an assortment of pieces. While this may sound the same as Django CMS or Merengue, it isn't. Trust me. Unfortunately, Pinax, while actively used, is in a confused state with the stable version very out of date.
The best way I can describe Django is that it is an investment. If you want to do something right that will remain easy to maintain, it is a great place to start. If, on the other hand, you want a new full-featured site up next week, forget it.
Drupal is what most think of as a CMS, written in PHP with thousands of add-ons. The version 4 to 5 to 6 progression was pretty much tacking on more and more to try to be everything to everyone. It got, well, pretty messy.
Drupal 7 is a serious repair job. Lots of the popular add-ons have been integrated into the main system and it has become easier to enhance that main system. Unfortunately, this cleanup also meant that lots of things had to change. To offer but one example, the photo gallery we use in NicaLiving is long gone. The tools are there to make something much better but also different.
If you are starting from scratch, Drupal 7 is a nice point to go with. It is very flexible and expandable and there are many free site templates available to make it easy to get the look you want. The hardest part will be sorting through all the available add-ons to figure out what you really need.
Joomla is my least favorite CMS. Each time I get serious about using it I figure out it was a mistake. I finally have an opinion of where it fits.
Joomla is more like glue. It, by itself, does some things but it depends on lots of other code to add functionality. Some of that code was written like the Drupal add-ons but lots of it are just stand-alone systems that are attached to the Joomla framework. The end result is that most sites end up as a collection of not really related software and the glue.
You then get to try to understand how an assortment of unrelated software works in order to understand how your site works. Each added piece can double the level of complexity.
So, where is it that I would consider Joomla? If I was going to build a whole bunch of sites that were functionally the same, it might be a good choice. For example, the Nicaraguan government has been doing web sites for the various government agencies. Virtually all are done using Joomla.
While I am a noobie to Ocportal, I have been very impressed so far. In fact, the new http://NicaPlaza.com is being built using it right now.
Unlike Joomla and Drupal, virtually all of what you see as Ocportal was developed by a small team. While there is nothing restricting you from creating your own add-ons, most of the time it just isn't necessary. It is built to be full-featured in a very open way.
By default, the site comes up with all too much stuff (as NicaPlaza) still has but it is easy to turn things off, change menus and layout and generally turn a site into what you are looking for. As well as the usual tools you expect such as blogs and forums, there are some very nice tools that can be customized to do lots of things for you with no programming involved.
The two tools I am talking about are called Catalogs and CEDI. They both offer a way to represent data in a hierarchy. Catalogs allow you to define a record structure (with no programming involved). You get a data entry form complete with some pre-defined fields for meta-data.
CEDI is for unstructured data. It is, it is much like a Wiki. The hierarchy and the meta-data are external to actual content sections but you are free to put whatever you want (including links to anything) within the content.
The biggest shortcoming of Osportal I see is the lack of documentation organized to get you from noobie to someone comfortable. There is a lot of documentation but it is mostly geek-written. A good manual or book written to get one started would solve this.
As I said in the beginning, there is no best CMS. Unlike five years ago, there are lots of interesting choices. The ones I have talked about are actually a small subset of what it out there.
Hopefully this article will help you pick something that best fits your abilities and needs. Doing a dynamic web site is not easy but picking the right tool can certainly help a lot.