This is Part 2 of 2 of my Drupal vs Sitecore blog series. In the first part, I've compared the two from the perspectives of content authoring, marketing, and business. In this part, I look at the two platforms from an IT and community perspective. I also need to repeat my disclaimer that I'm a long-time Drupalist, but in this blog post I endeavor to be even-minded and objective.

IT Perspective

Information Technology (IT) covers a wide area of different disciplines. The IT disciplines discussed in this comparison are development, configuration, and nonfunctional considerations.

Development

This comparison further breaks down the development discipline into back end and front end development. Back end development refers to custom development done to change the functionality of an application, whereas front end development pertains to the look of the application -- colors, fonts, layout, etc.

Keeping in theme with Sitecore being friendly to Microsoft shops, the skills required to develop on top of Sitecore are proficiencies in languages in the .NET library, particularly C# and ASP.NET, along with HTML, CSS, and Javascript. Databases are typically Microsoft SQL Server or MySQL, and the web application server is IIS. Developing in Drupal also requires knowledge of HTML, CSS, and Javascript for front end development, and uses object-oriented PHP for the back end and MySQL as its typical database. Drupal typically, but not necessarily, runs on a LAMP stack, using Linux for its operating system and Apache for its web server. For Drupal back end development it's helpful to know the basics of the Symfony framework and the dependency injection design pattern. Also for Drupal, knowledge of Twig is required for theming, and knowledge of YAML is required for configuration of themes, modules, and distributions.

Back End Development

Every content management system needs a means of managing how content is stored, created, accessed, modified, and removed. Sitecore and Drupal store their content similarly, in back end databases.

Every Sitecore installation has at least three databases that are stored separately and have a predefined basic structure and individual content trees. They are the following:

  1. Core - Contains the data needed for running Sitecore and the .Net Membership Provider tables
  2. Master - Used for content authoring, this database contains all versions of all items
  3. Web - Used for the public website and is accessible to visitors. It contains only the last version of each published item. It is a subset of the Master database, optimized for faster performance and smaller size. Whenever content is published, the latest version is copied from the Master to the Web databases

Sitecore provides an API to read and write the above data, managed by an object-oriented framework. In Sitecore, data objects are hierarchically organized in a tree, similar to how files appear in an operating system. Some objects in the content tree represent site pages which can be accessed by visitors, others are not directly accessed and have their data used for other purposes (for instance, to fill the options in a dropdown). Sitecore’s framework is open, allowing third-party developers to write custom modules that can extend or override the core Sitecore to provide custom functionality. At this writing, the Sitecore community has produced approximately 800 such modules.

"At this writing, there are over a whopping 3200(!) open source, downloadable modules for the current version of Drupal alone" 

Like Sitecore, Drupal employs an object oriented framework, Symfony, to manage its data, but unlike Sitecore, Drupal typically uses one database for all of its data. Developers can extend Drupal through modules, which hook into Drupal's Router-Controller-View process, to extend or override the Drupal behavior. At this writing, there are over a whopping 3200(!) open source, downloadable modules for the current version of Drupal alone, and an even more whopping 20,000 modules available for the total of all versions. Project teams with a need to extend Drupal in a unique way are likely to find a module that already performs the extension for them.

Front End Development

For custom development for the front end, Sitecore renders content as a conventional .NET application would. Sitecore categorizes requests according to the client device, allowing for content to be rendered in different ways across different mediums, for example, desktop web, print, and mobile devices.

Layouts define the general structure of how a page is presented. Comparing this idea to .NET concepts, a Layout would be the equivalent of a master page. It is possible to define static portions, dynamic blocks modified in the code behind, as well as placeholders which will be filled with content at a later time. Every layout in Sitecore points to a .aspx file where all the usual programming is done using .NET. Each layout is comprised of sublayouts, which are like .NET user controls.

Drupal employs Twig for front end development, which is a template engine for PHP and is part of the Symfony framework. Twig is also the name used for the engine's compiled templating language. When a web page renders, the Twig engine takes the template and converts it into a 'compiled' PHP template The compilation is done once. Template files are cached for reuse and are recompiled on clearing the Twig cache. With Twig the developer can define regions, include CSS and Javascript files, subtheme an already-existing theme, pass in various kinds of attributes (including content), and easily manipulate images. Just like with modules, each theme uses a YAML file to provide metadata about the theme to Drupal. Examples of such metadata include theme name, theme description, which group of themes the theme belongs in (also known as "package"), Drupal core version that the theme is compatible with, and much more.

Configuration and Its Management

Configuration is the ability for developers and administrators to non-programmatically modify the behavior, not content, of the system. Examples of configuration include setting user permissions, defining content structures, and setting up taxonomies.

Most of Sitecore's data elements — content types, content, users, etc. — reside in its core, master, and web databases. As such, although Sitecore provides a GUI to manage all of those elements, they can also be managed programmatically or through direct SQL server commands. Sitecore’s GUI controls are far-reaching, and include content authoring and workflow, media management, taxonomy management, content grouping, search configuration, and much more. Sitecore provides sophisticated GUI control over its marketing and analytics functionality as well, as described in Part 1 of this blog series, Drupal vs. Sitecore Part 1 of 2.

Sitecore GUI
A very small piece of Sitecore’s GUI for managing data elements

Drupal's configuration resides in both its database and in dedicated configuration files. The database stores configuration for most of its functionality, including block management, content types, users, roles, permissions, menus, taxonomies, Views, module management, search, web services, workflow, and a great deal more. Further, database configuration can be managed from a few different endpoints, including the Drupal UI, Drush, and Drupal Console.

Dedicated YAML configuration files exist for modules, themes, and distributions. These configuration files are highly flexible. One can edit them based on one's needs, and the only restriction to editing is the YAML syntax and format itself. Developers can easily override configuration between development, test, and production environments allowing for differences between them.

Regarding hosting and deployment, Sitecore solutions are typically hosted by Microsoft Azure , a cloud-computing platform optimized for running Sitecore. Deploying from one environment to another involves packaging transferring various Sitecore resources in the form of DLL, HTML, and other source and binary files, along with configuration files, in the form of Sitecore Cargo Payload (SCCPL) packages and Web Deploy Packages (WDP). To aid in deployment to Azure, Sitecore comes with an Azure toolkit, comprised of ready-to-run command scripts, performance optimization tweaks, security features, and more.

"Drupal stores site configuration data in a consistent manner: everything from the list of enabled modules, through to content types, taxonomy vocabularies, fields, and views. " 

Drupal is hosting-service agnostic, deployable to any hosting service that supports PHP-based web applications. Drupal stores site configuration data in a consistent manner: everything from the list of enabled modules, through to content types, taxonomy vocabularies, fields, and views.Configuration is stored in Drupal's database and is exportable to YAML files, making it easy to move configuration between environments, for example, development, test, and production environments. The recipient environment can easily import the exported-to-file configuration from another environment.

Nonfunctional Considerations

The term “nonfunctional” pertains to any non-user-facing quality of an application that warrants the attention and planning of an IT staff, including security, performance, and scalability.

Regarding security, Sitecore allows for the creation of users and user roles with fine-grained access to any part of a site an administrator chooses. That is, an administrator can set up any user or user role to access any part of the site the administrator wishes. Sitecore’s multi-server environment offers up multiple points of vulnerability for security attacks. To fend off these attacks, Sitecore offers extensive documentation on hardening one's environment. For new attacks, clients need to coordinate with vendors to ensure security patches are installed as quickly as possible.

Like Sitecore, Drupal provides fine-grained access over what content can be created, modified, updated, and deleted, and by whom. More than this, Drupal is designed with security in mind, and the worldwide Drupal community supports a dedicated security team of approximately 40 people to ensure rapid response to issues. Adherence to Drupal’s coding standards also safeguards against security risks.

Sitecore faces a challenge in order to attain high performance and scalability, but the challenge can be overcome, as evidenced by its recent large-scale deployments. Sitecore has a typically large footprint, which in turn requires a large hosting infrastructure to handle it. To achieve high scalability, Sitecore's documentation recommends assigning separate servers for individual duties, e.g. content delivery, content management, processing/aggregation, reporting, and more.

"Drupal has proven itself as highly scalable with such sites as The Weather Channel, GE, and the Grammy Awards." 

Drupal, like Sitecore, stores its content in a database, but its architecture is smaller, allowing it to more easily run efficiently and fast. Moreover, a variety of hosting services are designed especially to run Drupal, further optimizing its performance and scalability. The Drupal community has written guidelines for managing performance and scalability, and indeed, Drupal has proven itself as highly scalable with such sites as The Weather Channel, GE, and the Grammy Awards.

Community Perspective

A big difference between Sitecore and Drupal is the nature of their developer communities. Though there are user forums for Sitecore developers to support one another, support is best delivered by the Sitecore company itself. In the past, some clients liked to know that there was  someone "at the other end of the phone" should something go wrong. However, at Mediacurrent, we're seeing less of this concern because of the now widespread acceptance and success of Drupal in the enterprise space. Further, because of the smaller size of Sitecore’s community, gaining access to qualified developers is more difficult.

In contrast, Drupal’s community is enormous, with over one million participants worldwide from all skills and backgrounds, having contributing thousands of modules implementing almost any functionality one might want.  With its depth and breadth of global engagement, Drupal is not going away anytime soon.

Drupal Community
Drupal’s enormous, thriving community ensures a top tier platform for years to come. From the Drupal Association

Another benefit of having a large community is that the project is constantly undergoing a vast peer review, with countless independent developers working on the project worldwide. Peer-reviewed, community-created patches are created for Drupal and its modules more rapidly than is typical of any proprietary application. The community also supports a dedicated Drupal security team to immediately respond to new threats to keep the project safe. Also importantly, the community's ethos of teamwork and volunteerism drives constant innovation, keeping Drupal on the vanguard of Web CMSs and keeping it likely to integrate with whatever new trending technologies emerge.

Finally, a word about the people themselves: those who would volunteer their time to contribute to the project tend to give of themselves in other areas of society as well, be it participating in their community or giving time and energy to nonprofits. That's a special group of people to be around.

Conclusion

I've compared Drupal and Sitecore from several perspectives, including content authoring, marketing, business, IT, and community. From a technical perspective, these solutions are similar at a high level, in that both store their content in databases, accessed and managed by a powerful, flexible, object-oriented framework. However, their differences are apparent as well. From both user and  development perspectives, Sitecore is friendly to Microsoft shops through and through, from its Windows-like user interfaces to its use of various .NET technologies. Sitecore places an emphasis on tight integration between its content management functionality and its excellent marketing/analytics functionality, whereas Drupal more evenly integrates with best-of-breed third party marketing/analytics solutions. Drupal’s smaller footprint makes it easier to perform and scale well. Drupal is free, whereas Sitecore has a substantial licensing cost and forces the buyer into vendor lock-in. A tremendous advantage for Drupal is its community, which provides almost any extension imaginable, provides instant mutual support, and immediately responds to any new security threat. Despite my Drupal bias, I hope this two-part blog post has compared these technologies in an even-minded way. I encourage the reader to explore and evaluate both of these further and to reach out to Mediacurrent when exploring Drupal particularly.