Port your module to Drupal 9 to make me donate more to #DrupalCares

The #DrupalCares program is all around the Drupalsphere. Project lead Dries Buytaert broke the news on March 25th, that the Drupal Association needs our financial help to overcome challenges due to the COVID-19 pandemic. I almost immediately donated and if you have the financial means, I would suggest you do so as well. However this is a tough time for many, and even without COVID-19, unfortunately not everyone is financially privileged to have money to spare.

I am among the lucky ones who get to keep their job, already worked from home and can even support the Drupal Association financially. At the same time, my workdays are focused full speed ahead on preparing Drupal 9 for release (among many other people). And we definitely need contributed modules to come along soon. Updating modules for Drupal 9 is much easier than it was for previous major releases and most modules can still stay compatible with Drupal 8. So I decided to join the two and turn your updated modules into monetary donations to #DrupalCares as well! How? Here are the ground rules:

  • For any drupal.org project that already existed yesterday
  • If the project did not yet have a Drupal 9 compatible release yesterday
  • But you are making a Drupal 9 compatible release available in the next two weeks (until the end of April)
  • I'll donate €9 to the #DrupalCares fund.
  • Up to at most €900
  • At the end of April.

I'll make sure to send the donation before the end of April to participate in Dries and Vanessa Buytaert's fund matching.

While this will only be a drop in the ocean in the fundraising efforts, I hope it will allow those who don't have the financial privilege but have the time available and interest to learn updating projects to Drupal 9 to contribute their way as well. I previously built a tool at https://dev.acquia.com/drupal9/deprecation_status that allows you to review project readiness and find which project maintainers to work with, eg. ones that have a Drupal 9 plan and only need their info.yml files updated. Earlier today I published a video on using Upgrade Status to verify results locally and drupal-rector or Upgrade Rector to generate patches.

I'll monitor new project releases and keep you posted on how this is going!

Ready, set, go!

Upgrade Status April 2020 update and introducing Upgrade Rector

Upgrade Status is growing to be an almost (if not entirely) indispensable tool for Drupal 8 sites to asses and prepare for their upgrade to Drupal 9. With the latest additions of the Drupal core version and environment checklist as well as additional deprecation checking for Twig, deprecated libraries, deprecated theme functions, info.yml files and composer.json files, the results are much more complete. Unfortunately not all of those are possible in drupal-check due to Drupal not being bootstrapped there. With the addition of two drush commands though, this expanded set of results is available for the command line as well, including for CI system integration.

A relatively new development is Palantir's drupal-rector which is amazing at providing automated fixes for an increasing number of deprecated APIs. I also built a UI on top of that called Upgrade Rector to make it easier to propose fixes for your team's custom modules as well as your contributed modules. You should always keep the Drupal 9 plan of projects in mind, and contributed in accordance with their indicated Drupal 9 plan, which is well facilitated if you use Upgrade Rector within the Upgrade Status UI. Check out this demo video where I walk through the latest improvements:

I hope you find the tools useful and continue to contribute to both projects to help make the upgrade path to Drupal 9 even easier.

Four ways to track a list of Drupal issues a group of you cares about

Drupal 9.0.0-beta2 was released this week and there are only 63 days to go for Drupal 9.0.0's release. Many product developers, distribution authors and so on are now looking at what is left to be Drupal 9 compatible and which of their dependencies are doing what where. So effectively tracking a list of drupal.org issues somewhere is on many people's minds. While you can follow issues on drupal.org that only works for your personal needs. Actually Surabhi Gokte asked me yesterday about tools for group issue tracking, and I decided to write up a quick blog post because the answers are likely useful for many people. Here are two public and two possibly private ways to track drupal.org issues. I've used each in some form throughout my years with the project and you may find some of them useful.

Public: use a drupal.org META issue

Drupal.org project developers, this is a good way to track your tasks belonging to a larger goal like Drupal 9 compatibility. Create a regular drupal.org issue for your project and use the issue link filter. [#123456] is the format to use to link to issues and get their title and even status colors represented on your issue. The only thing you need to keep an eye on is that issue summaries are cached, so as the status/title of listed issues are updated, that is not reflected on the summary. As you are likely to adjust the list as things get done and new things are discovered, the status and titles of the listed issues should get updated in the meantime. An example of this technique is [META] Requirements for tagging Drupal 9.0.0-beta1. This technique allows anyone with a drupal.org account to help maintain your list of issues.

Once you have a META issue like this for Drupal 9 compatibility, please link it from your Drupal 9 plan on your project page, see:

Public: use Contrib Kanban

Contrib Kanban is a great service developed and ran by Matt Glaman of Centarro. You can register and create custom boards based on a list of issues, such as this kanban board for Umami's Spanish translation. Only you will be allowed to maintain your issue list but the results are shown very visually and dynamically in a kanban board style.

Public/Private: use any tool with the Drupal issue Chrome browser extension

Matthew Grasmick built the Drupal Issue Chrome browser extension which turns links to Drupal.org issues on any webpage to their colored and titled forms very much like in the META issue method. This will pull the data for issues live, but only people with the extension installed will see the titles and statuses. You can use this for private tracking or public tracking. We use it at Acquia to track some drupal.org issues through Jira tickets.

Public/Private: use a scripted spreadsheet

This method could work in any scriptable spreadsheet system. We used it extensively at Acquia with Google sheets and I believe it originates from Andrea Soper (ZenDoodles) and Jess (xjm) from several years ago. Set it up like this:

  1. Assuming an empty spreadsheet, designate a column for issue numbers. You will use this column to enter the ID of issues you want to track. Let's assume this is column E for the rest of the example. Also let's assume you use the first row for header text for the columns.
  2. Add this to F2: =IF(E2="","", regexreplace(importxml(hyperlink( concat("https://www.drupal.org/node/", E2)), "//*[@id='block-project-issue-issue-metadata']/div/div/div/div/div/text()"), "\n","")). This column will be your issue status.
  3. Add this to G2: =if(E2="","", hyperlink( concat("http://www.drupal.org/node/",E2),concat("#",E2))). This will be your issue link.
  4. Add this to H2: =if(E2="","", substitute(regexreplace(importxml(hyperlink( concat("https://www.drupal.org/node/", E2)), "//title/text()"),"\n",""), " | Drupal.org","")). This will be your issue title.

At least in Google sheets, you can hold-drag these values to fill in the rest of columns F-H with appropriate computed values. You can also apply conditional styling to status values, etc. A clear benefit of this approach is that you can assign tabular metadata to issues, like your private severity or priority information or assignments within your company as to who is planning to look into it without getting into a priority argument on the issue.

By the way it would definitely be more reliable to pull this data from the Drupal.org REST API. We used this method extensively for years at Acquia to track high priority issues leading up to Drupal core releases. However we are not currently using this method and I did not go to convert the logic from our old sheets, so improvements welcome.

These are methods I used that are still available and work fine. Do you have better ways to do issue list tracking? Let me know in the comments.

Join us at the free virtual MidCamp this week to learn about and improve Drupal 9

I heard a lot of good things about Midwest Drupal Camp (MidCamp) throughout the years. I also had the chance to follow Avi Schwab sharing best practices from it at various events. It is one of the real model events. I never had a chance to attend unfortunately.

In 2020, due to the ongoing pandemic, they did not have the opportunity to run the camp as usual. While that is sad, they decided to turn it around entirely and made MidCamp all digital and free to attend. This means you and I can attend finally and not just admire the event from afar! Let's do that! There is no registration or tickets required anymore, so sign up for details via email, or keep up on the site.

MidCamp - No ticket or registration required

Great Drupal 9 content

While there are lots of great sessions to participate in, I am really excited about the Drupal 9 content. Presentations will be streamed over Zoom with links being provided later in the week.

Let's get contributing

Following sessions on Thursday and Friday, there will be a virtual contribution day on Saturday from 3pm to 9pm UTC. I am really excited about these three contribution topics and would love to see you join in them! I will swap a workday out this week with Saturday to participate in this event and still have personal time for my family while they all stay at home due to the pandemic.

Olivero theme screenshot

  • Working on automation rules to fix deprecation issues in Drupal 8 projects. This is the practical application of Dan Montgomery's session. Dan and Ofer Shaal will be available and lead this topic. Rector saves a lot of manual work by automating code upgrades from Drupal 8 to Drupal 9. The immediate goal is to create Rector rules for the 15 most popular deprecations. Those 15 rules will cover 50% of all Drupal deprecations so a lot less manual work would be needed!
  • Work on contributed project Drupal 9 compatibility. Applying the above tooling combined with manual work to make contributed projects compatible with Drupal 9. Mike Lutz will be leading this topic. I would also love to help anyone interested. I maintain the overview of contributed project readiness on dev.acquia.com (thanks for the source data to the Drupal Association), which can be used to find what to work on effectively.
  • Improve the proposed new Drupal 9 default frontend theme Olivero. Various members of the team will be available to work on outstanding issues for the proposed new Olivero frontend theme. Putra Bonaccorsi, Aubrey Sambor and Brian Perry indicated they would be there.

Contribution will be coordinated on Slack I believe, more information to come later this week. Sign up for details via email, or keep up on the site. See you (virtually) there!

A whole new version of the open source "State of Drupal 9" slideshow, present it yourself!

Ten months ago I created the first version of "State of Drupal 9" and published it as an open source slideshow for anyone to review and present. It has been presented by myself and various other people since then. I kept it up to date and I got lots of feedback to improve it. Since we are closing in on the Drupal 9.0.0-beta1 release where milestone dates are better defined and the release itself is quite close, I decided to rework the whole slideshow with a more practical approach in mind focusing first on what happens to Drupal 7 and outlining the concrete practical upgrade paths for what people should do coming from Drupal 8.

I was slated to present this new version of it at DrupalCamp London, DevDays Ghent and DrupalCon Minneapolis (with Amber Himes Matz). Due to the ongoing pandemic I did not attend DrupalCamp London anymore and further events are being gradually cancelled or postponed. So I don't know if I or someone else will have a chance to present this in person anytime soon. (Which I think is for the better of our health). However, you can still review the content yourself and present it virtually on a remote Drupal meetup or conference or at your virtual company meeting. I did present the slides for DrupalCamp London remotely myself and the camp made the recording kindly available:

I added plenty of speaker notes. You can present/review it from https://slides.com/gaborhojtsy/state-of-drupal9 or fork it (even with a free slides.com registration) and replace the "About me" slide as well as the opening and closing thanks slide with your attribution. Please keep the rest of the attribution intact. Instructions are in the slides.

I'll keep this version updated from now on and archived the old version with a note pointing to this.