Planet Drupal

Syndicate content - aggregated feeds in category Planet Drupal
Updated: 6 hours 3 min ago

Tag1 Consulting: On 20 years of Drupal - an interview with Michael Meyers

Fri, 02/19/2021 - 17:54

Tag1 Managing Director Michael Meyers has been a face in front of the Drupal community for over 16 years. His enthusiasm, willingness to talk with everyone in the community about the challenges they face, and readiness to meet those challenges - from his own companies or the companies he works for, have been a force in Drupal. In this installment of our 20 years of Drupal series, Tag1 Principal Technical Writer Lynette Miles gives Michael the opportunity to talk about his experiences from business the early days of Drupal, and today. ## Additional Link: Video: The Drupal Song For a transcript of this video, see Transcript: 20 years of Drupal - Michael Meyers. --- Photo by Joseph Chan on Unsplash

Read more lynette@tag1co… Fri, 02/19/2021 - 14:07

Community Working Group posts: Nominations are now open for the 2021 Aaron Winborn Award

Fri, 02/19/2021 - 16:54

The Drupal Community Working Group is pleased to announce that nominations for the 2021 Aaron Winborn Award are now open. 

This annual award recognizes an individual who demonstrates personal integrity, kindness, and above-and-beyond commitment to the Drupal community. It includes a scholarship and stipend for the winner to attend DrupalCon and recognition in a plenary session at the event.

Nominations are open to not only well-known Drupal contributors, but also people who have made a big impact in their local or regional community. If you know of someone who has made a big difference to any number of people in our community, we want to hear about it. 

This award was created in honor of long-time Drupal contributor Aaron Winborn, whose battle with Amyotrophic lateral sclerosis, or  ALS (also referred to as Lou Gehrig's Disease)  came to an end on March 24, 2015. Based on a suggestion by Hans Riemenschneider, the Community Working Group, with the support of the Drupal Association, launched the Aaron Winborn Award.

Nominations are open until Friday, March 19, 2021. A committee consisting of the Community Working Group members as well as past award winners will select a winner from the nominations. Current members of the CWG and previous winners are exempt from winning the award.

Previous winners of the award are:

Now is your chance to show, support and recognise an amazing community member!

If you know someone amazing who should benefit from this award please submit a nomination.

rachel_norfolk: It's Aaron Winborn Award time again

Fri, 02/19/2021 - 16:41
It's Aaron Winborn Award time again

There are a few things we do as a community at Drupal that really warm my heart and recognising those displaying the very best values and principles of the Drupal project through the annual Aaron Winborn Award is one of them.

Whilst everyone in the Drupal community can, and should, nominate those they think deserve such an award, it is one of the few truly lovely tasks of the Drupal Community Working Group to read all of the nominations, select a recipient, and present the award at DrupalCon North America.


OpenSense Labs: Mobile Application Development with Drupal and Flutter

Fri, 02/19/2021 - 14:33
Mobile Application Development with Drupal and Flutter Akanksha Mehta Fri, 02/19/2021 - 19:03

A whole lot of mental, physical and monetary investments later, your website is finally moving on the track. You have a good traction, and keep up with the trends with updated content and regular revisions. When you have eventually got the hang of managing a full fledged online presence on your website, the first thought that is likely to show up on your mind is to extend it even further. 

For reaching a wider audience, optimising mobile experience, and building an alternative marketing solution, mobile app development is perhaps the best way to move forward with one’s business plans. 

What is Flutter?

Flutter is a cross-platform mobile application development framework, more like a software development kit, that was created by Google in 2018. It is used to build applications for several operating systems, both mobile and desktop, and the web, from a single codebase. It is written with Dart programming language. In addition to this, Flutter is an open source platform and invites community contributions into their code repository. 

Ever since its launch and subsequent expansion into development for desktop and web, Flutter has seen widespread adoption and expansion. According to Stack Overflow Trends, Flutter has surpassed both React native and Xamarin in terms of the questions asked about their respective technologies. Google Trends display an increasing  interest of users in Flutter, with searches about the framework soaring since the past two years as well, while Google also claims that Flutter has been adapted by over 500,000 developers for app development.

Source : Stack OverflowWhy use Flutter?

There are plenty of options available for mobile application development. Despite the presence of other similar frameworks and Flutter being relatively new in the market, in terms of popularity Flutter continues to be one of the most successful app development models among developers. This can be attributed to the following reasons  -


Flutter makes the job of development easy with the use of widgets. Widgets are building blocks - each facilitating a part of User Interaction and Experience (UI and UX). Stateless widgets are static frameworks that don’t store any data and exist for the purpose of streamlining your inputs. For example, the Text widget lets you create stylised text and the Row and Column widgets let the user create layouts in vertical and horizontal directions. Similarly, the Container widget creates a rectangular, contained layout visual with margins and padding. Box decoration can be used to customize the rectangle. On the contrary, if the widget in question performs a function when activated, it is called a stateful widget. Examples of such widgets in Flutter are InkWell, Checkbox, etc. Thus, everything doesn’t need to be formulated from scratch, with various pre made layout builder widgets available for the developer.

Open source

What makes Flutter stand out from the rest of its competitors is that it is an open source platform. There are various ways in which an open source model builds its progress over proprietary models in software development. When the cause is community driven, there is always a certain proactiveness both from the users and the owners for driving towards betterment and growth. With no proprietary limitations, the developer community is free to indulge in knowledge sharing, code alterations, and discussing associated challenges with one another leading to better bug resolution in terms of analysis and frequency. Hence, choosing Flutter for application development means having a flexible framework that is open to customisations along with having a community to discuss and also solve your resulting issues with. To know more about the power of open source, read how open source communities work together, how much contributions are valued, why large companies believe in open source, why open source is recession-proof, and last but not least how open source has been impactful during Covid-19 pandemic.

Single codebase and Cross Platform

Although Flutter launched as a mobile application development framework for Android and iOS in 2017, it was quick to expand into the arenas of mobile, desktop and web in the following year, becoming multiple device compatible. A major pro of Flutter over other similar app development frameworks is that it has a single codebase to compile applications, ie, there isn’t a need to code separately for different operating systems and devices, enabling seamless simultaneous app creation even when you’re dealing with multiple platforms and gadgets at the same time. This makes Flutter both developer and user friendly, as the content needs to be formulated only once and is compatible with most of the devices one would want to access it from.


Flutter uses a programming language called Dart, which is a relatively simple language with a small learning curve. Its features are a little similar to other languages, but are fitted into a unique syntax and infrastructure. Therefore, developers using Flutter don’t need to invest a lot of time and effort into the process of learning the basics and starting to build applications, which makes the framework ideal for users of almost all experience standings. Due to this, Flutter is suitable even for a small business or a startup that cannot afford experienced developers in their team due to the simplicity of the programming language. 

Integrated Tools

The codebase being integrated at a single place also accelerates the speed and convenience of coding, as the Hot Reload feature updates every change in the source code - allowing developers to see the changes made in the code real time. The work culture in such a case becomes transparent and hurdle free. Tools for developer convenience also include a package called DevTools, a compilation of performance and debugging tools meant to be used for both Flutter and Dart. DevTools is in the beta release at present and is undergoing alterations.

Drupal for Mobile App Development

While we talk of application development, an important player in the market remains our good old CMS (Content Management System), Drupal. The range of mobile apps Drupal can deliver is impressive. The constant evolution and adaptation of Drupal is what has manifested into the huge user base of the CMS, which is currently hosting over 600,000 websites

The usage statistics for Drupal throughout the years are mapped on this graph -

Source : BuiltWith

Drupal also has a domineering presence across several industry verticals.

Source : SimilarTech

Accordingly, in the arena of mobile app development, Drupal has seen significant advancements over the years.

  • As an API-first CMS, Drupal makes it easy to communicate smoothly with any application. It is these APIs that link Drupal to the mobile application.
  • Drupal provides plenty of development kits, libraries, modules and sample apps to make application development easier. This simplifies the job of a Drupal developer who might be well versed in PHP, MySQL and HTML but not so much in device-specific native mobile app programming languages like Java or Swift. Elements in Drupal like Waterwheel Swift and OneDrupal Android help manifold in bridging the gap. 
  • Application development is made even easier in Drupal by seamless compatibility with app development frameworks like Vue, React, Angular and Flutter. Drupal pairs well with all of these frameworks to create fast and responsive applications both for the web and mobile. 

The primary reason for which a business wants to build a mobile app is to reach a wider audience and expand marketing avenues. With both Drupal and Flutter occupying large parts of the commercial spectrum, let’s dig in a little deeper into how these can be used together. 

Case Study : Drupal with Flutter 

Drupal’s greatest strength is its ability to mould into any customisation, and in case a customisation does not exist, creating an API for your requirement is always an option. Drupal allows for decoupling and connecting with Flutter through its web services like REST API. Recently, Opensense Labs had the opportunity to take up a project from a leading media and publishing company in Malaysia. 

The primary agendas were

  • Refurbishing an already existing but poorly maintained website.

The website was previously built on WordPress, but the organisation wanted to shift to Drupal CMS for improved management of the ever renewing, large volume of content and efficient multi channel delivery. 

  • Developing a mobile app containing the same data as the website, from scratch.

To reach a wider audience and improve UX, an app was to be created to reach the readers faster. This is where Flutter came in.

Processes and solutions -

To start off with, the major work to be done was migration from Wordpress to Drupal and connecting Drupal with Flutter:

  • Since the website dealt in news and media with numerous reports published daily, the number of articles to be migrated were over 30,000. Content migration to Drupal was achieved by following processes like writing custom Drush commands among others
  • Rest API was used to connect Drupal and Flutter. While Drupal acted as the powerful backend managing content, Flutter helped in building a native mobile app.

Along the way, some major hurdles with performance and scalability were addressed:

  • Being a news website, the traffic was pretty inconsistent which led to a few malfunctioning issues. To tackle this, the entire infrastructure was built on AWS which allowed for auto scaling and scheduled scaling to be used. This made sure that the number of instances were increased and decreased as and when traffic saw a spike or a decline respectively.
  • Even though the APIs were created, there were some performance issues due to the large amount of content on the site, with numerous news articles being published daily. Right use of cache tags helped improve the performance eventually.

To make the website and the application function optimally and in sync with the company’s agendas,

  • Firebase was used for enabling Push Notifications, and manual permission was given to the admins for sending notifications leaving no room for error.
  • For ads, the DFP (DoubleClick For Publishers) module was used to serve ads from Google. Interstitial ads were placed between the length of the articles for maximum clicks. A basic level of ad optimisation was also done by the team to ensure better revenue. 
  • Upvote and downvote feature for the news articles was enabled using the Voting API module.

Drupal and Flutter are both significant players in the software arena. We are likely to see plenty more use cases where the efficacy of both Drupal and Flutter is utilised to formulate seamless mobile applications.

blog banner blog image Flutter Flutter developer Mobile App Development drupal mobile application Blog Type Articles Is it a good read ? On

Droptica: How to Backup Drupal? Overview of the Backup and Migrate Module

Fri, 02/19/2021 - 07:05

When creating websites, you often need to quickly backup the data that isn’t in your code repository. In the case of Drupal, it’s possible to generate copies via the "Backup and Migrate" module.

This module offers options for both beginners and advanced users. In this article, I’ll present its functionalities in detail.


The module was released at the end of 2007 for Drupal 5. It’s been extensively updated since then. The 8.x-3.x branch appeared in 2015, along with Drupal 8, however it didn’t have a stable release. It took another three years for the stable 8.x-4.0 version to see the light of day.

Module's popularity

The popularity of the module is confirmed by the number of installations - according to the official statistics, it’s used by over 220 thousand pages, including approx. 40 thousand based on Drupal 8.

Module's creators

Four developers are responsible for maintaining the module:

There are 822 commits in the code repository, created by over 70 people.

What is the module used for?

Backup and Migrate is an advanced tool for creating backup copies. It operates on the database, as well as public and private files. It integrates with Drupal CRON, thus ensuring the possibility of making regular backups to various destinations.


The module is available at You can install it from a .zip file or run the command composer require drupal/backup_migrate in the console.

You can find the settings administration panel in the Configuration → Development → Backup and Migrate menu.

Module's use

The module was designed with both beginners and advanced users in mind. The former don’t have to delve into the configuration of data export, they just need to use the quick backup option:

Clicking "Backup now" will download the database (or public/private files as selected in the "Backup Source" field). What’s more, the database backup will be devoid of cache and log entries, so it’ll take up much less space.

Some more settings are available in the "Advanced" tab. I’ll describe these later in the article.

Backup sources

By clicking Settings → Sources you’ll access the list of available backup sources.

By default, the sources can be:

  • databases,
  • public files,
  • private files,
  • whole page code along with a database.

This set can be extended slightly with external MySQL databases and any directories on the server. It can be done using the "Add Backup Source" option.

It’s possible to define own sources via the "Backup and Migrate" module's API.

Backup destinations

A backup destination is the place where it is to be put. This can be, for example, a server directory or a web browser. The available destinations are listed in Settings → Destinations.

As with sources, you can define your own destinations via the "Add Backup Destination" button and a corresponding hook. At the end of the article, I present some destination-adding modules like SFTP Server and S3 Cloud.


Remember that backups contain sensitive data and access to them should be strictly limited. Drupal is one of the most secure CMSs available, so it’s worth using its private file system. In addition, the possibility of encrypting files with backups comes in handy. To use it, add the Defuse library to the project using the command:

composer require defuse/php-encryption

After clearing the cache, the "Encrypt File" option will appear in the module configuration panel with the field for entering a password. It’ll be used to encrypt the generated archives.

Advanced backup

I’ve already covered how to create a quick backup. It’s time for its slightly more advanced version, which you can find in the "Backup" → "Advanced Backup" tab.

Here’s a quick overview of the options available:

  • Source - used to select a predefined source.
  • Backup file - allows you to configure the name and format of the backup file.
  • Backup encryption - enables archive encryption.
  • Take site offline - turns off the website while creating its backup.
  • Exclude database tables - allows you to exclude selected tables in the database (or only their contents) from the backup.
  • Exclude files - used to exclude selected files when creating a directory copy.
  • Destination - allows you to select the backup destination.

If you want to save such a set of advanced options for the future, take a look at the profiles in the "Settings" → "Settings profiles" tab.

Backup list

All backups on the server are listed in the "Saved Backups" list.

Interestingly, this list also works when saving backups to SFTP and S3 servers.

Backup restoration

Less often needed, but still an extremely interesting option, is to restore the website from a backup. For this purpose, you can use either one of the copies from the list presented above or upload any file via the form.


The last important functionality of the Backup and Migrate module is the ability to create backup schedules.

Here you have everything you need to build an efficient backup mechanism. These actions are performed using Drupal CRON functionalities. Therefore, no additional server configuration is needed.

Hooks and integrations

Backup and Migrate provides one basic hook hook_backup_migrate_service_object_alter(), allowing you to change practically the entire engine of the module. This is where additional plugins and filters are defined. You can define the following elements:

  • Backup sources - by default it is the database, public/private files and the entire website along with the source code.
  • Backup destinations - such as cloud storage or local directory storage.
  • Filters modifying the archives being generated - e.g. encryption.

On the basis of the above mechanism, many auxiliary modules that offer integration with external providers of disk space were created. Unfortunately, most of them run only under Drupal 7 control. These include:


In the face of new technologies, the Backup and Migrate module is sometimes considered redundant. However, we use it in our Drupal agency as it offers the easiest way to download a database and files from a Drupal-based website. It’s easy to set up and works almost immediately.

In the case of smaller websites, the module can be useful as a supplement to a standard backup. Especially when the code is on a shared server where you don't have full control of the system.

MidCamp - Midwest Drupal Camp: MidCamp 2021 tickets are on sale now!

Thu, 02/18/2021 - 17:42
MidCamp 2021 tickets are on sale now!

MidCamp 2021 is just over a month away, and we’re excited about our new scheduleTickets are on sale now, sponsorships are going fast, and we’re excited to see the community gather today for Florida Drupal Camp.


This year we’re embracing the virtual format and working to create spaces that encourage community building, connection, and mentorship.

  • Wednesday, March 24: Community Onboarding — Audience-based discussions focused on welcoming people into the Drupal community and letting experts share their knowledge.
  • Thursday, March 25: Building Community — Attendees will enjoy a day of lightly structured activities to decompress, talk shop, and have some human time.
  • Friday, March 26: Unconference — Instead of formal sessions, we’ll discuss Drupally things in a one-day Unconference format.
  • Saturday, March 27: Contribution Day — Our traditional day to give back to the Drupal project. All experience levels are welcome.

This year’s tickets are all flexible:


Our sponsorship packages are designed to showcase your organization as a supporter of the Drupal community and provide opportunities to:

  • grow your brand,
  • promote the health of the Drupal community,
  • and connect with new leads or Drupal talent.

More information is available on our sponsorships page. Sponsors get full access to our job board, targeting our audience of experienced web professionals from Chicagoland and beyond.

Help Us Spread the Word

The first day of this event is geared towards newcomers to Drupal. Now is a great time for you to invite your co-workers and colleagues to our community. Newcomers will find a welcoming format to learn more about open-source, network with other professionals, and get excited with hands-on learning. MidCamp is a great place to get started and no technical knowledge is required!

Thanks for sticking around. We’re excited for what 2021 has in store. Join the conversation on Slacklisten in on Twitter, or subscribe to the email list.

Tag1 Consulting: On 20 years of Drupal: an interview with Doug Green

Thu, 02/18/2021 - 16:28

Tag1 Consulting team members talk about their experiences and memories as part of the community. In this installment, Managing Director Michael Meyers talks with Senior Architect Doug Green.

Read more lynette@tag1co… Thu, 02/18/2021 - 07:28

DrupalCon News: Share your skills and talent at DrupalCon

Thu, 02/18/2021 - 13:39

Join us for DrupalCon North America 2021, where Drupal experts, enthusiasts, and users come together to share what they know and collaborate on ways to create better, more engaging digital experiences.

DDEV Blog: Execute commands and interact with your cloud containers

Wed, 02/17/2021 - 21:13

As the owner of a web project, you may want to directly access your production site to run developer tools. Historically, many of us would access a live site using SSH for direct shell access on a single static server for traditional hosting. Some hosting providers give limited access to run single commands from a local command line, or start a remote shell session with more complicated commands...


Promet Source: Drupal Migration Drives Massive Savings for Lenovo

Wed, 02/17/2021 - 18:58
Seeking to ultimately create a globally centralized, online presence for all of its commercial customers, Lenovo reached out to Promet Source for a range of initiatives that included a performance audit, a Drupal 8 migration, integration with the Lenovo Martech stack, consolidation of 15 separate websites from 60 markets and 87 different languages into its Lenovo Tech Today site, and ongoing support. 

Tag1 Consulting: An interview with Jeremy Andrews

Wed, 02/17/2021 - 15:15

Tag1 Founder and CEO Jeremy Andrews has been in the Drupal community for nearly all of its existence. From one of the earliest Drupal websites, to the first and only paper publication focused on Drupal, to the success of Tag1 Consulting itself, Jeremy’s experience is nearly unmatched. In this special series of Tag1 Team Talks covering 20 years of Drupal, Jeremy joins Managing Director Michael Meyers for a short discussion about those years, what’s changed, and what it’s been like as a business owner and a developer in the open source industry. For a transcript of this video, see Transcript: 20 years of Drupal - Jeremy Andrews. --- Photo by Jess Bailey on Unsplash

Read more lynette@tag1co… Wed, 02/17/2021 - 06:15

Mediacurrent: How to Fix the Catch-22 Problem of Drupal 9 Fixes in Composer

Wed, 02/17/2021 - 08:24

TL&DR: Use's issue forks to make Drupal 9 compatibility fixes work with Composer.

While most software developers are in agreement on the two hardest things in software development – cache invalidation, naming things, and off-by-one errors – not everyone is in agreement on how to rank the rest of the top ten challenges. One that must surely rank high is dependency management algorithms and dependency management tools. These make sure that different libraries and additions to a codebase are kept up to date and APIs are kept compatible. For example, supposing a codebase has SquareWidget v2 and CircleWidget v2; if SquareWidget v3 comes out but is incompatible with CircleWidget v2, the codebase's dependency management tool would prevent updating to SquareWidget v3 until a compatible version of CircleWidget was available.

In the Drupal world we've historically avoided formal dependency management as we could just download a package from and get running, occasionally realizing "Oh I needed CTools too" and grabbing it. Along the way some folks built the Drush tool which, amongst other things, could download these dependencies automatically. It wasn't until Drupal 8 came along that more formal dependency management became a thing because of its heavy use of 3rd party libraries, in large part thanks to the use of the Composer system. This tool came out of the wider PHP community's need for a generic, reliable dependency management system, and in the Drupal maintainers' drive to adopt more 3rd party libraries and tools it was the obvious choice. After an initial bumpy learning phase, almost all contemporary Drupal 8 and 9 website projects today are managed using Composer.

The infrastructure provides a custom wrapper around Drupal core, module, and theme meta data so that it can be loaded using Composer using its metadata platform Packagist. Modules and themes which already include a composer.json file will have that made available as-is. However, a large portion of Drupal 8 and 9 contrib projects don't have this, so the infrastructure maps the info.yml files into a format Composer can understand. This way a module that was initially ported to Drupal 8 a few years ago can still be added to a contemporary D8 project managed with Composer, even if the module hasn't been touched in years. It's awesome.

The World of Drupal 9 Updates

Back in October 2019, a new feature was added to core 8.7.8 which allowed modules to specify the versions they were compatible with by using a new line in their info files. This new line became a requirement on Drupal 9 as there needed to be an indication in modules & themes to indicate what APIs they were compatible with. For most projects the new line makes the info file look like this – note how the old "core" value is now replaced with a "core_version_requirement" value:

name: Commerce Migrate type: module description: Provides various Commerce-specific Migrate handlers. core_version_requirement: ^8.8 || ^9 package: Commerce (contrib) dependencies: - drupal:migrate - drupal:telephone - migrate_plus:migrate_plus

A module (or theme) could use the new line to indicate they were compatible with both Drupal 8 and 9 simultaneously, and the majority of the most popular modules have made the necessary changes.

Drupal 9 presented the first major release of Drupal core that was such a low impact update it was possible to run many websites on either 8.9 or 9.0 just by swapping the core files out (and updating the dependencies). Gone are the days of having to rebuild a site from scratch for each major upgrade, instead we just have to keep our codebases fully up to date and swap to the new core release pretty quickly.

Except for that one line.

That one new line has to be in each info.yml file in the codebase (except for test files, but that's a different matter), so any under-maintained or unmaintained module or theme will need to be updated. Thanks to the wonders of modern development tools, it was estimated that almost a quarter of all Drupal 8 modules & themes could be upgraded to be compatible with Drupal 9 by just changing their info file! Over the course of 2020, thanks to contributions and collaborations from folks all over the world, a huge number of modules and themes were updated to be fully compatible with Drupal 9, and a large portion of those that don't have releases have patches available.

The Catch-22

The fact that there are patches to make Drupal 8 modules & themes compatible with Drupal 9 is great for maintainers or would-be maintainers - they don't need to go through the efforts of making all of the changes themselves, they can just review what has been provided and, hopefully, commit it. Normally patches are great for end-users too, because again they don't have to take the time to make the change themselves, someone has made it available for them.

Here is what happens when you apply a patch using Composer:

  1. Composer downloads the project's listing from Drupal's custom Packagist system (see above).
  2. It compares the dependencies from the listing against what's currently in the codebase.
  3. It deletes the existing copy of the underlying module or theme, if present.
  4. It downloads a fresh copy of the module/theme that matches the dependencies.
  5. It applies the patch.

Normally this patch process works great - you find a patch, add to your codebase, and away you go, remembering to leave a comment to the patch creators how well it works for you. However, there's a major limitation here - even if the patch contains changes to the composer.json dependencies, it's applied after Composer has decided whether or not to install it.

In short, you can't use a patch to tell Composer that a Drupal 8 module is compatible with Drupal 9.

Improved Code Collaboration Workflows

Drupal originally used CVS to manage the codebase. This was very limited by today's standards, but it was reasonable back in the early 2000s and provided a means to centrally manage the large codebases of both core and the ever expanding array of contributed modules & themes. Proposed changes to these codebases were handled using patch files, which are simply text files which indicate a file to be modified, which lines are to be removed and which are to be added. It worked well enough, but there was a large learning curve for beginners to get past.

Over the years more flexible & functional replacements for CVS became common, including centralized systems like Subversion and decentralized systems like Mercurial, Perforce or git. Rather than take the short jump to another centralized system, the effort was taken to build out a replacement code management platform using git, under the umbrella project name of "The Great Git Migration". Completed in 2011, the effort was lead by Sam Boyer, and the community has been all the better for it.

However, after the git migration was completed the community was still stuck with patch files. While github had its pull request workflow, the Drupal community was screaming at the need for somewhat archaic collaboration workflows.

Skip ahead nine years and an awful lot of discussion and research, in 2020 the community finally had a replacement code collaboration workflow in the form of merge requests via the Gitlab system. This new workflow allows anyone to create a fork of a project, make changes, and then create a gihub-pull-request -like change request, dubbed a "merge request", for others to review. Unlike github's pull request system, it's also really easy for anyone to collaborate on the same merge request, which lends itself really nicely to collaboration with others rather than solo development. After some opt-in beta testing, the new system was launched community-wide for every single code project on to use.

The new issue fork and merge request system is based upon the simple concept that each individual issue on can have its own copy of that project's codebase, an issue fork, and that codebase can be downloaded individually using git. With an issue fork anyone can make whatever changes they need directly with git and others can then download those changes directly using git - no additional tools needed, no patch files flowing around.

This also means that it's possible to tell Composer to download the codebase from an issue fork instead of from the main repository.

This means that an issue fork can be used to get around Composer's patch-vs-dependencies catch-22!

Putting it All Together

First off, it should be noted that issue forks are, to all intents and purposes, a separate physical repository than the parent project they fork from. This means that you cannot just download the issue fork by telling Composer to use a specific branch of the main project, Composer has to be told to use a completely different repository.

It's also worth bearing in mind that, for a given Drupal project (module or theme), only one issue fork can be used at a time. Because an issue fork is a separate repository, it isn't possible to download two different versions of the same module/theme and magically have them squish together. Therefore, if multiple merge requests / issue forks are needed for a given project then the others have to be applied as patches; alternatively, a separate "meta" issue could be created that combines multiple changes into one merge request, but at that point it might be easier to just become a maintainer and commit the changes.

In this example, I'm going to use the merge request created for the Drupal 9 compatibility issue for the Commerce Migrate module.

  • First off, find the issue fork portion of the d.o issue, which should be right underneath the list of attachments & patches, which is underneath the issue summary.
  • Click the "Show commands" button to expand out the example git commands.
  • In both the "Add & fetch" sections there will be a "git remote add" line. Included in this is a URL that's needed to download the codebase from the issue fork - one starts with "" while the other starts with "". Copy the full line (click the "copy" icon to copy it to the clipboard) and extract the URL, e.g.
  • Click the "commands" button again to hide them, and then get the branch name, which in the example above is "3150733-drupal-9-compatibility".
  • In the site's composer.json file, in the "repositories" section add a new item with two values: {"type": "git", "url": "URLFROMABOVE"} e.g.: { "type": "git", "url": "" }
  • Look for the item in the "repositories" section that has "type" set to "composer". If it doesn't exist already, add an item called "exclude" and make it a list. Add the Composer name of the module/theme you want to use, e.g. "drupal/commerce_migrate", so that it looks like this: { "type": "composer", "url": "", "exclude": ["drupal/commerce_migrate"] },
  • Change the listing for the project in the "require" (or "require-dev") section to point to the branch name identified above, e.g. "drupal/commerce_migrate": "dev-3150733-drupal-9-compatibility",
  • Save the changes to the file.
  • Update the project in composer, e.g. composer update drupal/commerce_migrate.

The last command will now download that project from the issue fork instead of the main codebase.

Note: these should only be used as a short term solution, the goal should always be to collaborate to get changes committed so that these steps aren't needed.

(there might be other ways of doing this using repository priorities, but this method works)

But it Didn't Work?

One problem that can arise is that Composer can't process the project, which it will tell you with this error message:

[Composer\Repository\InvalidRepositoryException] No valid composer.json was found in any branch or tag of, could not load a package from it.

This simply means that the project doesn't have a "composer.json" file in it, so you can fix that by adding a composer.json file to the repository. Once that is created (make sure to run "composer validate" before saving it!) and uploaded to the issue fork, it'll be possible to download it to a site's codebase again.

Put That Thing Back Where it Came From or So Help Me

Because they don't keep current with upstream changes and can fall out of date quickly, issue forks should be used sparingly in website projects. As it happens, the patch for Commerce Migrate I wrote this blog post around was committed between the time I started the blog post and it was published – "The Drop Is Always Moving", as they say.

When the day arrives and the project has its Drupal 9 fixes committed, there are a few steps to remove the issue hackery and make the website's codebase happy again.

  1. Remove the extra "repositories" item.
  2. Remove the "exclude" line from the "type":"composer" repository; if there aren't any remaining items in the "exclude" section it can be removed entirely.
  3. Change the "require" line (or "require-dev" line) back to point to the appropriate release that includes the Drupal 9 fixes.
  4. Run "composer validate" to make sure the compost.json file is correct.
  5. Run "composer update drupal/PROJECTNAME" to get the new, cleaner version of the project.
  6. Commit the changes.
  7. Celebrate.
That Was a Lot of Words, Do You Have a Picture?

This topic was covered in a recent Contrib Half Hour. Because I forgot to record that meeting (I'm a professional, honest) I repeated the steps the following week, so now there's a recording of me stepping through the process to create an issue fork to make a Drupal 9 fix for a Drupal 8 module work in Composer:

OpenSense Labs: The Evolution of Digital Media and the Role Drupal Plays in It

Tue, 02/16/2021 - 22:10
The Evolution of Digital Media and the Role Drupal Plays in It Gurpreet Kaur Wed, 02/17/2021 - 02:40

Every morning we get up and something big has happened somewhere in the world. Sitting in the capital of India, we get to know how the inaugural ball went on in the capital of the United States. And how are we able to get this knowledge?

It is the media and publishing industry that constantly reports all the national and international happenings to our households. From getting to know about election results to knowing the extent of natural calamities and political unrest, we know it all. 

The role of the media is all the more important today, it has essentially become the voice of the voiceless all over the world. With such a magnitude of responsibility, the media and publishing businesses need to be at their A-game all the time. 

Today, we’ll try to understand how they can enhance their online presence for a rich user experience with the help of Drupal. Before doing that, let’s shed some light on the changes in this industry and understand the consequent change in their web needs. 

What changed over the years?

Time changes everything and everyone. People change their appearances, their style and their thought processes over time. Something that may be important for them is highly likely to become trivial in the distant future. This is what happened to people’s perspective towards the media and publishing industry and the change in point of view led to a substantial change in the running and management of this industry. 

Think of a decade ago, were we as dependent on smartphones and other mobile devices as we are now? The answer is no. However today, from teenagers to the elderly, everyone is glued to their third limb, being the smartphone or smart devices in general. Look at the usage in the graph below to get a clearer idea.  


Once reading a news article on a smart gadget was a novel thought. However, today it is an everyday occurrence. And that is the pivotal shift that the media and publishing has had to take. The readers are more inclined to reading news updates on their phones. And that is why, this sector has had to transcend from print and paper and provide their audience with digital platforms that are easy to access anytime, anywhere and on any gadget.

What the change comes down to is the delivery mechanism. The media and publishing outlets are performing their duties much in the same way. They are reporting much in the same way. The stories that need to be told are being told and the questions that need to be raised are being raised. However, all of this is happening on digital platforms and it happened in four phases. 

The four waves of the media and publishing industry. Source:

I wouldn’t say that the physical medium of media has become antiquated, not by any means. I still see my dad having his morning tea with a side of the front page news of The Times. However, he also gets constant updates on his phone about the world happening without having to wait for the next day’s paper. 

And that is the change that has happened, that is how the evolution of the media and publishing industry took place, with the core values still remaining the same. 

Look at this report by Statista to understand the emergence of digital media platforms. With such a substantial amount of revenue, I’d say it has come out with a bang.

Source: Statista What do media and publishing houses seek today for digital presence?

Like we just discussed above, the media and publishing houses have transformed a great deal in the way they relay information to their audience. Today, there isn’t just one kind of audience and you can’t just build your entire persona around that one category. From young people perusing news on their smartphones to the minority population fluent in their own regional language, the media and publishing industry has to be able to provide for the diversity they have in their audience.

With the move towards digitalisation, we are going to take a look at the needs and requirements of this sector as they are in the present day.

Ease of publishing 

The primary purpose of a media and publishing business is to provide its audience the content that they need. This purpose mandates that the site has an enhanced ease in editing and publishing content, be it blogs, articles or press releases. These content pieces should not be limited to text, images, audios and videos are as equally important as the powerful words of a news writer, and that is the first requirement of this sector today. Faster production and publication of content across multifarious channels is key. 

Friendliness towards the search engines

Now that we have published the article with ease, the next major requirement is to ensure that it reaches the audience it was intended for. If I talk about myself, I always end up at Google whenever I want to read about a major or even minor happening in the world. This is true for most of the readers out there. That is why, Search Engine Optimisation is essential today. 

Producing SEO friendly content would help your content become all the more visible to a wider audience and garner organic traffic for your site. With over 3.5 billion searches everyday on Google, I’d say there isn’t any harm in taking advantage of SEO by adding the necessary words and phrases to your articles. Everything about SEO and its implementation can be accessed here.

Amiability to social media 

Social media is a game changer for the media and publishing industry, allowing it to take its content across the globe in mere seconds. Therefore, social media integration is key, with Facebook becoming the front runner, being that it is the largest platform. 

Having a social media handle, providing sharing options on your articles and creating custom posts of your social media handles, all three of these would lead to a streamlined integration with social media channels. With over half the world population using these platforms, it is only wise.

Responsiveness of design

Next major requirement for the media and publishing industry in going digital is the need to be responsive. Websites that can only be browsed efficiently through a desktop are essentially doomed for failure. Being responsive to all sorts of mobile devices, especially the smart phones, is integral to media outlets. Accelerated Mobile Pages are a trend that more and more websites are following. These help in delivering a smooth experience of browsing for all your users across all the touchpoints. Here is your complete guide to web design.

Warmth of personalised experiences

Coming to the final requirement, which is personalisation. Every web user today is treated differently, since they have different taste. We, as web developers, become aware of these tastes through web cookies. Therefore, as a media and publishing site, you have to become aware of your audience’s likes and dislikes and provide a personalised experience for them that they end of loving. Informational noise and never-changing ads need to be left in the previous decade. Your complete guide to web personalisation is available here.

Why is Drupal great for the media and publishing industry?

Sports, FMCG, Food, FinTech, Elearning, Government, healthcare, nonprofit, travel, or whatever website you need to build and whichever industry segment you belong to, Drupal has just the right ingredients to build your digital presence. Media and publishing industry is no different.

Drupal is an open source Content Management Software that has a worldwide presence and is renowned for its efficiency in managing content. It has clientele from multitudinous trades and businesses. And with a community of over a million, it is indeed a force. It is a force that is equipped to provide digital experiences that enable you to connect with your audience no matter where they are.

I would not get in every minute aspect of Drupal, because that’ll make this blog quite lengthy and nobody wants that. Rather I would only talk about those aspects of Drupal that make it extremely compatible with the media and publishing industry. So, here goes.

Drupal eases content management and distribution 

The thing about media sites is that they are not limited to just one, they have a huge family with many subsidiary sites. The higher number of co-dependent sites means that you would have to have a lot of content to deal with. Drupal comes quite handy here, as it acts as a single home for all the sites. 

And the amount of content that results in would not be bother as well.  Be it photos, videos, audios, podcasts or graphs and analysis. Everything would be seamless in terms of production, management and distribution with Drupal. Have a look at an example of how content authoring can be performed at ease with modern solutions like Layout Builder module in Drupal core.

Drupal eases the mobile transition 

I believe I am going to be mentioning this one for a third time now, but mobile responsiveness is pretty high on the priority list so it deserves another mention. When we talk about user engagement, a modular design is key and when that design is flexible to respond to any device the engagement soars. Drupal provides a number of modules to achieve the same.  To know more, read about mobile-first approach and Drupal’s provisions for building mobile solutions at scale.

Drupal eases multilingualism

With media sites catering to a large number of audience worldwide, language can become a problem. Drupal provides multilingual support that makes publishing the same content in different languages an ease. Drupal offers translations in as many as 94 languages. More on Drupal’s multilingual capabilities here.

Drupal eases profits and lessens costs  

Drupal is equipped to make you money as well. Advertisements, promotions, subscriptions and one-purchases, all are inclusive in Drupal modules that result in media outlets being more profitable. 

Then is the fact that Drupal is open source, which means it is free of cost. There isn’t any licensing fee required to be paid. All you need to do is install and configure it and you’ll be ready to go. Learn more about the perks of contributing to an open source CMS like Drupal and being a part of a growing open source community here.

Drupal eases the security concerns   

Drupal security is one of the best in the market. With modules for authentication, password protection and encryption, your data is always going to be safe. Open Source security isn’t anything to be taken lightly and Drupal has proven that. Here is a survey to prove that. 

Percentage of security issues in a sample group. Source: Acunetix

With this level of ease, you can become relaxed and bask in the efficiency of Drupal and become free of the burdens of running a media site that you might have to endure otherwise. However, you would have to write stellar pieces that are able to resonate with the audience and accomplish what they were set out for. That is a burden you would have to bear, Drupal wouldn’t be able to do so.

Here is a glimpse of Drupal at work with digital media houses

Drupal has indeed proven to be one of the best CMSs for the media and publishing industry. I don’t just say it for the sake of it, I come bearing proof. OpenSense Labs has worked with many media and publishing houses to build impressive experiences for their web portals with Drupal and here are some of these sites. 

Men's Health 

Men’s Health magazine is a global brand, which publishes in close to 60 countries. It required a software that would provide an ease of management for the content authors, with an adaptable content architecture that would be responsive and browser agnostic. It also required to balance the performance and images conundrum without trading off on either of these. And Drupal was able to fulfil all of these requirements and an impressive digital experience was created. Read the complete case study of Men’s health to know more.

Earth Journalism 

Earth Journalism Network is a leading non-profit environmental new network that aims to improve the quality and quantity of environmental reporting. With such crucial work, it required the best. Drupal provided ease in publishing and managing varying categories of content types with a heightened flexibility. Drupal also had the right kind of core and contributed features that allowed for better design scope and ability to handle enormous amounts of content. 

Farm Journal 

Farm Journal is a leading US publication site for agricultural news with a host of subsidiary sites serving varying sectors of this industry. With such a magnitude of services, its content needs were becoming a challenge. Drupal was able to overcome this challenge with ease. Customer sites were enhanced, upgrades were made faster and convenient, the architecture was made scalable and modular in nature and most importantly, the content journey, from the editors hitting save to the consumer clicking read, was reduced to mere seconds. 


A part of the Farm Journal brand, AgWeb was able to improve its brand identity as well as user engagement with Drupal’s help. Being an agricultural news site, AgWeb needed to improve its web performance, at the same time the site’s SEO needed to be kept intact, while improving the site’s web SERP rankings. ReactJS was also implemented as part of progressive decoupling for a better frontend experience. 

All of these are a blatant proof of Drupal’s efficiency in this constantly evolving domain of publishing and you would be wise to choose it.


The news, newspaper and article sites are growing at an impressive pace. Therefore, having a CMS in your corner that is powerful enough to let you scale in accordance to the growth rate is ideal. Drupal is just that, it can do and achieve things for a media site that other CMSs may not be able to. And we at OpenSense Labs have actually witnessed that with all media projects. So, trust me when I say that you cannot go wrong with Drupal. For any doubts you may still please feel free to contact us.

blog banner blog image Media and Publishing Industry Drupal Digital Media Blog Type Articles Is it a good read ? On

Evolving Web: Avoiding the Redesign: How to Constantly Improve Your Drupal Website

Tue, 02/16/2021 - 19:12

There’s always a desire to start from scratch. Whether it’s the development team saying that the architecture is fundamentally flawed, the design team looking to add a new brand system, or the leadership team looking to make a big impact or justify a budget-spend, starting a digital project from scratch is appealing. 

And sometimes starting over is justified—for example:

  • A website based on an unstable content management system that is impossible for the marketing team to update
  • An organization that is pivoting and needs to completely rethink its digital strategy
  • A brand that truly needs a revamp because it doesn’t reflect your values

Starting a web project from scratch is definitely the best option in some scenarios.

But I love the challenge of iterating on what’s there. And in so many cases it’s a better choice. Here are some ways to build continuous improvement into your digital maintenance and improvement plan for your Drupal website:

Design refresh for the win

It might be overused but I love the phrase “design refresh”. The concept of taking the brand that your customers and staff know and turning into something that brings delight. Or taking a brand that is too limited and flat, and providing more depth with an image guide, complementary colours, or new design elements. 

Just because a designer five years ago thought that a pixelated pattern would make you seem modern, or that a black-and-white colour palette would make you seem sophisticated, it doesn’t mean you are stuck with these choices. 

Refreshing the brand can simply mean adding more options to how colours, fonts, and images combine. Or it could mean swapping out previous graphical elements or styles with ones that are more mature, give more breathing room, or are adapted to the new audiences you find yourself speaking to. 

A refresh doesn’t have to mean redesigning your logo, building a new website, and reprinting all that swag in your supply closet. It can start with a fresh set of digital components that you can roll out organically. If the front-end of your Drupal website is built following best practices, you’ll be able to improve things like colour treatments, typographical choices, and other patterns without a complete overhaul of the site.

Switch to content components

Everyone these days talks about modular or molecular design, creating design systems, and adopting page building tools. If your website was built more than five years ago, you might feel like you’re missing out. 

Read next:

Being able to construct engaging content and not being limited to a title and text box with which to express yourself is a frustrating limitation. Switching your website over to using content components to build important landing pages doesn’t have to mean starting from scratch with a new website. 

CMSs like Drupal allow you to add page-building tools into your content editing toolkit retroactively. So you can start replacing those lengthy blocks of text with more effective and imaginative content, so you can actually tell the story you want to tell.

Revisit taxonomy

Organizing the spice drawer on a rainy day is one of my favourite activities. And, just like organizing your taxonomy, it’s a rewarding task that will make it easier to find the right spice (or the right content) when you need it. Reorganizing your spice drawer doesn’t have to wait until you move to a new home. And tidying up your taxonomy doesn’t have to wait for a huge content revamp or site redesign.

In fact, having a well-organized taxonomy system will make your site revamp easier when the day comes. Analyzing which keywords users actually want to search by, the ones that pop into their head when they go to your site, and making sure that these are clear and prominent in your information architecture can be a painstaking challenge, but it’s worth it if you want to get the most out of your content. 

Here are some good ways to quickly get started:

  • Run a content audit with Screaming Frog
  • Look at your analytics
  • Review the vocabularies and terms you have set up in Drupal
  • Decide on a set of terms to tag your content with that will bring the most value when users are searching for your content
Add missing integrations

Often the content or feature your website is missing doesn’t need to involve replacing what’s there right now. It might just mean adding a missing piece or integrating a set of content that currently lives somewhere else. 

You might be surprised at how easy it is to add new integrations to your website post-launch. With Drupal, simply adding a module and creating a new content type could mean that you go from a static corporate website to displaying and selling products that bring value to your customers. You can use a combination of Migrate and Views to pull in content from a third-party API or database. For example:

  • Here's an integration we built with a CRM for membership renewal - This integration was built as a separate module and can be added in post-launch.
  • We built a custom integration for Tourisme Quebec that pulls in tourist listings from a variety of sources
  • An integration with HubSpot - for launch you might have just embedded some forms, but post-launch you could add true API-level integration for more customized form options.
  • Chatbots are a really easy integration to add at any time because the integration with Drupal just involves a JavaScript snippet, while most of the customization you can do through the chatbot service. 
  • JSON:API to push your content to an app or another platform

Adding new features doesn’t have to result in a Frankenstein’s monster (or a pizza as we say in Quebec). The result can be modular and forward-thinking, so that you don’t have to build the new integration again from scratch when it is time to revamp your site.

It’s never too early to ask your users what they think 

I find organizations I work with often want to wait until after the big revamp to do user testing—and I understand the instinct. You want to put your best foot forward before asking for feedback. 

But in fact, the best time to do user testing is now. Getting some input on how users actually interact with your site, what they’re missing, and what your competitors do better, will help you with iterative improvements and build up a knowledge base about your key audiences that will help you with that future site revamp.

Some easy user testing you can do:

  • Comparative testing between your site and your competitors’
  • Tree testing your existing menu navigation with an alternative
  • Testing of key landing pages
  • User interviews to identify your users’ most important goals when interacting with you 
It's never to early to start iterating on your website.

When you're not convinced that your site is achieving what it needs to, it’s easy to jump to the site revamp, but a long-term strategy of improving what you have can not only save you the cost of a complete overhaul, but will also mean that you’re building in organizational practice of valuing maintenance and sustainability. So that when you are ready for that revamp, you make the best choices and get the most out of the process.

When clients come to me asking about moving to Drupal 9 from Drupal 7, I always recommend making improvements as part of the upgrade. It’s an opportunity to make improvements at the architectural level, and to transform your content using an automated approach, which can save your team a lot of time. But you don’t need to wait until that big upgrade project to make improvements. Often the best approach is taking it one step at a time.

We’re increasingly focusing on long-term partnerships rather than one-off redesign projects, because we believe in iterative development and continuous improvement.

If you're looking to get ideas & skills to start your own Drupal site refresh, check out our UX for content creators course, or get started from scratch learning how to create a Drupal website. You can also always reach out to us about your plans to improve your website.

+ more awesome articles by Evolving Web

Evolving Web: Creating an Inclusive Digital Content Strategy

Tue, 02/16/2021 - 15:56

When I first meet a new client and start imagining how we can improve their digital strategy, their content, and the user experience of their website, I start by asking about their target audiences. The questions are simple, but they can be hard to answer.

What do you want to accomplish with your website? Who is your website talking to? Who do you want to be talking to?

The “Who” questions are particularly important for large institutions that are looking to show their purpose and humanity. They want to feel less like a large, opaque organization and more like a human-centric organization made up of individuals. As one client told me recently “we want [our users] to know that we’re people."

But the problem with jumping from “Who are you talking to?” to creating user personas is that it reduces your diverse audience. We create personas to pinpoint a more effective strategy, so that the most important links and menu items are readily available to our primary audience. But this can have the effect of denying the diversity of your users and how they think.

So don't just ask "Who are you talking to?" The second "who" question above is critical. Who do you want to be talking to? It opens a space for us to think about viewpoints other than the ones we already know.

Since diversity and inclusion are more and more top of mind, the conversation often arises that an organization wants to show that it values diversity and inclusion. When creating personas, then, we make sure to represent diversity in their gender, ethnicity, age, abilities, and occasionally socioeconomic background. At that point, it's easy to decide the work is done. But when creating content, it's easy to forget about the diversity that we strive to present. Instead, we fall back to our default mode.

So how do we create a content strategy that promotes inclusion? What might it look like? Here are some ideas:

Plain language

One approach to content strategy is to make the default mode "plain language" so we can speak to everyone. 

Removing jargon from the primary pages of the website and creating a summary of more in-depth, technical content so that a general audience can understand it is a clear signal that you want more users to consume your content. A simple way to evaluate if you're writing with plain language is to use a tool like Hemingway App to check the general grade level and complexity of your content. Aim for a readability of Grade 9 or lower if you want to be sure your message is clear and readable.

Don't use a glossary to get past using any acronyms or industry terms in your writing. A glossary doesn't solve your jargon problems; no one is going to click on menu items and calls to action that are full of acronyms. I find this advice particularly useful for governmental organizations that have “policy maker” and “citizen” as primary and secondary audiences. Colloquial expressions can also be hard to understand for users who are reading the website in a second or third language, or just people who are stressed and distracted by life.

Diverse voices

Another approach is to showcase individuals with their own voice, allowing you to break out of the brand’s tone of voice and expose more of your existing diversity. Testimonials or “Community Spotlights” are a great example of this. Go beyond just showing diverse faces. Let them speak. Including diverse views in your content's writers is a sure-fire way of increasing the diversity of the content itself. 

Ask people

If you’re serious about appealing to more diverse audiences, recruiting diverse people in your user research is important. We create a “recruitment guide” when we’re looking for participants for interviews and usability testing studies. If you plan to build an accessible website, you could find participants who use assistive technology. When we were running interviews for a business school that recruits internationally, we looked for students who had just moved to Canada. If you’re building out a website for people with mental health issues, you will want to seek out participants from that specific audience. 

Don’t be afraid of personality

Storytelling is how you make content more accessible. It also implies a storyteller, a perspective, and an opinion. This can be hard to scale up if you have a lot of content authors. A formal tone of voice scales better, which is why large institutions have a tendency to go with a more formal tone of voice. But if you find places for the personality to come through, with some key messaging and some selected content that speaks more from an individual’s perspective, this can make all the difference.

If you’re revamping your digital strategy or doing a content audit, it’s a great time to reassess how inclusive your website really is. Evolving Web was founded more than a decade ago, and our commitment to inclusion is shown in our team & our customers. With all our experience in building for accessibility and inclusion, we are always happy to help others out as well. 

If inclusion and accessibility matter to you, we’d recommend you check out an interactive training course we have created specifically to address how to make a website that is more broadly accessible to others. 

And of course don’t hesitate to reach out if you’re looking for a team to guide you through the process. :) 

+ more awesome articles by Evolving Web

Specbee: Managing Editorial Workflows with the Content Moderation Module in Drupal 9

Tue, 02/16/2021 - 14:33
Managing Editorial Workflows with the Content Moderation Module in Drupal 9 Shefali Shetty 16 Feb, 2021 Top 10 best practices for designing a perfect UX for your mobile app

A good content management system should not only focus on the way your content is presented to the user. It should give you the flexibility to manage the content publishing workflow smoothly and effectively. Many times, teams must work together with the content teams to churn out content regularly. Without a structured editorial workflow, where content moves from one state to the other, managing a publication process becomes tedious and chaotic. Enter the Content Moderation module for Drupal 9.

The Drupal 9 Content Moderation module gives complete flexibility to content editors and marketing teams to manage their editorial workflows effortlessly. The module works in conjunction with the Workflows module to manage and create different workflow states and transitions. The Content Moderation module was first introduced to Drupal 8 as an experimental module in Drupal 8.2. It was based on the contributed “Workbench Moderation” module. With Drupal 8.5, a stable version was released and is now a Drupal core module! On a sidenote, did you know that 88% of the top 1000 Drupal projects are now Drupal 9 compatible? If you’re still on Drupal 8 (or 7), what are you waiting for? Migrate to Drupal 9 today!

What can you do with the Drupal Content Moderation Module?

Here’s why you should be implementing this amazing module for all your content workflow needs:

You can have different states for your content workflow – Draft, Published, Archived (much improved from the previously Published and Unpublished states).
Create and add your own state to the list! It could be a Needs Work, a Ready to publish, or any state that is required by your business process and editorial workflow.
When you create your own state (or edit an existing one), you can choose if you want to publish the content soon after entering that particular state. Or/and you could also choose to make it as the default revision.
You can create a transition to define what to do when the content moves from one state to another. 
It allows for granular permission control for every state and transition.
You can select the content types that you want to apply the workflow to (Article or Basic page by default).
In addition to the default editorial workflow, you can create your own customized workflow too!

Implementing the Content Moderation Module

As previously discussed, the Drupal Content Moderation module is available in core (since Drupal 8.5). However, you will need to enable the module by navigating to /admin/modules. Next, click on Install. 

Enabling the Content Moderation Module

Once the module has been enabled, go to Configuration -> Workflow -> Workflows. Here you will be able to see a default workflow called “Editorial”. Or if you have added multiple workflows, you can see a list of them in this page. Click on Edit to make changes to the existing workflow.

Editing the default Workflow

Label: You can add or modify the name of the workflow.
States: By default, there are three states - Draft, Published and Archived. You can click on the “Add a new state” button to create your own state like “Needs Work” or “Needs a Second Review”.

Adding a new state - Needs Work

Transitions: Transitions tell the content editors what to do after a change of state. In addition to the pre-existing transitions like “Create New Draft”, “Publish”, “Archive”, etc., you can also create your own transition to handle more complex workflows. For example, if you have just created a new state for “Needs Work”, you could support this state by adding a transition called “Move to Needs Work” from a “Draft” state to “Needs Work” state.

Adding a new Transition

This Workflow Applies To: You can choose to apply this workflow to your custom block types (Basic blocks) and content types (Article and Basic page).




Workflow Settings: When you create new content, you can choose to default a state in the form. By default, the state is always “Draft”.

Track it with Content Revisions

Now with all of this information, you know that your marketing and/or content team can create and move content from one state to another effectively with the Content Moderation module. But how would you know who made that change, when did they make it or was it even made? Yes, content revisions to the rescue! With the revisions feature in the content moderation Drupal 9 module, you can not only see who made the changes and why, you can also revert to the previous changes (if there are more than one revision).

Content Revisions

Access Control with Permissions

Having a content workflow and moderation system for a one-person team or a team where each member has admin privileges, is never a great idea. The permissions and access control feature for the Drupal 9 content moderation module gives granular control to a team of multiple content authors and editors. For example, you would want only a content author and editor to be able to use the Create New Draft transition. While a content editor can be the only one to be permitted to use the Publish transition.

To setup permissions for different users, navigate to People -> Permissions.


Every organization has different editorial workflow needs. With the Drupal 9 Content Moderation module, you can now meet your unique workflow demands with ease. Content is king, as we all know. Content moderation done right can prove to be extremely beneficial and can enable you to create rich content with customized workflows. This module is yet another testament to why Drupal stands out in comparison with other content management systems. 

Check out Specbee’s range of Drupal services to find out how we can help you with your upcoming Drupal project. We’d love to talk!

Drupal Planet Drupal Module Drupal 9 Drupal 9 Module Drupal Tutorial Drupal Development Shefali ShettyApr 05, 2017 Subscribe For Our Newsletter And Stay Updated Subscribe

Leave us a Comment

  Shefali ShettyApr 05, 2017 Recent Posts Managing Editorial Workflows with the Content Moderation Module in Drupal 9 Image Front-End Frameworks for Drupal – Helping you to Make a Better Choice Image Boost Up your Drupal 9 SEO game - Implementing the RobotsTxt module in Drupal 9 Want to extract the maximum out of Drupal? TALK TO US Featured Success Stories

A Drupal powered multi-site, multi-lingual platform to enable a unified user experience at SEMI.


Discover how our technology enabled UX Magazine to cater to their massive audience and launch outreach programs.


Discover how a Drupal powered internal portal encouraged the sellers at Flipkart to obtain the latest insights with respect to a particular domain.


Lullabot: Avoiding Drupal Disillusionment: Drupal for the Long-Term

Mon, 02/15/2021 - 23:31

In our many years of helping clients, large and small, build and optimize their websites, Lullabot has seen a common pattern in digital projects: recurring cycles ranging from energy and enthusiasm to disillusionment and destruction.

rachel_norfolk: 87% cleaner than other web pages tested...

Mon, 02/15/2021 - 11:21
87% cleaner than other web pages tested...

So, it seems that this website does pretty well from an energy usage point of view - a good sign for an essentially "out of the box" Drupal 9 site. The Drupal community working on the new Olivero theme should be proud of themselves.

How does your website fair? Find out at and do let me know!

Tags Blog: Employee Experience at Agiledrop - 8 lessons learned from 2020

Mon, 02/15/2021 - 08:57

This article will take a look at 8 important employee experience lessons that we learned from the changes to work in 2020.


#! code: Drupal 9: Cascading Ajax Select Forms

Sun, 02/14/2021 - 16:04

Tying together different select elements in a form is done with very little effort thanks to the ajax and states system built into Drupal 9. This means that any Drupal form can have a select element that shows and updates options into another select element within the same form. Using this system you can create a hierarchical system where one select will show and populate another select element with items dependent on the first. This is great for giving the user the ability to drill down into options that are dependent on each other. As the user selects the first select element the second select element will populate with data and be shown on the screen.

It does, however, require a few things to be in place first and so takes a little while to set up. There are also two different ways to set up this kind of system, both of which have their limitations. I found a lot of information out there on how to implement one system, but not the other. I thought I would create a post to show how each system can be set up and where it can be used.

The Form

Before jumping into the ajax components we need a form. The simplest, independent and most universally accepted set of select elements I could think of is a date picker. You wouldn't normally display the date as a set of select elements (although I have seen this before), but the data behind it is simple enough to understand and doesn't require any other aspects from Drupal to use.

Here is the form we will generate here.

Read more.