In this second part in our series we will explore two often confusing terms CMS (Content Management System) and CMF (Content Management Framework) that are so often used to characterize rapid web applications technologies. And then we will look at what Drupal brings to the table as regards these concepts.
In my own formative years, when I came across these two terms for the first time, that would be while trying to learn the Zend Framework, I was a bit confused because I couldn't distill their essence to see their differences. The idea of a framework became clearer to me after I got to master the CodeIgniter framework as an easier alternative to the Zend Framework. At that point the picture of what comprises a CMF began to emerge, but then I couldn't extrapolate that to a CMS. I struggled to understand the difference between a system and a framework.
With a little more research I came to understand a CMS as a piece of packaged code that a non-developer can easily use to set up a simple content website. A popular example I came across was WordPress. As a programmer that didn't sound appealing to me, in fact, the idea of a CMS appeared very restrictive to me. As a result I never bothered finding out more about WordPress. I stuck to CodeIgniter believing it was the ultimate flexible rapid web applications technology. Some how Drupal slipped under my radar for some reasons I can't still put my fingers on.
With the growing understanding of what a CMS is, the picture of what CMF is became much clearer. While a CMS is an almost finished system ready to go in the hands of non-programmer, a CMF is a programmer-centric structured pieces of code from which a more competent developer can construct a more dynamic website or web application. While a CMS is easier to work with but rigid to extend, a CMF is much closer to the your raw PHP functionality thus making it more powerful but requiring a considerable programming knowledge to use.
From the descriptions above it is obvious that a CMF is just a few steps away from your reusable home-grown development framework. It usually offer a standard style of structuring your project, typically using the MVC architecture (Model, View, Controller), plus a set of general purpose functions so you don't have to keep re-inventing the wheel every time. Popular examples include Zend Framework, CodeIgniter, CakePHP, etc.
Drupal Place Clarified
Now that we know what constitutes a CMS and a CMF, and what their differences are, I guess it is time to ask exactly where Drupal fits in. Where CMS and CMF can be considered as occupying opposite ends of the rapid web applications technology spectrum, Drupal fits somewhere in-between. It takes the best of both ends combing them in a very powerful way.
In fact the features it took from both can be mixed and matched in so many fine-grained ways that it is difficult to tell where Drupal's CMS and CMF parts starts or stops.
Exactly what these characteristics and features of Drupal are and how they constitutes the selling points for Drupal will be the topics for the next episode of this series. So, look out for the third part: From Developer To Drupal Developer: The Drupal Way.
Meanwhile your comments are welcomed.