Drupal Down Under
I’ve finally had a chance to install Drupal and played around with it. Here I logged my thoughts.
Disclaimer: I’m still new at Drupal with putting about 10 hours in. And what you’ll see below is my impressions of Drupal and it could be a little incomplete.
I always compare Drupal with WordPress. And commonly this is Drupal and WordPress is often compared hand-to-hand. However, this is not a great comparison since WordPress is a content manage system while Drupal is termed as a content management framework. What does this mean? Here’s a link that would explain it better than I could.
WordPress vs. Drupal: Which Content Management System is Right For You?
So it appears that Drupal is the middle ground between using a platform like WordPress with a wealth of community of plugins, themes, support, etc..; to a build from the ground-up using a full-fledge PHP framework like Symphony, Laravel, and CodeIgnitor. (By the way, it was interesting that Drupal 8 is built using Symphony.)
Because Drupal 8 is the middle ground, it has many advantages similar to those found in WordPress like:
- a huge vibrant and passionate community
- tons of third party plugins (known as modules in Drupal)
- 1-click installs with an admin, default theme, default database tables and configurations
- custom post type and the way they work, both are organized through taxonomy
- editable regions called blocks (similar to widgets)
- easy to use menu system with a good admin interface
- nodes (post)
Here some great links on Drupal for those already familiar with WordPress:
A Guide for Drupal Developers Migrating to WordPress
5 things a WordPress developer should know about Drupal.
Why Drupal Developers Make x10 More than WordPress Developers
It’s 2017, Should I Choose Drupal Or WordPress?
Yet, it has many advantages similar to those found in a PHP framework like:
- Updates are handled similar to modern projects through a dependency manager, allowing for more control
- Drupal just seems to have smaller “lego” pieces allowing for more customization vs. WordPress’s larger “lego” pieces.
Which lead me down towards researching a bit more. When does a project warrant a content management framework or a full PHP framework? And here are some links that goes into that question.
CMS or PHP Framework: Which technology is better for my business?
A Framework or a CMS? What is better to choose?
Drupal or Symfony? An advice (dated)
Here is what Drupal’s directory looks like.
Drupal’s database structure…
My impression with Drupal is that it is definitely a developer’s CMS. I can see why it’s called a content management framework. As you can see from the Drupal’s directory listing, you’ll see some familiar files if you’ve worked with PHP Frameworks such as an autoloader, composer file, and vendor directory.
I like that there is a composer file for all the code dependencies. That alone provides the freedom to customize and update specific dependencies as needed. That is very powerful, especially developing enterprise level application. With WordPress, I think they are hidden away in wp-content. As of WordPress 4.8, I could not find any PHP dependencies, but I did find dependent JS and CSS files in their respective folders in wp-content. But with WordPress, when you upgrade, you just press a blue update button and everything is done for you automatically. That’s nice, but also bad at the same time from a lack of control perspective. Easy upgrading is nice, but it may not provide the level of precision you may want to have in creating an enterprise app.
In WordPress, a theme is configured by putting some lines of specific words at the top of your style.css. It must be named as such and also has to be stored at the root of the theme folder for it to be picked up by WordPress. If your theme uses third party libraries, you would let WordPress “know” about it via the functions.php file using wp_enueue_script. I feel that Drupal’s use of YML files is much more intuitive for these uses.
In the database, its quite apparent that Drupal’s database is quite large. While the bulk of the data in WordPress is typically kept in wp_posts, Drupal breaks up a lot of its data into various tables. Also you’ll notice right away at the number of cache tables. Yes, Drupal has caching right out of the box! That’s excellent in my opinion.
My thoughts is that if you’re already familiar with WordPress and a popular PHP Framework, putting more time to being an expert in those toolsets may pay better dividends than adding Drupal to your toolset. Now if you have the time to learn Drupal or there’s a business need to using Drupal, then yes learn Drupal. I believe as WordPress grows to be more feature rich with expanded APIs; that move would perhaps bridge the gap between a CMS and a PHP framework.
I get the impression that Drupal may be best for projects with self-contain mid-level complexity projects with limited or no exposure with outside systems and databases, mild amounts of complex customizations and best utilized when rapid prototyping is needed.