Drupal: a CMS for Major Projects
A High-Level CMS/CMF
Modular, interfaceable, extendable and flexible, Drupal consists of a basic core which can be extended through functional modules, or building blocks. Besides the starter modules provided with the standard release, developers have access to a well-stocked library of modules created and contributed by the Drupal community. Drupal’s architecture is reminiscent of Legos™: snap the interlocking bricks (modules) on the base (core) to build your own personalised structure. If you can’t find the perfect brick in the box, you just create it, either by adapting an existing brick or by starting from scratch, provided of course that you have some programming abilities. Drupal isn’t your standard Content Management System (CMS); it is a complete Content Management Framework (CMF) able to meet the most diverse needs. Further, Drupal excels in data storage and handling; this is in fact its greatest asset, which makes it ideally suited for complex projects. Indeed, its “taxonomies”, “vocabularies” and “terms” allow for elegant classification. Finally, the Database Abstraction Layer (DBAL) between the application and the database allows Drupal to interface with most databases.
Countless governments, organisations, universities and companies have adopted Drupal: Harvard University, The University of Chicago, Stanford University, Oxford University, MIT Media Lab, the White House, the Australian government, the State of New York, Tesla, Johnson & Johnson, Alcatel-Lucent, Cisco, Verizon, NBC, The Weather Channel, Al‑Jazeera, the NBA, The World Economic Forum, the Royal Mail, the City of London, the City of Los Angeles, to name but a few. Here in Canada, it is the choice of most Canadian universities, many government organisations, and the Société de transport de Montréal.
Major Muscle for Major Projects
While Drupal can do anything and everything, it is not your best choice for smaller sites, or even larger but straightforward sites, for which lighter, less complex solutions such as WordPress, Concrete 5, Processwire, or Expression Engine would be more than adequate. And though Drupal is free, it does require a substantial investment in terms of technical means (for hosting) and human resources (advanced programmer time). In short, Drupal, for all its power, is overkill for smaller projects.
Complex and Elitist
The flipside of Drupal’s versatility and power is its complexity. Anyone who has used it will tell you about its steep learning curve: it will take months, rather than days or weeks, as well as determination, to get comfortable with this platform. The first potential hurdle for developers is the fact that they must first become conversant with the philosophy of the application and language used by “drupalers”. Nodes, taxononomies, modules… it’s a world of its own. Next, they have to come to grips with a surfeit of possibilities, thanks to a complex, even overwhelming, API. Finally, they have to have solid technical skills: if you haven’t already worked with UN*X, shells and scripts, you might not be able to take advantage of the powerful drush (Drupal Dhell) administration tool. And the new Symfony 2 framework tacked on to the Drupal core has only made things even more interesting. In short, Drupal is not for beginners, unlike other, more common, universal solutions.
An Active Community
One of the great things about Drupal is its community, made up of active, high-level programmers. What other CMS has its own theme song, regularly performed on-stage across the world? (The Kitten Killers’ version is worth a look.)
An Evolving CMS
Thanks to its active community, Drupal is evolving and progressing quickly. Version 8, released in November, was groundbreaking. It included components of Symfony2, the framework PHP originally developed in France, allowing for modern object-oriented programming. It also gave up Drupal’s own PHPTemplate in favor of Twig, a more advanced and sophisticated template engine. Finally, it adopted standard formats such as YAML for configuration files.
The radical and innovative changes made with each new release (as was the case for Version 8), mean that the transition process from one version to the next is much tougher than with other, more conservative CMSs. Indeed, new versions truly are new.
Modulitis is a common affliction affecting many Drupal projects. It consists in piling on an excessive amount of modules to address simple issues that could have been solved much more economically. To come back to the LegoTM analogy, the higher the tower, the more likely it is to come crashing down. The right choice of modules is crucial to any project.
Performance and Scalability
Admittedly, Drupal is not at its best with its standard release. Requiring some forty SQL queries for a simple page when any other CMS would have needed ten or so, Drupal requires a robust server or database, a solid infrastructure, and extensive optimisation and caching (Varnish). Scaling is managed through distribution, as is the case for other applications (CDN or Reverse proxy). In terms of performance and entity cache granularity, version 8 is vastly improved.