drupal planet

Did breaking backwards compatibility kill Drupal?

First of all, Drupal is not dead. But I would argue it's not in healthy place relative to competing projects as it was in its heyday, in the early 2010s.

In this blog post, I will explore the problem the Drupal community finds itself in five years after a major release that broke backwards compatibility in almost every subsystem, forcing a laborious upgrade process and process shift that left many users in the dust.

I've written about this in the past, most famously in my post Drupal 8 successes and failures. I'm not going to rehash the details from that post, but I did want to focus on what I think is the primary reason for this graph's downward trajectory since 2016:

Usage Statistics for Drupal Core from 2013 to 2020

Drupal VM 6 'Rectifier' is here!

Drupal VM logo and teaser text

I just released Drupal VM 6.0.0 today, and it is the best version of Drupal VM yet!

The main goals for this new version are stability and compatibility.

Originally I was going to drop some features that are helpful for people running older Drupal 7 sites, but since Drupal 7's End of Life was just extended into 2022, I decided to extend the support for some features like Drush make files, as many users of Drupal VM still maintain Drupal 7 sites, or use Drupal VM to test the upgrade from Drupal 7 to Drupal 8 or 9.

The default PHP version was upgraded from PHP 7.2 to 7.4 in Drupal VM 6, and this new version should work great with almost any Drupal 7, 8, or 9 website (in fact, PHP 7.3 is Drupal 9's minimum requirement!).

Watch out if composer update keeps replacing a dependency

Recently, while working on the codebase for this very site, I tried running composer update to upgrade from Drupal 8.8.4 to 8.8.5. Apparently I did this at just the wrong time, as there was an issue with Drupal's dependencies in 8.9.x-dev which caused it to be selected as the upgrade candidate, and the default drupal/core-recommended Composer setting was to allow dev stability, so my site got updated to 8.9.x-dev, which was a bit of a surprise.

"No worries," I thought, "I use git, so I'm protected!" A git reset later, then change my composer.json to use "minimum-stability": "stable", and all is well with the world, right?

Well, no. You see, the problem is Drupal 8.9.x changed from an abandoned package, zendframework/zend-diactoros, to a new package, laminas/laminas-diactoros, that replaces the abandoned package.

The FINAL Drupal 7 to 8 migration live stream - May 19

May 19 Update: It was a total success, yay! This site is now running Drupal 8.

Drupal 7 to Drupal 8 live migration - FINAL EPISODE May 19 at 11 am ET

Over 100 days in, the big day has finally arrived—it's time to upgrade this website from Drupal 7 to Drupal 8! The entire process has been documented, one hour at a time, in my 'Drupal 7 to 8' live streams. Visit that link to view all the previous episodes, from setting up a new Drupal codebase, to running the first test drush migrate-upgrade command, to upgrading this site's theme from PHPtemplate in Drupal 7 to Twig in Drupal 8.

Some of the highlights:

2020 Drupal Local Development Survey Results

tl;dr: Video from CMS Philly presentation, Slides from the presentation, and scroll down to see graphs of particular interest to Drupal developers.

On May 1st, Chris Urban and I presented 2020 Developer Tool Survey Results at CMS Philly. For the past few years, we've run an annual Drupal Dev Tool Survey (2019, 2018) and presented the results at DrupalCon and some local Drupal Camps.

Since DrupalCon went virtual this year, and Chris was helping make CMS Philly virtual, he suggested I join him at that conference and reveal the results at this session.

'Drupal 7 to 8 Migration' presentation from CMS Philly

I just finished delivering my CMS Philly How I am migrating JeffGeerling.com from Drupal 7 to Drupal 8 presentation, which summarizes the first 100 days (1-2 hours per week) migrating this website from D7 to D8.

.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }

The slides are available from SlideShare:

End of April - #DrupalCares pledge matched, $3000 total raised!

.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }

At the beginning of April, the Drupal Association announced a new #DrupalCares campaign to secure funding to keep the Association's lights on after DrupalCon Minneapolis was mothballed due to certain global events.

Very quickly, many in the Drupal community stepped up, increasing contributions, making one-time donations, or even pledging a generous 2-for-1 match. I decided to pledge $1 for every like on this video, and as of today, it had over 800 likes!

Presenting on Drupal Dev Environments and Migrations at CMS Philly on May 1st

Friend and former colleague Chris Urban and I will be presenting the results of the 2020 Drupal Local Development Survey at CMS Philly—which is now a virtual event—on May 1st. You can find more information about the session here: 2020 Developer Tool Survey Results. I'll also be posting the survey results on this blog soon after.

Chris also coaxed me into talking about my ongoing Drupal 7 to 8 migration saga in a separate session, so if you've missed the first 13 live stream episodes, check out the session How I'm migrating JeffGeerling.com from Drupal 7 to Drupal 8 to get caught up—then subscribe to my YouTube channel to see how it all ends 🤪.

It remains to be seen whether Chris and I will be wearing Hawaiian shirts during the session:

Donating $1 per like (matched to $3) to the Drupal Association

.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }

Like many of you, my life has changed because of open source software. Drupal, in particular, is the first open source project I became deeply involved in, and my income from Drupal work has supported my family for years.

I've attended local Drupal Camps, many DrupalCons, and even worked for a few great Drupal companies. The Drupal Association has been a major part of sustaining the Drupal community for many years, and due to COVID-19, they're struggling financially this year.

They rely heavily on DrupalCon revenue, and they use those funds to maintain and grow drupal.org, market Drupal, and support community events.

Install Drupal Coder and PHP CodeSniffer to your Drupal project to lint PHP code

In the official Coder Sniffer install guide on Drupal.org, it recommends installing Coder and the Drupal code sniffs globally using the command:

composer global require drupal/coder

I don't particularly like doing that, because I try to encapsulate all project requirements within that project, especially since I'm often working on numerous projects, some on different versions of PHP or Drupal, and installing things globally can cause things to break.

So instead, I've done the following (see this issue) for my new JeffGeerling.com Drupal 8 site codebase (in case you haven't seen, I'm live-streaming the entire migration process!):