Upgrade Your Drupal Skills

We trained 1,000+ Drupal Developers over the last decade.

See Advanced Courses NAH, I know Enough
Mar 10 2021
Mar 10

The Drupal content management system is an amazing piece of software. It’s an open source project that people all over the world contribute to and it’s currently celebrating its 20th birthday. It’s a rare beast in the computing world that survives for two decades as a single system. Depending on who you ask, Drupal powers something like 2% of all websites on Earth. Drupal can do everything from simple “brochureware” sites to elaborate platforms that integrate with dozens of other services. However, all that power and flexibility comes with a price.

The Problem

Like any large, complicated system that’s been around this long, Drupal has a lot of bugs. At the time of this writing, we’re approaching 100,000 issues ever submitted to the Drupal core issue queue. That includes feature requests, tasks, and so on, but half of those issues are bug reports. Of course, that includes every bug report for the last 20 years, including everything we’ve already fixed (~24K), bugs that were reported that no one else could reproduce, etc. But right now, there are 10,401 open bug reports.

Not every bug impacts every site, but nearly every site is impacted by at least one of them. Most of us who build Drupal sites will run into at least something that doesn’t quite work as expected. Being an open source software project, the ethical thing to do when you encounter a bug is to try to fix it “upstream.” Since each of us is benefitting from literally millions of hours of developer time that have been contributed to the core system over the last 20 years, it’s up to all of us to pitch in and help ensure that those bugs are reported and fixed.

Sometimes, you’ve found an entirely new bug, but that’s honestly pretty rare. Hopefully when you encounter a problem, you search for existing bug reports. In most cases, the bug is already known. In many of those cases, someone has already come up with a fix (~5K). So why did you still encounter the bug? Running into a bug someone else already found, and fixed, can be extremely frustrating.

Drupal has very high standards for any changes that are accepted into the core system. Just because you’ve identified a bug, and even come up with a fix, it doesn’t mean that the fix will be included in the next release. All changes, especially bug reports, must include automated tests to demonstrate the bug and to prove that the fix solves it. The bug report itself must be well written and properly scoped. The code must strictly adhere to Drupal core’s coding standards. There are a number of “gates” your change must get through before it can be committed, including documentation, performance, accessibility, usability, and the aforementioned testing.

All this policy and process helps ensure that Drupal’s codebase keeps getting better, not worse, as time goes on. It means that new releases don’t (usually) break your existing site. It means that websites built with Drupal tend to be more accessible. It means that a bug “fix” isn’t going to slow down your site, or make the user interface more confusing, or otherwise add more technical debt to the system. But it also means that when you’ve identified a bug, you’ve got a lot of “hoops to jump through” to get it fixed and released.

These standards are great, and they all have wonderful reasons to exist. They arose to address real problems, and are part of what makes the core system powerful, flexible and reliable enough to build so many incredible things with. But it’s collectively an enormous waste of time for the community when known bugs linger and fixes aren’t polished to a sufficient level of perfection to be included in the next release.

Folks without as much experience debugging such a big complex system can spend many hours trying to understand what’s happening. Some won’t succeed, and might give up on Drupal entirely. Others might quickly smell trouble, know where in the system to look to make sense of it, search the issue queue, find an existing report, review the proposed solution and even start applying the latest patch in their composer.json file. But then the bug lingers, people don’t have time to keep “rerolling” their fix to address points raised by community peer review. Or worse, there is no peer review, no one else looks at your proposed fix and the issue sits in “Needs review” status (~2400) for months or years. Meanwhile, other changes are made to Drupal that conflict and the patch no longer applies. Hundreds (maybe thousands?) of sites will each have to spend time after the next release to find or produce a new patch that applies to the current version. A single bug can cost the community many thousands of hours of collective time.

A Solution

This sad state of affairs is what led some of us to launch the Bug Smash Initiative. It’s a community effort to fix the known bugs in Drupal core. We started it in June of 2020, and since then, we’ve already closed nearly 1000 bugs, including over 200 that we’ve actually fixed. (The other ~800 were open bug reports that we triaged and discovered are no longer valid, are duplicates with other bugs, are already fixed, etc). We’re definitely not the only people trying to fix bugs in Drupal, but we’re working together to make a dent in that backlog of 10K bugs. We want to help ensure that more bugs get resolved and the fixes get released, so that as a community we can focus on all the other fabulous things we can do with this system (build better sites, make the world a better place, make the community more inclusive, diverse and friendly, or spend more time away from the computer doing whatever else brings us joy).

One of the best things about contributing to the Bug Smash Initiative is that we’ve got a culture of “review swaps”. If I’ve got a bug I’m trying to smash, and I post a new patch (or push more commits to the issue fork), someone else needs to review those changes before one of the core committers will even look at it. So I can jump into the #bugsmash Slack channel and start a thread asking for a review swap. If anyone else is willing to look at my changes, they can give me a link to a bug they’ve been working on and I’ll review their fix.

We can quickly chat about how to improve the code, anything that needs better comments and documentation, how to write a good test for the bug, make sure all the core gates are being satisfied and so on. Instead of waiting weeks or months for someone else to look at it, we might get a few iterations on each fix within an hour. We can learn from each other about best practices. Other folks in the channel might chime in with their own experience and expertise. Instead of trying to do it alone, we can rely on some mutual support to get something done more quickly.

When we finally mark each issue “Reviewed & tested by the community” (RTBC), it’s more likely that the core committers will actually commit it (instead of finding their own problems with the code and sending it back to Needs work). With more eyes on the bug and the proposed solution, we make a better fix that’s more likely to be committed and released. Everyone wins.

How You Can Contribute

I’m extremely happy to be working for TEN7 as my “day job.” It’s a fabulous company that sees the value in contributing “upstream”. They give me 5 hours a week “on the clock” to do whatever community contributions I want to work on. Part of it goes to “maintaining” (if you can call it that) some of the contributed modules I’ve shared with the community or co-maintain, but most of that time goes to the Bug Smash Initiative, since I know what a huge collective win it is when we fix more of these known bugs. It means that every site we build is being built on a stronger foundation. It means we can spend more time adding new features and making things better for our clients (and most importantly, their users), not just working around weird and broken behavior. It means when a client asks us to fix a problem they’re having, we get it all the way fixed, so that future versions of Drupal will include the fix, instead of having to allocate hours every few months to keep our bug fix working as Drupal makes subsequent releases.

More Drupal shops could actively sponsor their employees and contractors in this way. We definitely need more people to participate in this initiative, and asking folks to do it as a labor of love on nights and weekends isn’t going to resolve the backlog. If you’re working for a client to fix something, please contribute to getting the fix done properly in core. It’s better for your client, since they won’t have to pay you again in a few months to get the fix to apply when you upgrade their site to the latest security release (which you’re already doing regularly, right?). It’s better for you, since you’ll gain experience, earn credibility in the community and you’ll have a sense of accomplishment that you helped improve Drupal core. It’s better for the community, since hundreds or thousands of other people won’t run into the same bug and waste their time working around something you already helped solve.

Our community initiative page includes a lot of info on how to jump in and participate. During the upcoming DrupalCon, Wednesday (2021-04-14) will be focused on both the Bug Smash Initiative and the Automatic Updates Initiative (so that sites can automatically and securely apply updates when critical security bugs are fixed). There will be a bunch of folks available throughout the conference, but especially on that day, to mentor you through the steps on helping to fix a bug in Drupal core. There are active members of our Slack channel spread throughout the globe, so no matter what timezone you’re in, you’re likely to find someone in there who can help you get started.

Please join us. Drupal workers of the world unite! We have nothing to lose but our frustration (and hopefully the patches section in our composer.json files). We have a world to win.

Mar 10 2021
Mar 10

We cannot think of a better way of wrapping up a whole week at DrupalCon than a focused look at the next major release of Drupal, version 10, and how we will get there.

Rachel Lawson caught up with some of the Initiative Team to find out what they had to tell us.

Mar 10 2021
Mar 10

As we move into the vaccination phase of the COVID-19 pandemic, health systems are facing a new challenge: effectively communicating about vaccine availability, eligibility, and scheduling. For many systems their website is the primary - and sometimes only - channel of communication about vaccination.

This is a content strategy challenge: how should we structure the patient journey to prioritize quick answers to top patient concerns while enabling visitors to drill down to get more information at any point?

We just teamed up with Loyola Medicine to update their COVID-19 pages, and in this post we’ll walk you through the before and after.


Screenshot of Loyola's COVID-19 information page from the start of the pandemic

At the start of the pandemic people had a flurry of questions: What is COVID-19, what are the risks, what are the symptoms, how can I protect myself, when should I seek medical help, how do I get tested, what does this mean for patients who need non-Covid medical care? 

Loyola’s original COVID-19 page shows a patient journey focused on demonstrating immediately that Loyola can answer all of those questions. The tabbed interface at the top of the page helps visitors quickly find and click on the tab that matches their need.


Screenshot of Loyola's COVID-19 information page with vaccine information

Right now, the question that is driving the majority of patient inquiries about COVID-19 is: how do I get the vaccine? This is a much more task-oriented goal than the early need for accurate information, which means that the patient journey can be radically reshaped to prioritize vaccine scheduling steps and streamline the rest of the content.

The new Loyola COVID-19 landing page leads with the primary call to action question: Are you an active Loyola patient or not? Visitors who are active Loyola patients are directed to MyChart to register, visitors who are not active Loyola patients are directed to registration through the city/county/state.

By making the first patient “doorway” a path to vaccine registration, Loyola is addressing the top priority of the majority of their visitors. However, some visitors are still looking for other COVID-19 information, and that content hasn’t gone away - it’s simply been deprioritized. A visitor scrolling down the page can still quickly and easily find clear, bold links to more detailed information about symptoms, prevention, Loyola’s safety precautions, vaccine safety, and how to care for someone who is ill.

How We Did It

Creating and publishing this new page took five business days as a routine part of the ongoing strategic services and managed support we provide to the Loyola team. There was no need to spin up a new project or team because we were leveraging their existing Drupal 8 platform and design system.

This page was built using a content type designed to enable Loyola Medicine to reorganize their page-level content strategy as priorities change. This template is a flexible landing page: it has a hero image, space for body copy, and then a big field that you can use to mix and match a wide range of visual components. 

With this template the Loyola Medicine team can build pages that look really different and deliver against different page-level content strategies without having to route new page development through Palantir or other support vendors. In this case, they brought us on to speed the new page along, but going forward they can adjust it themselves.

Extensible platforms like the ones we’ve built for Loyola Medicine, HonorHealth, and Baptist Health South Florida enable marketing teams to optimize their patient journey as the realities on the ground change.

Photo by Ivan Diaz on Unsplash

Mar 10 2021
Mar 10

Composer 2.0 was released 4 months ago. I don't want to repeat the improvements announced in the release post (check them! They are really interesting), but one stands out among all: the performance.

Source: blog.packagist.com by Jordi Boggiano

Ok, this probably caught your eye. You want to start using Composer 2.0. But software upgrades are never free, there's always some pain waiting to jump over you. While this is true on many occasions, it seems this time is not. As stated in the release post, Composer 2.0 still supports PHP 5.3 and above, like Composer 1. No issues with the PHP version. Good. composer.lock files are interoperable between versions. This means you can use the same composer.json with Composer 1 and Composer 2. You can try Composer 2 and if anything goes wrong just roll back to Composer 1, your composer.json won't' be hurt during the process. What about new syntax? New commands, removed commands? Good question, but no worries: most commands and arguments are exactly the same.

For a detailed description of all the changes of Composer 2, I recommend this article from PHP.Watch: "Composer 2: What's new and changed"

And how to start using Composer 2? It depends on how you installed Composer, but if the Composer executable is under your control (aka you have the permissions to modify it) you only have to run:

composer selfupdate --2

Composer will replace its version with the new shiny Composer 2 release.

Once done, you can try Composer 2 with one of your projects:

composer update --dry-run

Is everything ok? Amazing! Continue using Composer 2. Did something go wrong? Downgrade to Composer 1:

composer selfupdate --1

Honestly, there's a point where issues may arise: the Composer plugins. Because Composer has changed internally a little bit, previous plugins may fail when used with Composer 2. Luckily, the time has passed and many plugins have been updated to work with Composer 2.

Drupal and Composer 2

Drupal loves Composer. And Drupal Community loves Composer too. That's why some smart people were working to make sure Drupal works seamlessly with Composer 2.  The main task was to update the required Composer plugins so they work with Composer 2. The task was completed even before Composer 2 was officially released (the change record is dated almost two weeks before Composer 2).

But, what is the actual experience using Composer 2 on real projects? Pretty good, actually. As said before, Composer plugins can be an issue. However, the Drupal Community provides a documentation page for the transition to Composer 2 where you can see all the plugins that need to be updated to work with Composer 2, the plugins that are not needed anymore (like the previously essential Prestissimo plugin) and the plugins they need work to be compatible with Composer 2. For the development environment, we use a custom boilerplate that provides a complete working Drupal site: Docker containers ready to run drupal (thanks to  Docker4Drupal), MkDocs to document the project, Behat ready to be used, automatic code checking and some other tools. Because Docker4Drupal already provides images with Composer 2, we only had to update the Docker images. Easy!

Composer 2 also provides a command to check the platform requirements that also checks plugins:

composer check-platform-reqs

Also, it is interesting to note a change in how Composer 2 deals with repositories. With Composer v2, Composer will look for packages in all repositories configured in the composer.json file in the order they are set. If a package is found in a repository, Composer will not look for that package in any other repositories further down the line. This is slightly different from how Composer 1 behaves and can produce different results. If this is your case, just check the repositories property in the composer.json file.

By the way, Composer, 1 and 2, always have been very secure when it comes to handling repositories. A month ago, the article "Dependency Confusion: How I Hacked Into Apple, Microsoft and Dozens of Other Companies"  by Alex Birsan explained how he used package managers like npm (Javascript), pip (Python), and gems (Ruby) to install malicious code on those companies. It is pretty interesting. And what about Composer? It is not affected, as Nils Adermann explains in this article: "Preventing Dependency Confusion in PHP with Composer".

Some performance insights

Let's do some simplistic tests. I've collected the most installed Drupal modules from Drupal.org. I'm going to set up a Drupal project and require those 100 modules. 

The commands are the same for both Composer versions:

composer create-project drupal/recommended-project test-site
cd test-site
composer config minimum-stability dev
composer clear-cache
composer requiere --profile drupal/token drupal/ctools drupal/admin_toolbar drupal/pathauto drupal/metatag drupal/entity_reference_revisions drupal/redirect drupal/paragraphs drupal/field_group drupal/simple_sitemap drupal/inline_entity_form drupal/entity_browser drupal/search_api drupal/twig_tweak drupal/mailsystem drupal/config_filter drupal/address drupal/entity drupal/embed drupal/crop drupal/video_embed_field drupal/imce drupal/views_infinite_scroll drupal/google_analytics drupal/webform drupal/jquery_ui drupal/editor_advanced_link drupal/better_exposed_filters drupal/dropzonejs drupal/config_update drupal/eu_cookie_compliance drupal/colorbox drupal/block_class drupal/diff drupal/entity_embed drupal/extlink drupal/focal_point drupal/xmlsitemap drupal/ds drupal/views_bulk_operations drupal/easy_breadcrumb drupal/adminimal_admin_toolbar drupal/scheduler drupal/menu_link_attributes drupal/blazy drupal/smtp drupal/link_attributes drupal/config_split:^2.0 drupal/migrate_tools drupal/menu_block drupal/fontawesome drupal/svg_image drupal/swiftmailer drupal/smart_trim drupal/page_manager drupal/rabbit_hole drupal/key drupal/allowed_formats drupal/profile drupal/devel drupal/block_field drupal/robotstxt drupal/facets drupal/file_mdm drupal/password_policy drupal/autologout drupal/color_field drupal/memcache drupal/acquia_connector drupal/recaptcha drupal/restui drupal/anchor_link drupal/token_filter drupal/geofield drupal/views_bootstrap drupal/linkit:^6.0.0 drupal/views_data_export drupal/real_aes drupal/viewsreference drupal/entity_clone drupal/jquery_ui_datepicker drupal/username_enumeration_prevention drupal/encrypt drupal/contact_storage drupal/file_browser drupal/panels drupal/csp drupal/commerce drupal/feeds drupal/chosen drupal/default_content drupal/conditional_fields drupal/image_widget_crop drupal/entity_usage drupal/views_slideshow drupal/redis drupal/advagg

As you see, I set the minimum stability to "dev" and added a version string for the module LinkIt and Config Split. If not, a dependency problem arises. However, it is the same for both Composer versions, both deal with the same set of rules. Also, the Composer cache is cleared to make sure there's no speed up due to cached data.

The results

The first step is to download Drupal using Composer:

The second  step, the heavy one, is to require the 100 most installed modules:

Impressive! In both cases, Composer 2 is about 10 times faster than Composer 1, and the memory consumption drops dramatically. Yes, installing 100 modules in one shot is not something you would do every day, but when you need it you'll be happy to need just 40 MB instead of almost 2 Gigabytes of available memory.

You may argue that one test is not enough and I would agree, but seeing such a huge difference I think there's no need to know the exactly insane percentage of improvement Composer 2 offers.

More results

Let's say we are not going to use Redis, so let's remove the Redis module:

composer clear-cache
composer remove --profile drupal/redis

Composer 2 requires 100 times less memory and it is almost 400 times faster when removing a library than Composer 1! At this point, I guess there's no need for more tests: Composer 2 is incredible better doing its job than Composer 1.

A real example

We have another impressive proof, in this case from a real-life example. We maintain many different projects and this means we have to keep a lot of Drupal site up to date. Manually checking all the sites is not an option. So we have a nice Jenkins job that happily checks projects when we sleep. We focus on stuff that matters and the machine has fun moving and testing millions of bits. A good deal. The job detects all available updates using Composer and then updates one library, commits it and goes for the next. Once this is done, it runs the test suite. The next morning we have Jenkins telling us if we can safely upgrade. This is great, but unfortunately, the jobs were very slow. Until Composer 2 came to us.

This graph shows the time need by the job to complete all tasks. Do you spot when we started using Composer 2 on that project? I bet I don't need to add a red arrow pointing it.


It is simple: start using Composer 2 as soon as possible. Composer 1  is extremely slow, that's the truth, and Composer 2 is extremely fast.

Make this cartoon obsolete, unless you still want an excuse for a coffee break.


The impostor syndrome is a thing, in the Drupal Community as well as many other communities. Nobody is perfect and it is easy to spot our own mistakes and think we are not good enough. But I don't want to talk about this because there are a lot of excellent talks and articles about this topic. I just want to point out this: Composer 1 was a good piece of software and it took the PHP world by storm by its dependency management. However, seeing the incredible improvement of version 2, don't you think it could have been much better in the first place? Sure, it could, but even with such flaws, it was a great software and worth it. Remember this when you judge yourself and your work too harshly.

Mar 09 2021
Mar 09
Meer mit Tunnel

When a new project is started, everyone is usually full of anticipation and motivated to get started right away in order to "really get things done" and be successful. This enthusiasm is absolutely good and important, but above all it is important to maintain it throughout the entire project.

As an agency, we accompany many projects in parallel, some of them even from the very beginning. Again and again we notice: One of the biggest sticking points is the preparation and work prior to the actual start of the project. If there is a lack of understanding, coordination and information here, this can be felt for a long time during the project and can make the work more difficult. Therefore, we at undpaul have developed a method with our Discovery Workshop, which helps to ensure a good and coordinated start to every new project.

Discovery vs. Discovery

There are a lot of meanings and definitions for the term "Discovery". In our understanding, we divide Discovery into the Discovery Workshop and the Discovery Phase. Both have in common that they take place prior to the actual development and project work. The main difference is the time frame and therefore the depth and scope in which the content is elaborated.

During the Discovery Workshop as the first step into a project, the focus is on getting to know the participants and the project, a common understanding of the goals and framework conditions as well as the general basis for the upcoming collaboration. In the second step (depending on the size of the project), the requirements are formulated more concretely in a Discovery Phase and the user experience of the site as well as the target group (analysis) are taken into consideration.

What do I get out of a Discovery Workshop?

Especially at the beginning of new partnerships, we often have to convince our customers to do a Discovery Workshop. Again and again we hear arguments like:

  • "We already have our requirements written down."
  • "This costs a lot of money and we don't have a website (or a product) in the end."
  • "Our project manager is already doing this / has all the information available."
  • "Our requirements are described by us down to the smallest detail."

So why is a Discovery Workshop so useful and important? Simply put, to reduce risk, build trust, and develop a common goal or understanding of goals.

Let's make it a little more specific with some examples:

  • Only a reasonable solution will be successful and also make the project successful. But this requires a project team that fully understands the goals and requirements. This means on the one hand to have the same understanding of the goals and on the other hand to see the requirements in context in order to bring in the best solutions and alternatives at any time.
  • If the goals are clear and unambiguous for the entire project team, the team has "Purpose & Direction", so to speak, then decisions can be made much faster and also better in everyday work.
  • In addition, we like to recommend our clients to see the Discovery Workshop as a way of getting to know the agency. With the smaller own project, the cooperation and sympathy can already be tested in the real "working world".

Hands-On: Content and tools

For a Discovery Workshop, we have come up with a question collection that applies well in most projects. Basically, we divide the question collection into three areas:

  1. The area from the client's point of view mainly deals with the overall goals.
  2. The project area includes everything that concerns the project or product itself. From this the requirements result later.
  3. The framework area covers the basic framework, e.g. technical requirements but also time and budget plan.
Fragen für eine Discovery Questions for a Discovery Workshop (German only)

Most of our Discovery Workshops take place remotely - also totally unrelated to the current Corona situation. We use a video conference in combination with a collaborative meeting tool. Where we have found no relevant difference between the different videoconferencing tools for our Discovery Workshop, we currently prefer to use Miro for the collaborative creative process and documentation.

Miro Board für eine Discovery Example agenda of a Discovery Workshop in Miro (German only)

The main thing is to do it!

There is something new to learn in every Discovery Workshop. However, as with many workshops and preparatory work, there is no "right or wrong" in methods and execution. The very most important point is: do a Discovery when starting a new project! The time you put into preparation so often makes the work go more smoothly and successfully as the project progresses.

Mar 09 2021
Mar 09

The American Federation of Teachers is one of the largest unions in the United States, representing 1.7 million members, including educators of all types - from teachers to nurses to support staff, and others. In their roles as educators and staff, their mission is to provide opportunities and education for everyone.

Share My Lesson is the AFT’s website for sharing lessons, lesson plans, and other resources for educators of all types. These free resources provide a platform for teachers, homeschoolers, or anyone working with children as an educator. From preschool to adult education, Share My Lesson provides a place for people to find and share educational materials.

In this Tag1 Team Talk, Managing Director Michael Meyers, and COO Peta Hoyes are joined by Kelly Booz, the Director of Share My Lesson and eLearning at the American Federation of Teachers.

In part one of our series on Share My Lesson, learn about what Share My Lesson is, what it does, and how it has successfully grown without becoming a victim of its own success.

[embedded content]

For a transcript of this video, see Transcript - Kelly Booz, Share My Lesson part 1.

Photo by lucas law on Unsplash

Mar 09 2021
Mar 09

Different Drupal developers have different techniques to backup their Drupal websites. In this article, we will be talking about two of my go-to methods to backup a Drupal 8 or Drupal 9 website. One with the help of the Backup and migrate Drupal module. And the other way is with Cron jobs using CLI. 

Data loss can be brutal and devastating, no matter who or what caused it. The good news is that it can be prevented by taking regular backups of your site. Sometimes, backups are done every day and sometimes, occasionally. The regularity depends on various factors like the size of your Drupal site or how often you update the website. Luckily, Drupal 8 and 9 provides you with easier options to backup and restore your website with the help of the Backup and migrate Drupal module and via CLI.

Automated Backups on Drupal

Using the Backup and Migrate Module for Drupal 8 and 9

The backup and migrate module can backup both database as well as files. It can also backup the entire Drupal application folder. The module also has an encryption feature which requires you to download an additional library called the Defuse PHP encryption library-

composer require defuse/php-encryption

Steps for usage:

  • Install the Backup and Migrate module.
  • Create a private directory and assign with writable permissions (similar to what we’d give to the files folder).
  • Set the path of private directory in settings.php file so that the module can use it for storing the backups.
Backup and Migrate Module

UI for the Backup and Migrate Module

Once you install the module, head to Administration -> Configuration -> Development -> Backup and Migrate. You will see 5 tabs:

Backup – where you can do quick backups. Once you click on Backup now, you will be able to see it in the Saved Backups tab.
Restore – where you can restore the earlier backups
Saved Backups – will have the list of all the backups you have taken so far
Schedules – where you can schedule your backups
Settings – contains general settings and options for this module


This is one of the most important features of the module. The module provides an automated scheduler where you can schedule your backup. This runs automatically during every cron run. You can add as many schedules as you want, to take backups of the database, public or private files directories or the entire site.

Viewing All Schedules

Viewing all the Schedules

Configuring the Schedule

Here is where you can add or edit the schedules. You can give a name for the schedule. There’s an option to enable or disable the scheduler. Select one of the various backup sources like the database, public or private files, directories, or the entire site. Or add your own in the Settings tab. If you are backing up both the database and files, you can have different backup destinations configured for each of the backup type. This means you can have a different destination for the database backups, a different destination for the file backups, and such. The module also provides configurations for adding more destinations of your choice in the Settings tab. The Frequency option lets you specify how often you want a backup to take place as a cron job. You can select options from hours, minutes, days, and weeks. The Numbers to keep option allows us to specify the number of backups we want to keep. It automatically deletes the older backups once it reaches the limit that you set, thereby solving memory and storage problems. 

Configuring Schedules

Configuring the Schedules

Adding Backup Source

Adding your Backup Source

Are there any limitations?

Sadly, yes. As per my personal experience, I’ve noticed that when the database size grows, I do run into Time-out errors. And this is a problem because on certain servers, we cannot increase the maximum execution time for the database to execute. The other issue that I have faced is memory issue. It may run out of memory in some cases depending on the configuration of the server or the database size or the size of the backup. When we run into such issues, we can use the CLI method.

The CLI Method to Backup 

In the command-line interface method, we can perform backups using these two methods:

  • Using Drush in combination with the Crontab
  • Using Native commands and Crontab depending on what we need to backup.

Using Drush and Crontab

Scenario: Scheduling a database backup at 3 a.m. every morning –


0 3 * * *  -r  sql:dump --result-file=.sql --gzip


0 3 * * * /var/www/html/drupal_demo/vendor/drush/drush/drush -r 
/var/www/html/drupal_demo sql:dump --result-file=/var/www/html/drupal_demo/db-dump-`date +%d%m%Y%H%M%S`.sql --gzip

Using Native commands and Crontab

Scenario: The same one - scheduling a database backup at 3 a.m. every morning -


0 3 * * * mysqldump -u  -p  | gzip -c > .sql.gz


0 3 * * * mysqldump -u drupal -p drupal_demo | gzip -c > 
/var/www/html/drupal_demo/db-dump-`date +%d%m%Y%H%M%S`.sql.gz

Scenario: Scheduling a Files backup at 5 a.m. every morning -


0 5 * * * tar -czvf .tgz 


0 5 * * * tar -czvf /home/ubuntu/backups/drupal_demo-files-`date +%d%m%Y%H%M%S`.tgz 

Mar 09 2021
Mar 09
The Drupal 9 logo can be seen on the left, while on the right, there are three logos of React, Vue and Angular.

The 21st century is a pretty marvelous time to live in. There is so much that can be achieved today with limitless possibilities. There aren’t any inhibitions found in people. If we want it, we get it. I mean the 21st century folks have landed on Mars, so is there anything that we can’t do? I think not. 

If you look at all of our accomplishments, you’ll find that technology is at the root of it all. It is the advancements we have made in science that has allowed the present time to be as marvelous as it is.

Talking about all of these technologies would take as long as a year, even if I do it succinctly. So, I’ll not get into it. However, I will talk about one segment of tech that has had a profound effect in the way we surf the web. And it is the web development process. 

To be concise, I want to discuss a trend in web development that has aided the developers, designers and project managers to build to their heart’s desire without having to rely on one specific technology, which used to constraint them. It is a trend that eliminates restraint and promotes innovation. 

Let’s find out what it is. 

The Drupal Prequel

Before I get to the main agenda of this blog, I felt like I needed to talk about the underlying technology, which is Drupal. Being a content management software, Drupal ticks all the right boxes when it comes to building versatile web experiences. 

To build websites from the ground up and being completely responsible for all of the site’s aspects is deemed as Drupal being traditional or monolithic. What it means is that Drupal would have total control over a site’s technological stack. The front end and all the presentational aspects along with the back end and all of its data layers would fall within the realms of Drupal. Such use of Drupal is quite sufficient for standalone websites and applications, where editorial needs surpass developers' needs and the former seeks complete control over all the visual elements of the page. With Drupal offering features like in-place editing and layout management, I don’t disagree with wanting such control. 

However, what happens when the developers want to start implementing the current technology on the front end? What happens when the site needs more interactivity than before? Wouldn’t React or Angular seem like a better option to achieve that? 

I think they would and that brings me to the trend I was talking about in the introduction, being Decoupled Drupal.

Unfettered innovation and Decoupled Drupal 

Decoupled Drupal essentially removes the link between the frontend and backend and makes the developers free to do what they want with the presentation layer of the site. The reason for this separation is the flexibility it gives to the architectural development, empowering the front end developers to have total control over the projects’s rendered markup along with the user experience.

It’s not just the control over the frontend layer that motivates developers to push for decoupling, there are plenty of other benefits that make the feat of decoupling too good to give up. 

These include; 

  • Building impressive features through server-side rendering or Node.js; 
  • Securing data through a publicly inaccessible CMS; 
  • Publishing your content on all forms of IOT devices; 
  • Increasing the speed and efficiency of work with a clear separation of concerns and duties, less interdependence and less hassle; 
  • Updating the software becomes quicker too, without any impact on the working of the other end;
  • Finally, being able to take advantage of the rich JavaScript framework or a static site generator of your choice for an immaculately interactive site. 

All of these advantages of decoupling have made the trend to follow. Depending on your need, decoupled Drupal has the potential of building your project with its inbuilt web services and APIs. REST, JSON:API, and GraphQL are the prominent contenders in this regard so that the flow of information from the front to the back is seamless.

With decoupling, it is also easy to find the right personnel for your project. When you are building a frontend with JavaScript, you would need developers fluent in JS, and it is a well known fact that there are far more JS developers than Twig.

However, decoupling Drupal can also leave you in a bit of conundrum as well. The thing is when you decouple Drupal, you are saying goodbye to many of the out-of-the-box features Drupal offers such as layout and display management, content previews and certain security features. Some of these can be written from scratch by your developers, but there are more than a few that cannot be compensated for. 

So, in a situation like this how do you lessen the losses? How do you ensure that you get the unfettered innovative edge on the front end and still be able to reap the benefits of Drupal’s frontend capabilities? 

The Middle Ground: Progressively Decoupled Drupal

How to decouple Drupal? There is a perfectly reasonable answer to the decoupling dilemma and it lies in its categories. Decoupling Drupal can be achieved in two different aspects. 

  • The first one is when you decouple completely, totally extracting the frontend from the backend. This is called fully decoupled Drupal architecture. It can be done for dynamic sites using JavaScript or for static sites by relying on static site generators like Gatsby and Metalsmith
  • In the second approach, you will separate the presentation and data layers, however, there won’t be total interdependence between the two. By this, I mean some aspects of the front end would be developed outside of Drupal and the remaining would house inside of Drupal. This is called progressively decoupled Drupal architecture. 

In the first approach, with a total separation you would have to part with Drupal’s out-of-the-box features on the frontend, there is no going around it. However, when you take up the second approach, which is to progressively decouple Drupal that won’t be the case. You would get to play with other front end technologies, yet enjoy all the functionality Drupal has to offer. More on best frontend technologies for decoupled Drupal here.

You must be wondering how that becomes possible, and let me tell you that. 

When progressively decoupled Drupal is in the picture, you get to build a frontend using Drupal and all its out-of-the-box features. Once you have done that, then you can layer a JavaScript framework on top of the layer you have built. 

The difference between traditional Drupal architecture and progressively decoupled Drupal architecture is hown through a diagram.

It is important to understand that in progressively decoupled Drupal, it is up to you and your needs to decide the kind of responsibility you are to dole on JavaScript. The JS layer on top of the Drupal frontend could be responsible for rendering an independent block or component on a single page or it could go as far as to render every single aspect of that page. 

The kind of progressive decoupling you would do, would have a direct impact on the kind of control your editors would have. More JavaScript rendering would mean less editor control because Drupal’s administrative capabilities would diminish on the frontend, while less JS rendering would automatically mean more room for Drupal’s administrative capabilities and more power to the editors.  

Progressively decoupled Drupal is indeed the perfect balance between advanced frontend technologies and the powerful capabilities of Drupal. You would not need to compromise on one to get the other. The reference of the middle ground for web development in the decoupled sense is an accurate description of the progressive architectural approach.

But how do you decide whether taking up progressive decoupling is the better choice. The question progressively decoupled Drupal or fully decoupled Drupal can often prove to be quite difficult to answer, yet we have to try. So, let’s do just that.

Think of the Editors or the Developers?

For any web project, be it a site or an application, there are two important players. These are the people who bring the project alive, being the developers, and the people who become the voice of the project, being the content authors and editors. So when deciding whether to go for coupled, fully decoupled or progressively decoupled Drupal approaches, you have to keep them in mind. 

For the editors, you have to think about; 

  • The kind of ease they would need in manipulating page content and layout; 
  • The kind of in-context tools they would require; 
  • The kind of accessibility they would need in Drupal’s HTML by default; 
  • And the kind of previews they would be in need of without custom development

For the developers, you would have to think about; 

  • The king of control they want over the frontend presentation; 
  • The kind of server-side rendering they want; 
  • The kind of APIs they want to write JavaScript;
  • And the kind data security they want.

Assuming the editors want it all, an ease of manipulating page content and layout, tools like in-place editing and contextual links, the ability to preview unpublished content and a constant access to content. Now, assuming that the developers also require the same kind of ease, with control, with the ability to choose between server-side rendering and Node.js built features, with JSON:API at work and a publicly inaccessible CMS. 

If that is the case, progressively decoupled Drupal architecture would help you give the best to both your developers and editors. The developers would be able to adopt JavaScript for portions of the pages and satiate their appetite for interactivity and advanced development. At the same time, the editors would be able to work without any blocks with all of the Drupal features they always wanted. A win-win situation for the crucial players. 

OSL and A Progressively Decoupled Drupal Project

We, at OpenSense Labs, have worked with a global brand, Produce Market Guide (PMG) to cater to a specific need by performing progressive decoupling. 

PMG is a leading name in the market for producing commodity information, trends and data analysis. A part of the Farm Journal family, but aimed to provide an advanced and enriching experience to its users. However, because of a slow search feature that was becoming impossible. 

The picture shows a screenshot of the search bar of the Product Market Guide's site, which was built using Progressively Decoupled Drupal Architecture and React.

Other than that, the site was functioning pretty well with Drupal. So, in order to rectify the slow search feature, a progressively decoupled Drupal approach was implemented by OSL. using React and elastic, the new search function was built and this improved the time it took to present the result to mere seconds. Look at the detailed case study for PMG for a clearer picture of the project. 

This was one project that made our developers understand decoupled Drupal a lot better. The fact that you do not have to build an entire front end from the ground up is a prominent benefit of the progressive approach. Using JS for just one function, making it as advanced and interactive as possible, and calling it a day is essentially how progressively decoupled Drupal works. And I think there are very few architectural approaches better than this one.

The Final Verdict 

I want to conclude by giving you another example. 

“Imagine you have a site that needs a lot of interactive elements that would encompass user choices and give the user the option of getting a personalised experience based on his history, with future recommendations. Also, imagine that your site has a lot of traffic and a lot of content to manage for which you are bound to need highly competent content management and site building tools.”

For such a site, neither the coupled Drupal architecture would work, nor would the fully decoupled architecture work. It needs a balance of the two. 


Because Drupal alone cannot build a highly interactive site like this one, it would have to rely on JavaScript and the likes. However, with high traffic, a lot of the data is often cacheable and Drupal is equipped to handle that very well. If the content isn’t handled properly, the performance of the site would be affected drastically. That is why a middle ground has to be chosen and progressively decoupled Drupal is just that. I wouldn’t be totally wrong in saying that the future of decoupling Drupal could lie in doing it progressively. Do you agree?

Mar 09 2021
Mar 09

A to-do list is the primary tool of a productive person. It helps in everyday work and allows you to carry out your duties better. As it turns out, some of its elements can also be entered into the administration panel of a Drupal website.

In this article I'll take a closer look at the Checklist API module, which provides Drupal users with an interesting implementation of a TODO list.


The first alpha release of the module was introduced in 2012 for Drupal 7. The stable version 1.0 was released several months later. To date, 12 stable versions have been created – including the newest, marked as 2.0, for Drupal 8 and 9.


Even though the Checklist API module isn't very popular, it has become quite recognisable over the years. Currently, according to the official statistics, it's used by over 30 thousand Drupal-based websites, 63% of which are the 7.x-1.x branch.

Official usage statistics for Checklist API Drupal module

Module's creators

The module is maintained by Travis Carden from Acquia, a very active member of the Drupal community. Besides him, 11 other people have also participated in the project so far. About 170 commits were created in total.

Purpose of the module

The Checklist API module is used to create lists with checkboxes. The status of the task execution is saved to the configuration or to the State API, and it can be modified using the code. Checklist API can be employed to build a to-do list, but that is only one way to use it.

In the case of the Droopler distribution, the Checklist API module was used as a mechanism supporting the update process. When automatic processes fail, we advise the user to perform the operations that aren’t checked on the list manually. There are detailed instructions and links available for them:

Usage of checklist API module in Droopler - Drupal distribution

Checklist API is used by many tools for checking websites in terms of SEO and quality, including SEO Checklist and QA Checklist.


The module is available on the Drupal.org website. You can install it both via Composer (using the composer require drupal/linkit command) and from the .zip file available on Drupal.org.

Module's use

After running the Checklist API module, you'll probably be surprised by the fact that it doesn't have any administration panel. New lists can only be created via the API. This is done using a hook – hook_checklistapi_checklist_info().

Here is an example of a hook that adds a simple to-do checklist when publishing a new website:

* Implements hook_checklistapi_checklist_info().
* Defines an example deploy checklist.
* .
function mylist_checklistapi_checklist_info() {
 $definitions = [];
 $definitions['mylist'] = [
   '#title' => t('Website deploy checklist'),
   '#path' => '/admin/config/development/website-checklist',
   '#callback' => 'mylist_checklistapi_checklist_items',
   '#description' => t('An example deploy checklist for the website.'),
   '#help' => t('

This is an example deploy checklist for your website, provided by the hook_checklistapi_checklist_items().

'), '#storage' => 'state', ]; return $definitions; }

This hook references the mylist_checklistapi_checklist_items function, which returns a multidimensional array. You divide the checklist into tabs with tasks. Each defined task can have a description and a list of links to help the user perform it:

* Implements callback_checklistapi_checklist_items() for mylist.
function mylist_checklistapi_checklist_items() {
 return [
   'tab1' => [
     '#title' => t('Drupal admin panel'),
     '#description' => t('

Set up the Drupal installation for PROD environment.

'), 'aggregate_css_js' => [ '#title' => t('Enable JS/CSS aggregation'), '#description' => t('Enable optimization of the site assets, it is crucial for page speed.'), 'handbook_page' => [ '#text' => t('Performance options'), '#url' => Url::fromUri('base://admin/config/development/performance'), ], ], 'disable_devel' => [ '#title' => t('Disable "devel" module'), 'handbook_page' => [ '#text' => t('Module list'), '#url' => Url::fromUri('base://admin/modules'), ], ], ], 'tab2' => [ // ... ], ]; }

After calling the above code, every authorised user of the website will get access to the new checklist. When they uncheck subsequent items, they'll obtain clear information about the level of completion of tasks:

Example of a checklist in Droopler, Drupal distribution

Defining the content via code has one major advantage – the ability to manipulate tasks, including automatically marking them as completed. Looking at the example above, you could write a module that will check by itself whether the CSS/JS aggregation is enabled and if the "devel" module has been uninstalled. This way, the potential user will save a lot of time.

Here's an example of a piece of code that loads the checklist and enforces its initial state. If the "devel" module is active, the relevant checkbox will be checked automatically.

$handler = \Drupal::service('module_handler');
$checklist = checklistapi_checklist_load('mylist');
$progress = [
 'tab1' => [
   'disable_devel' => $handler->moduleExists('devel'),


Checklist API is very useful for carrying out repetitive tasks, such as those you perform when publishing a new website. The module can also be used as a tool supporting security monitoring and website optimisation, performed as part of Drupal support.

With little effort, Checklist API provides plenty of possibilities and a convenient interface for non-technical users. I definitely recommend getting better acquainted with its functionalities.

Mar 09 2021
Mar 09

Gatsby Conference took place from March 2nd to 3rd, 2021 and was a free virtual event. Designed as a way for the Gatsby community members from all over the world to connect and listen to various talks, participate in free workshops, as well as hear the four big announcements from the Gatsby team.


Kyle Matthews, CEO and founder of Gatsby, opened the conference with the keynote. Kyle told us that people come to Gatsby for the websites, but stay for the ecosystem, much like Drupals’ “come for the code, stay for the community.” Kyle mentioned that great developer experience (DX) enables a great user experience (UX), which is why they are focused on improving their developer tools. Kyle then explained that the Jamstack provides a very good developer experience, however, content management systems (CMSs) provide marketers with a far better experience than the Jamstack. Gatsby aims to cater to both: developers and marketers.

GatsbyConf. Great DX enables great UX. Powerful, developer tools and workflows; Fast sites powered by static assets and CDNs; Unified data access to your content via plugins.

Gatsby enables marketers and developers to achieve the same fast, effective workflows. Whether that’s branching and editing some part of the website, or collaborating with colleagues on new content pages, previewing the updates, and then publishing those changes to the web.

Kyle then went on to make the four big announcements:

  • Gatsby Cloud Hosting powered by Fastly, a world-class content delivery network (CDN)
  • Gatsby v3.0, bringing faster builds
  • Gatsby Source Plugin improvements: WordPress with GraphQL, Shopify, and Contentful
  • Gatsby Image, next-gen image component bringing better Lighthouse scores and improved DX

GatsbyConf. Gatsby Image; Gatsby Cloud Hosting; Gatsby v3.0; Contentful Source Plugin; WordPress Source Plugin; Shopify Source Plugin


Dustin Schau then gave an update entitled the “State of Gatsby: What’s New and What’s Coming” - whereby he mentioned that the web of old was static with fault-tolerant HTML, styling and images. There were a lot of benefits of the static web, but then came the CMS revolution which transformed what the web can do. The rise of the CMS enabled building a website without being an expert and allowing content creators to own the complete experience of their website.

Then came the rise of the decoupled CMS which ushered in a new era for the web, user expectations have changed, making rich web experiences the norm and not the outlier. Gatsby enables you to build up rich user experiences with your content from any decoupled CMS as “there’s a plugin for that.”

Gatsby gives you performance and speed by default. It enables you to deliver a great user experience that’s fast and performant which ultimately leads to a website that generates more revenue. Gatsby also has a very high level of accessibility, as well as being optimised for search engines (SEO).

Lighthouse data from HTTPArchive (Performance) - Gatsby; Drupal; WordPress; Nuxt.js; Next.js

Dustin then demonstrated some of the new features coming to Gatsby such as “serverless functions.” Serverless functions allow developers to move away from monolithic hosting and take advantage of microservices, encapsulating single-purpose code into a function that is then hosted on managed infrastructure. Dustin showcased the usage of a serverless function that would send SMS messages using the Twilio service for his wedding website powered by Gatsby Cloud.

Dive Deeper and Learn More

We then had the pleasure of hearing presentations from Gatsby experts who gave an in-depth explanation of each of the new changes:

  • Laurie Barth - NextGen Images
  • Joel Smith - Gatsby Cloud
  • Lennart Jorgens and Patrick Sullivan - Gatsby v3.0
  • Jack Sellwood and Shane Thomas - Shopify

GatsbyConf. Dive Deeper and Learn More. Next Gen Images: Laurie Barth. Gatbsy Cloud: Joel Smith. Gatsby v3.0: Lennart Jörgens and Patrick Sullivan. Shopify: Jack Sellwood and Shane Thomas.

Laurie took us through a guided tour of the new Image component, demonstrating how powerful it is and how it improves the Lighthouse performance score for existing websites, which will not only improve the site load time but will also help the overall ranking of the website on search engines such as Google. The new Image component is performant by default, outputting the HTML5 picture element tag with a range of source sets for different browser widths (mobile, tablet, and desktop) as well as outputting WEBP and the option to also output AVIF image formats for browsers which support it. The API for the Image component also includes support for aspect ratios, lazy loading, placeholder images, and transformation options without CSS filters.

Joel introduced the new Gatsby Cloud hosting, allowing for instantaneous global deployments using the Fastly CDN network. A modern website is a content-rich client experience built on a component-driven design that is continuously delivered through serverless tooling. Joel showed a short demo of how quickly you can deploy a change to Gatsby Cloud hosting. He then went on to explain the pricing changes to Gatsby Cloud hosting to better accommodate for traffic and build speed requirements that you need for your website.

Shane Thomas and Jack Sellwood talked about the future of e-commerce and how brands love Gatsby, with the improved changes to the Gatsby Shopify plugin. This will enable more businesses to showcase and sell their products online with the speed of Gatsby. Brands grow with Gatsby, millisecond page loads leads to lower bounce rates and SEO-friendly markup leads to more discoverability. With Gatsby’ incremental builds and CMS preview capabilities, brands can rely on building out their new seasonal product-line and internally test it amongst stakeholders long before the go-live date.

Gatsby Connf. Brands grow with Gatsby. Millisecond page loads mean lower bounce rates.

Level Up

Patrick Sullivan and Lennart Jörgens introduced Gatsby v3.0. Patrick explained how Gatsby had over 2000 pull-requests (PRs) merged from over 1000 contributors ranging from over 60 different countries in 2020 – that’s the power of open-source. Lennart broke down the new changes to Gatsby v3.0 with a very informative demo. Support for dynamic URL path pages using curly brackets to pass information down into the Gatsby page functions. Server-side rendering in development (Dev SSR), an experimental feature that will aid developers in testing new features for more dynamic websites that fetch information from the server on load time which is not statically built out, for example, pages that require an authenticated user which then show the logged-in username somewhere on the page. Patrick informed everyone that the migration guide to version 3.0 can be found at https://gatsby.dev/2-3 along with the Image migration guide.

Once the big announcements were made, the conference then split into two tracks of talks from the Gatsby community. Stew West gave a lightning talk entitled “Building Super Fast Search with Gatsby, Google Sheets and GraphQL” which showcases the BlueValue project from Harte Research Institute for Gulf of Mexico Studies. Stew explained how easy it was to utilise the Gatsby plugin system to build out the prototype, then iterate with real data. Using the gatsby-source-google-sheets plugin, Stew and the team were able to provide a simplified CMS using Google Sheets to power the statically built Gatsby website.

What is super great about most Gatsby plugins? They come with amazing docs and they just work! Docs and examples for the win!!

Gamer vs Gatsby

Kyle Gill, Senior Developer for Gatsby took on David 'Kosmic' Livingston, the seven-time World Record holder for fastest completion of the original Super Mario Bros. Kyle planned to bootstrap a Gatsby site from scratch, add styles, some React components, GraphQL queries and pull data from a Gatsby plugin then deploy a production level CDN on Gatsby Cloud while competing against Kosmic who would speed run through Super Mario Bros. It was an epic display of skill and grit, Kosmic jumped right in, using warp zones to skip levels and a trick to slide down a pipe and reach a hidden warp zone. While Kyle had a few shortcuts of his own with VSCode snippets and terminal functions, Kosmic made a small mistake in the final boss fight leaving him to restart the level, giving Kyle the much-needed few seconds to help him win the race.

Kyle Gill, Senior Developer for Gatsby vs David 'Kosmic' Livingston.


On the second day of the conference, after the big Mario Gatsby race, we then had several different workshops ranging from beginner-friendly “Getting Started with Gatsby” by Megan Sullivan and Obinna Ekwuno, to the more advanced workshops like “The Gatsby WordPress Integration Workshop” by Shane Thomas and Jason Bahl.

I followed along with the workshop titled “Creating an E-commerce Site Using Gatsby” by Tamas Piros, Developer-Experience Engineer at Cloudinary. Tamas walked us through creating a headless e-commerce website using Gatsby with services like Cloudinary and Snipcart.

Short Q&A session with Kyle and Dustin

At the end of the scheduled workshops, we had a short Q&A session with Kyle and Dustin, in which they answered all the questions from the community in regards to the new features and the roadmap to Gatsby's future. They also announced winners of several prizes including a PlayStation 5, unfortunately, I did not win but congratulations to those who did win a prize.

You can find all presentations on Gatsbys’ YouTube account at:

If you want to know more about how we can help you with your Gatsby project, and help take your web presence to the next level - get in touch with us today.

Mar 08 2021
Mar 08

Ready to take your Drupal 8 (or Drupal 9!) website to the next level with CiviCRM? Then you need the CiviCRM Entity Drupal module.

We're pleased to have released version 3.0 earlier this year. Now, it's time for you to learn everything that it can do. 

Join us for part or all of our upcoming "Using CiviCRM Entity" training series.

Wednesday, March 24th, 12-1pm CDT / 5-6pm GMT

  • What is a Drupal entity
  • CE = CiviCRM + Entity
  • How to install CiviCRM Entity
  • THe why and the what of integration possibilities
  • Overview of CiviCRM Entity features
  • Introduction to CiviCRM Entity and Views
  • Introduction to CiviCRM Entity and Rule

Register for Part 1

Wednesday, April 14th, 12-1pm CDT / 6-7pm BST

  • Entity view modes
  • Using Drupal fields and form displays
  • Drupal-based view & edit pages for CiviCRM data
  • Entity Reference and Inline Entity Form
  • Entity browser
  • Entity Embed
  • Layout Builder

Register for Part 2

Wednesday, May 5th, 12-1pm CDT / 6-7pm BST

  • CiviCRM Entity Leaflet Address module
  • Views Proximity Filter
  • Map markers and Marker Clustering
  • Drupal Calendar Views for Activities

Register for Part 3

CiviCRM Entity Newsletter

Sign up for our CiviCRM Entity newsletter to stay-in-the-know. 

Give us a shout if you have questions in the meantime.

Mar 08 2021
Mar 08

Lynette has been part of the Drupal community since Drupalcon Brussels in 2006. She comes from a technical support background, from front-line to developer liaison, giving her a strong understanding of the user experience. She took the next step by writing the majority of Drupal's Building Blocks, focused on some of the most popular Drupal modules at the time. From there, she moved on to working as a professional technical writer, spending seven years at Acquia, working with nearly every product offering. As a writer, her mantra is "Make your documentation so good your users never need to call you."

Lynette lives in San Jose, California where she is a knitter, occasionally a brewer, a newly-minted 3D printing enthusiast, and has too many other hobbies. She also homeschools her two children, and has three house cats, two porch cats, and two rabbits.

Mar 08 2021
Mar 08

Several anti-spam solutions exist on Drupal to prevent the submission of forms (contact, newsletter subscription, etc.) by more or less well-intentioned robots. Without wanting to be exhaustive, we can use the Honeypot and Antibot modules which provide (different) non-intrusive defence mechanisms, or the captcha / recaptcha modules which ask the visitor to respond to different challenges before allowing him to submit the form.

But these anti-spam modules are not infallible and some robots can sometimes override their protection mechanism. They can then turn your site into a relay for unsolicited email, via your contact form for example, which will send a confirmation email to the email entered on the form. In the worst case, your site can start sending thousands of e-mails per hour for various or varied advertisements, until your host announces that it has blocked your server.

To avoid this kind of situation, and to end up with a domain name blacklisted by the mail relays, we can use a last line of defence, behind the anti-spams enabled, which can (almost) certainly block and limit this type of attack very strongly. The Protect Form Flood Control module will allow us to control the number of submissions allowed within a defined time window for a given IP address. And this for any form on a site.

Its operation is quite simple and consists of applying, on all available forms, the same protection system that Drupal Core uses for forms related to authentication on a Drupal site in order to counter brute force attacks on passwords.

Once the module is enabled, its configuration can be done quickly in a general way, with the possibility of refining certain control parameters (threshold and time window) form by form.

Protect Form Flood Control Settings

You can configure the following settings:

Protect all forms

When this option is enabled, all forms are protected. Be careful with this option, all forms, including all forms related to site configuration, will be protected against bulk submissions. This option is not recommended unless you fully understand the implications. With this option enabled, it is strongly recommended that you set the IP addresses of administrators, whitelisted or give "Bypass Protect Form Flood Control" permission to these users.


The time window for checking mass bids.


Form submissions that exceed this threshold, during the time window defined above for an IP address, will be blocked.

Protected form identifiers

Here you specify the form identifiers that must be protected against bulk submissions. Each form identifier must appear on a separate line. Wildcards (*) may be used. The form_id or base_form_id can be used.

Unprotected form identifiers

If the Protect all forms option is checked, you can configure form identifiers that should NOT be protected against bulk submissions.

IP Address WhiteList

You can set whitelist IP addresses, IP addresses that can bypass the mass submission control .

Logging of blocked submissions

When this option is enabled, blocked form submissions are recorded in the activity logs.

Individual settings

The module also allows Threshold and Window settings to be configured individually for certain forms. The individual settings set then take precedence over the general settings and will be applied instead of the general settings.

Finally, an option allows you to trigger a window on any page containing a form that displays their identifiers in order to configure the module more easily.

To conclude, there is not really an ideal configuration. The right settings will have to be made according to the typology of visitors to the Drupal site. In particular, taking into account the fact that visitors (likely to submit a form) come from a company network, and therefore probably behind a proxy, or not. Having intervened urgently over the last six months, as a Drupal expert, on three Drupal projects having suffered this type of attack (spam relay via the contact form), this module should make it possible to considerably reduce their scope.

Mar 08 2021
Mar 08

As a business, once you start with something, it becomes almost impossible to retrace your steps and retrospect on your choices or alter the decisions that you took in the past - especially if one little move holds the capacity to affect both you and your audience exponentially. Hence, optimum planning is necessary for each aspect that your organisation is working towards, including web development for your online presence.

To keep pace with the digital world, more and more businesses are showing up online to grab more eyeballs and solidify their market value. A facilitator in this process is Drupal 9 - and a quite popular one at that owing to its flexibility and scalability. Drupal 9 presently is in use across several industry verticals and powers thousands of websites. 

While there’s a lot that goes into the general process of web development, simplifying the process by placing all your thoughts methodically is always possible. This list is intended to serve both as an exhaustive guide and as a checklist representing the correct chronology in which web development needs to be approached.

Defining the Purpose

The very reason that you’re getting into web development is because you have a purpose in your mind, but what’s essential is to define that purpose. This is required both for your future team and for your audience to understand and resonate with your brand better. Your target audience along with your unique value proposition must be clearly outlined along with your short term and long term goals, including both value addition and business targets. The defined goals should be measurable, relevant to your business value, time bound, and lastly, be attainable in the time allocated. While planning the execution, defining ways to measure the success of each campaign is also equally important.

A blueprint will only help you proceed with web development in a defined, synchronised manner - essential for managing future growth and expansion.

Picking the right team

After defining the purpose, the next step in web development planning would be to pick a team that brings these targets to a tangible completion. Depending on your business, the team would vary in terms of manpower and skillset. If your business focuses on UX (User Experience), you would want to have designers on board. If it focuses on sales of a product or a service, more marketers would be required. Nevertheless, the team that you tentatively need would comprise

  • a project manager for keeping things on the track, 
  • content creators to provide written and other media content, 
  • a content strategist/architect to plan priorities organise the site,
  • Designers to plan and design the layout,
  • Developers - both frontend and backend.

Refer to all the different roles and skills integral to building a Drupal 9 website here. And, for the decoupled Drupal project, you can check out all the right skills here.

Building a Brand Image

Once two and two are together, the first thing that you and your team needs to do is to plan out a brand image as this will be the bedrock to the web development process of all your website content, marketing strategies and social media presence. Some important elements to decide on would be -

  • The logo, as this is what most people would associate your brand to. The layout, colour palette and design of the logo should represent the underlying identity of your business.
  • The domain name, essential for brand identity as well as driving traffic to your website. It must be short and easy to pronounce. 
  • Also keep in mind that the advertised USP (Unique Selling Proposition) must also be in line with the brand image, as anything that reaches out to the audience more often is a matter of greater scrutiny.

Planning it out

Now is the time to analyse every nook and corner of the web for competitor research. Ideally, there should be a list of brands that you both consider a competitor but also look up to, preferably businesses operating in the same domain with a similar target audience. Another area of analysis should be the current market standing of the kind of products and services that you’re offering. What are you audience looking for in the present scenario? What is the gap that your product is intending to fulfill?

Here’s what the mind map for your research should look like -

Black background with a blue square in the middle reading 'competitors and market trends' and green lines arising out of the box forming rectangles at the end

Post research, comes the actual planning of the website's elements, which will be -

  • The website’s structure. A sitemap can be used for facilitating the layout.
  • Identifying the interests and navigation trends of your audience by deploying relevant tools to do the job, and creation of a users’ persona for better understanding of the market needs. A flowchart software can be of great help in this case, as it lays out the navigation in this manner -
black background with green square reading 'home page', with blue lines arising from it reading the navigation map of the page layout, important for web development planning
  • Budgeting. Allocation of money, or a draft blueprint of the same needs to be created.

The layout

For the web development process regarding the website’s layout, elements under consideration should be -

  • Deciding on the colour palette, the font, photography style, spacing - basically everything that your audience interacts on a daily basis with, that could be a potential bottleneck later on if left undecided. 
  • Use of wireframes to preview your website’s layout. A wireframe is exactly what it sounds like - the skeleton of the layout like page contents and their placement without added elements of color and design, for an understanding of the site’s functionality.
  • Quality design is invaluable, as elements in your layout can comprise your  USP as well. The layout should be attractive and convenient enough to navigate for your user to want to come back.

The importance of UX

If a website is too complicated, has lousy speed, has a scattered icon placement or the content isn’t comprehensible, even having a good service delivery will not help. The design of a website holds the capacity to create a bond of trust with the user, and also to establish customer loyalty. Areas of focus should be 

  • Use of simple, lucid language.
  • The content should put across the point instantly without beating around the bush.
  • A well thought out design that visualises the effort that has been put into it.
  • A list of FAQs (Frequently Asked Questions) makes knowledge sharing about your service even easier.
  • Multiple device compatibility
  • Interactive, responsive UI (User Interface)

The overall look and feel of the website must be professional and should have an elegant touch in the present elements. If a user is by chance tickled off by the design or performance of the website or if he can’t find what he’s looking for, retaining him would not be possible. Read our comprehensive guide to web design to know more.

Choosing the right CMS

A good amount of work is already done just by choosing a good CMS (Content Management System). Some large enterprises are based on CMSes like Drupal and rely on the softwares for their digital infrastructure due to the inbuilt tools and stability that comes with it, excluding the need for being extremely tech savvy. Depending on the amount of features and flexibility that is required by your business, Drupal can be your best bet.

Certain points to keep in mind after deciding to start your web development project with Drupal -

  • Keep up with the frequent updates that the software goes through. It might seem like a simple, matter-of-fact thing to do right now, but if you are not mindful of planning it ahead, you can miss out on many new features and benefits offered by Drupal by lagging in the update cycle. It is, hence, recommended to schedule reminders ahead of time.
  • The architecture of the website needs to be revisited from time to time. Is there any deprecated code that needs to be removed? Or, have your priorities changed over time, and you require different features than the ones already existing? It is imperative that these questions be answered time and again.

Drupal 9, the latest version of Drupal, is always a good option to go for because of the widespread community support and global usage it comes with. With a variety of packages and distributions, web development in Drupal 9 becomes pretty simple even for new developers as there are multiple tools to their aid - the best part being that there’s something for everyone. Updating Drupal is even simpler, a single click upgrading every theme and module on the site. 

blue, green and grey bars placed side by side comparing different features of Drupal 8 and Drupal 9Source : Drupal.org

The correct choice of modules can greatly amplify one’s experience when it comes to web development in Drupal 9. A great choice to make the page layout more methodical would be the  Admin Toolbar module, as it makes the admin toolbar into a drop down menu. A simple XML sitemap module increases the efficiency of SEO by creating multiple multilingual sitemaps along with custom URLs, and a Coffee module greatly enhances the UX by allowing the user to navigate to the admin seamlessly just by using a keyboard shortcut.

To know about the complete list of essential Drupal modules that will help in kick starting your web development project with Drupal 9, read this blog. Access our complete guide to Drupal 9 and go through Drupal 9 FAQs to know more.

Marketing it right

First, a decision needs to be taken on what avenues would be used for advertising and also how these channels will be prioritised, according to the underlying research about one's target audience. Is social media your primary channel to reach your audience? if yes, then which platform fits best with your business model? All these questions need to be answered before hitting the market. Some valuable points to keep in mind are -

  • Search Engine Optimization of all the content on your website is essential to drive more traffic into your website.
  • The URL structure should be logical and also optimised. 
  • Meta description is what a person reads before clicking on the website link, and it should be viewed as an interactive opportunity for a business to make a good first impression. 
  • Targeted marketing like cold emails and DMs might also work for some businesses.
  • The content strategy should be end to end, which schedules in line for planning, creating, executing and measuring it.

Brainstorming sessions with your team about new marketing strategies and ideas are also a good marketing execution method.

Choosing the right agency partner 

Taking expert aid can never hurt. Instances where the work gets too bulky or complicated for you, it is best to delegate it to an agency that knows the job inside out owing to years of experience and varied resources suited to different purposes.

  • An agency not only does your work in a much better and professional fashion, but also acts as a consultancy for any queries that you might have. 
  • Technology is fast evolving, hence, it is best to have a safety net that fills in the gaps in expertise wherever required. 
  • Your development gains maximum momentum with an additional number of hands working towards a specific goal with a focused intent, hence catalysing the development process. 
  • Strategising, design and development are all areas that can gain significantly from an outsider’s perspective. 

If you sync well with your agency partner and are able to make it long-term, a professional advisory would always be at a close proximity. Hence, it is an investment disguised as a partnership. An agency can help you migrate a bulk of content or develop a new website from scratch with ease - using their seasoned knowledge. Often, agencies also provide you post production support and maintenance. If your functional CMS is Drupal and you are unsure about how to incorporate the latest Drupal upgrade, or if you’re a business just setting up their Drupal website, you can well utilise the services of certified Drupal experts at OpenSenseLabs. Or, if you wish to extend your team of Drupal developers, UI/UX strategists and JavaScript developers, our unique staff augmentation model is available for flexible contracts with dynamic availability of certified professionals.

Future Plans

Lastly, everything might be moving on track for now, but that won’t be the case forever. Pre plan safety nets for all possible ups and downs. Also, it is important to not lose track of your long term goals by getting too engulfed in the day to day functioning of the website. A little farsightedness goes a long way.  

Mar 05 2021
Mar 05

MidCamp 2021 is less than three weeks away, and tickets are on sale now. We’re accepting topic submissions for Thursday’s “Meet the Drupal Community” day and Friday’s “Share Your Knowledge” Unconference. There’s a lot going on between now and then, so pitter-patter.


This year we’re embracing the virtual format and working to create spaces that encourage community building, connection, and mentorship. Each day builds on the next, but the schedule is built for maximum flexibility.

  • Wednesday, March 24 - Get Started with Drupal
  • Thursday, March 25 - Meet the Drupal Community
  • Friday, March 26 - Share Your Knowledge
  • Saturday, March 27 - Give Back to the Project

We want you for MidCamp

Instead of a formal call for papers, we’re now opening submissions for Thursday and Friday topics.

Thursday will be a day to Meet the Drupal Community: Attendees are encouraged to propose a topic for presentation or discussion. This need not be a formal session submission… it could be a conversation, case study, or just a time to get outside and walk in the park. Submit an idea and we’ll get you on the schedule.

Friday is a day to Share Your Knowledge: Submit a topic and we’ll gather them all together for an Unconference. The rules of an Unconference are simple:

  • Whoever shows up are the right people
  • Whatever the results of a session were what it was supposed to be
  • Whenever it starts is the right time
  • It is over when it’s over

And now… a word from our sponsor

Drupal developers: Leverage the power of your community

Join our growing network of Drupal professionals at Esteemed working together as one team. Learn about Drupal, and our opportunities for contract or full-time jobs. Also, refer your colleagues/clients and earn commissions. We provide support and mentoring, helping you build your career–every step of the way. Join us today: app.drupalcontractors.com

Mar 05 2021
Mar 05

Update: The Automated Updates Initiative day has moved to Thursday, April 15th

Following our previous post about new contribution structures at DrupalCon and the video about Decoupled Menus for Tuesday, we can now announce that on Thursday, April 15, we will focus on the Automated Updates initiative.

Mar 03 2021
Mar 03

A little over a year ago, the global pandemic struck and all planned events came to a screeching halt for the foreseeable future. Here at Promet Source, we quickly adjusted, leveraging a wealth of knowledge we had acquired from our track record of successful collaborations around the world. Within the Drupal Community at large, the learning curve might have been more steep, but it appears to have been rapidly scaled.

In signature Drupal community style, tech solutions were explored, adjustments were made barely a beat was missed as networking, learning, and growth kept right on going. 

Last month’s Florida DrupalCamp took the virtual event experience to a new level for many of us as we got to experience gather.town in action. Promet’s Chris O’Donnell and Aaron Couch collaborated on a presentation of some breakthrough new possibilities for Drupal during their “Drag and Drop Content Management in Drupal,” session, and Promet Source is always thrilled to get to serve as a sponsor of Drupal events.

Onward to Drupalcon 2021 next month, April 12-16. Hope to “see” you there and in the meantime, here are some thoughts on Florida DrupalCamp from a few of us from Promet Source who participated in the event. 

Q.  What drew you to Florida DrupalCamp this year?

Chris O’Donnell: I presented at Florida DrupalCamp last year (in unusually cold weather!) and wanted to reconnect with the Florida Drupal community. Of course it was 78 degrees and sunny this year, when nobody could travel there! 

Luc Bezier: Promet Source is sponsoring several camps every year and I’ve heard a lot from the team about Florida DrupalCamp Florida. I am in Europe and since the camp was being offered this year, it was a great chance for me to participate, without having to get on an airplane. 

Danita Bowman: It was definitely the weather. Oh wait! It was virtual so that couldn't have been the reason. But seriously, I have wanted to attend Florida DrupalCamp for several years and it just never was the right set of circumstances. With the camp being virtual this year, it fit perfectly with my schedule.

Q. What was the highlight of the event from your perspective?

Chris: Reconnecting and catching up with far flung Drupaler’s that I had not spoken with in quite a while -- since last year’s Florida DrupalCamp in some cases. 

Danita: The highlight of most camps and other Drupal events is connecting with old friends and meeting new ones. That was the case this year with Florida DrupalCamp. 

Q. What were the top takeaways from your participation in Florida DrupalCamp?

Danita: Aside from Chris O’Donnell and Aaron Couch’s presentation on Drag and Drop Content Management in Drupal, the top takeaway for me was that the Drupal Community has weathered the last year just fine, but we are all really itching to drop the “virtual” from our meetups. 

Q. How did the virtual event technology differ from what you are accustomed to? 

Chris: This was my first event using gather.town. I was initially skeptical as every attempt to recreate the on-site convention experience has been disappointing so far. However, gather.town does an amazingly good job of recreating that serendipitous “running into somebody in the hallway" experience that is so important to Drupal events. 

Luc: The conditions right now are forcing organizers to find new tools to reproduce the interaction we normally have at events. We were able to create an avatar and hold conversations as little groups with gather.town. Nothing beats the face-to-face events of course, but this was a good way to get to chat with other attendees and speakers. 

Danita: I can't say enough good things about the experience this camp provided with gather.town. For the first time in more than a year of virtual events, I once again got to participate in my favorite part of events - the hallway track. 

Q. Any comments on the Drupal Community’s ability to power through during difficult circumstances?

Luc: It’s really great to see that despite the ban on face-to-face events the community keeps on creating and organizing opportunities to connect. This proves that Drupal events, and tech events in general, are very important. We need those to learn and connect with others. 

Danita: I've been impressed with the Drupal community throughout this year, as I’ve watched so many events pivot on short notice to virtual but still provide great training sessions and experiences for attendees. The organizers are to be commended for their resilience and determination to keep the Drupal community engaged. And the entire community is to be commended for staying in the game and showing up with a continued commitment to learning, growth, and contribution.

At Promet Source, Drupal is in our DNA. We demonstrate an ongoing commitment to contributing and connecting to new possibilities for Drupal sites that solve complex challenges. Interested in  a conversation about leveraging what’s new and next with Drupal for your next project? Contact us today!

Mar 03 2021
Mar 03

This post is an updated part of our Marketer's Guide to Drupal series. This guide will walk you through considerations for choosing an open source CMS, plus case studies and CMO advice to bring your site to the next level.

Supercharge SEO with Drupal

“Over the last 20 years, Drupal has grown into one of the largest enterprise content management systems in the world.” - Drupal Founder Dries Buytaert

Along with the growth of Drupal, the marketing landscape is vastly different now than it was 20 years ago. The same techniques once used to make the top of the search engine no longer work, so marketers need to understand the powerful role a CMS like Drupal can play in building a successful SEO strategy. 

The release of Drupal 8 marked a significant stride in giving content authors more control. That focus continues to evolve with Drupal 9. Notable editor-focused features include a templating engine called Twig for component variety, an API-first foundation to “write once, publish everywhere”, and an editor-friendly content block authoring experience. Layout Builder additionally provides a "drag and drop" module that lets editors add components to pages and add pages to the site with no code. Now, Drupal 9 has even more upgrades for marketers, tech-savvy or not.

This shift places the marketing team in the driver’s seat more often and allows them to get involved in the CMS decision. In this post, we’ll outline some ways you can up your SEO game with Drupal.

Traditional SEO is Dead

No longer will well-placed keywords alone get you to the top of the SERP ranks. Content is still King in the world of marketing, and it’s what helps you improve your SEO.

Every algorithm change Google has made has one thing in common: it aims to provide the best content based on what it "thinks" the user is trying to find. In other words, the user’s intent. If you want your rankings to stick, don't try to cheat the system. Attract your prospects with informative, entertaining pieces that they can use to take action. And avoid no-value posts that are keyword-stuffed with your industry and the word "best" 100 times. Google can see through it and so can all of your users.

That said, there are a few other factors that are critical to keeping your rankings high that can’t be ignored, including quick load times and mobile-friendliness. Drupal 9 is built with several of these factors in mind to help us make needed improvements quickly and effectively.

Mobile-First Mentality

Drupal 9 is created with responsive design capabilities built-in, so you can begin to address many problems immediately. That’s not to say all of your responsive problems will be solved. Content editors still need to think through their content and imagery, and themers will still need to do configuration to establish things like breakpoints. But Drupal 9 will set you on the right path, giving you and your team many of the tools you need.

You’ll also have the option to choose different images and content for desktop and mobile versions right from the WYSIWYG editor, making it easier to see the differences for every piece of content when you add it and before you publish. This means a solid visual of both versions in real-time for faster publishing and peace of mind knowing exactly what your users experience on any device. 

The Need for Speed

Another big factor that could affect your rankings is speed on both desktop and mobile. Google places such high importance that they provide a PageSpeed Insights test to show where and how your website is slowing visitors down. Drupal 9 is “smart” in that it caches all entities and doesn’t load JavaScript unless it has to. This means the same content won’t be reloaded over and over and instead can be loaded quickly from the cache. It also uses a feature called velocity, which makes creating and publishing new dynamic content experiences is significantly faster than in Drupal 7 and older Drupal versions.

Responsive design is a must-have in today’s digital landscape and speeding up your website on both desktop and mobile is a surprisingly effective way to contribute to your SEO efforts. In short, if your marketing team is focused (as you should be) on top rankings, Drupal 9 provides many of the tools to make that happen. 

Accessibility = Key for Search

Drupal 8 spurred an overall commitment to accessibility from the community, and with the release of Drupal 9 came another big push toward improving web accessibility, including: 

This is important because, as we know, the relationship between web accessibility and SEO is closely intertwined. Although accessibility is not actually a Google ranking factor (yet), improving accessibility on your website has a high chance of improving your SEO rank.

SEO Friendly Modules for Drupal 9

There are thousands of modules available for Drupal 9, many of which are perfect for marketers. Whether you’re looking to try out something new or to find something that fits what you already know, you have your pick. Here are our favorite SEO modules to use when optimizing your site:

  1. Metatag - allows you to automatically provide metadata, aka "meta tags", that help search engines understand your content. This must-have module offers over 300 different meta tags for different purposes, so take a look and find the right ones for your site.
  2. Two Metatag submodules that we highly recommend are Twitter Cards and Open Graph. Connect your site to Facebook, LinkedIn, Slack, Twitter, and other social platforms and control how links will look when shared on them.
  3. Schema.org Metatag - provides a way of adding some of the hundreds of standardized metadata structures from the international schema.org project on a site, making it easier to clearly define metadata that Google et al can use to more accurately understand your site’s unique information.
  4. Pathauto - helps save you time from manually having to create URL path/aliases as new content is created.
  5. Sitemap - provides a site map that gives visitors an overview of your site. It can also display the RSS feeds for all blogs and categories.
  6. Redirect - Almost every new site needs to incorporate 301 redirects for old page URLs. This gives site admins an easy interface for creating those redirects in Drupal.
  7. Google Analytics - this simple module allows site admins the ability to easily configure Google Analytics in Drupal.
  8. Easy Breadcrumbs - uses the current URL (path alias) and the current page's title to automatically extract the breadcrumb's segments and its respective links.

Thankfully, because Drupal is open source, you’re not out of luck in the instance that you can’t find a module that works for you. There are many options available for making a new one that works, from building it yourself to enlisting help from a Drupal team like Mediacurrent.

Visualize SEO Success with Siteimprove

In addition to Drupal's SEO-friendly modules, an SEO optimization tool like Siteimprove can…

  • Give content editors information about their technical SEO to make more informed decisions
  • Gain an understanding of how SEO and content intersect for your overall strategy
  • Flag potential issues before your content is published
  • Provide insights about the SEO impact on unpublishing a page

The Siteimprove module works directly in Drupal, giving editors access to these insights while they’re adding content. This means no more waiting to fix it post-publish. It is important to correctly set up Siteimprove in order to get the most out of it and effectively transform your strategy into a workable roadmap for your site.

SEO and Beyond

Drupal’s content management system is perfectly structured for search optimization and its core features support many of the critical SEO elements. But features only take you so far on their own. To manage and continuously improve your SEO, consider a dashboard like Siteimprove that you can customize to show you just how the data is processed and how it impacts your business's goals.

Setting those custom data points and interpreting the data that comes in can be time-consuming and difficult, so if you need any help, our team of Siteimprove certified experts can apply our knowledge to configuring your dashboards and making sense of the data. Get started with a Siteimprove tune up.

Mar 03 2021
Mar 03

Get a sneak peek at our April 12 keynote speaker and learn more about DrupalCon 2021.

Mar 03 2021
Mar 03

It is difficult to admit, but the Webform module's feature richness has created a maintainability challenge. I did not architect most form and submission features, including submission limits, using Drupal's modular plugin system. I did use Drupal's plugin system for several key aspects of the Webform module. For example, webform elements are entirely plugin-based, resulting in relatively well-encapsulated code that is easy to tweak, test, and maintain.

Mar 03 2021
Mar 03

Lynette has been part of the Drupal community since Drupalcon Brussels in 2006. She comes from a technical support background, from front-line to developer liaison, giving her a strong understanding of the user experience. She took the next step by writing the majority of Drupal's Building Blocks, focused on some of the most popular Drupal modules at the time. From there, she moved on to working as a professional technical writer, spending seven years at Acquia, working with nearly every product offering. As a writer, her mantra is "Make your documentation so good your users never need to call you."

Lynette lives in San Jose, California where she is a knitter, occasionally a brewer, a newly-minted 3D printing enthusiast, and has too many other hobbies. She also homeschools her two children, and has three house cats, two porch cats, and two rabbits.

Mar 03 2021
Mar 03

How can it help?

If 2020 taught us anything, it’s that things can change overnight and you have to roll with the punches.

In marketing and the digital world, there’s no exception. 

Things have always been fast-paced and to stay on top, you have to continue to change and adapt. 

Whatever might be changing, it can’t be the quality of your content. 

Our tool will help you produce engaging content and find the forgotten flaws while you focus on keeping up with your industry.

We keep your team holding the reins for longer, empowering them to confidently write for your audience while taking a heap of pressure off your plate.  

By using this tool, your team will improve their content writing skills and the quality of their work. The better the content, the more engaging for your audience, the better it performs.

Content that’s ticking all the boxes will perform better on search engines. The hard work your team are putting in to making such great content will get the recognition it deserves. 

That's the recipe for a happier team and a well-performing website - right?

Mar 03 2021
Mar 03
77 of us are going | Wunderkraut

Drupalcon 2015

People from across the globe who use, develop, design and support the Drupal platform will be brought together during a full week dedicated to networking, Drupal 8 and sharing and growing Drupal skills.

As we have active hiring plans we’ve decided that this year’s approach should have a focus on meeting people who might want to work for Wunderkraut and getting Drupal 8 out into the world.
As Signature Supporting Partner we wanted as much people as possible to attend the event. We managed to get 77 Wunderkrauts on the plane to Barcelona!  From Belgium alone we have an attendance of 17 people.
The majority of our developers will be participating in sprints (a get-together for focused development work on a Drupal project) giving all they got together with all other contributors at DrupalCon.

We look forward to an active DrupalCon week.  
If you're at DrupalCon and feel like talking to us. Just look for the folks with Wunderkraut carrot t-shirts or give Jo a call at his cell phone +32 476 945 176.


Related Blog Posts

Want to know more?

Contact us today

or call us +32 (0)3 298 69 98

© 2015 Wunderkraut Benelux

Mar 03 2021
Mar 03
Watch our epic Drupal 8 promo video | Wunderkraut

How Wunderkraut feels about Drupal 8

Drupal 8 is coming and everyone is sprinting hard to get it over the finish line. To boost contributor morale we’ve made a motivational Drupal 8 video that will get them into the zone and tackling those last critical issues in no time.

[embedded content]


Related Blog Posts

Want to know more?

Contact us today

or call us +32 (0)3 298 69 98

© 2015 Wunderkraut Benelux

Mar 03 2021
Mar 03

Once again Heritage day was a huge succes.

About 400 000 visitors visited Flanders monuments and heritage sites last Sunday.  The Open Monumentendag website received more than double the amount of last year's visitors.

Visitors to the website organised their day out by using the powerful search tool we built that allowed them to search for activities and sights at their desired location.  Not only could they search by location (province, zip code, city name, km range) but also by activity type, keywords, category and accessibility.  Each search request being added as a (removable) filter for finding the perfect activity.

By clicking on the heart icon, next to each activity, a favorite list was drawn up.  Ready for printing and taking along as route map.

Our support team monitored the website making sure visitors had a great digital experience for a good start to the day's activities.

Did you experience the ease of use of the Open Monumentendag website?  Are you curious about the know-how we applied for this project?  Read our Open Monumentendag case.

Mar 03 2021
Mar 03
Very proud to be a part of it | Wunderkraut

Breaking ground as Drupal's first Signature Supporting Partner

Drupal Association Executive Director Holly Ross is thrilled that Wunderkraut is joining as first and says: "Their support for the Association and the project is, and has always been, top-notch. This is another great expression of how much Wunderkraut believes in the incredible work our community does."

As Drupal Signature Supporting Partner we commit ourselves to advancing the Drupal project and empowering the Drupal community.  We're very proud to be a part of it as we enjoy contributing to the Drupal ecosystem (especially when we can be quircky and fun as CEO Vesa Palmu states).

Our contribution allowed the Drupal Association to:

  • Complete Drupal.org's D7 upgrade - now they can enhance new features
  • Hired a full engineering team committed to improving Drupal.org infrastructure
  • Set the roadmap for Drupal.org success.

First signaturepartner announcement in Drupal Newsletter


Michèle Weisz


Related Blog Posts

Want to know more?

Contact us today

or call us +32 (0)3 298 69 98

© 2015 Wunderkraut Benelux

Mar 03 2021
Mar 03

But in this post I'd like to talk about one of the disadvantages that here at Wunderkraut we pay close attention to.

A consequence of the ability to build features in more than one way is that it's difficult to predict how different people interact (or want to interact) with them. As a result, companies end up delivering solutions to their clients that although seem perfect, turn out, in time, to be less than ideal and sometimes outright counterproductive. 

Great communication with the client and interest in their problems goes a long way towards minimising this effect. But sometimes clients realise that certain implementations are not perfect and could be made better. And when that happens, we are there to listen, adapt and reshape future solutions by taking into account these experiences. 

One such recent example involved the use of a certain WYSIWYG library from our toolkit on a client website. Content editors were initially happy with the implementation before they actually started using it to the full extent. Problems began to emerge, leading to editors spending way more time than they should have performing editing tasks. The client signalled this problem to us which we then proceed to correct by replacing said library. This resulted in our client becoming happier with the solution, much more productive and less frustrated with their experience on their site. 

We learned an important lesson in this process and we started using that new library on other sites as well. Polling our other clients on the performance of the new library revealed that indeed it was a good change to make. 

Mar 03 2021
Mar 03

A few years ago most of the requests started with : "Dear Wunderkraut, we want to build a new website and ... "  - nowadays we are addressed as "Dear Wunderkraut, we have x websites in Drupal and are very happy with that, but we are now looking for a reliable partner to support & host ... ".

By the year 2011 Drupal had been around for just about 10 years. It was growing and changing at a fast pace. More and more websites were being built with it. Increasing numbers of people were requesting help and support with their website. And though there were a number of companies flourishing in Drupal business, few considered specific Drupal support an interesting market segment. Throughout 2011 Wunderkraut Benelux (formerly known as Krimson) was tinkering with the idea of offering support, but it was only when Drupal newbie Jurgen Verhasselt arrived at the company in 2012 that the idea really took shape.

Before his arrival, six different people, all with different profiles, were handling customer support in a weekly rotation system. This worked poorly. A developer trying to get his own job done plus deal with a customer issue at the same time was getting neither job done properly. Tickets got lost or forgotten, customers felt frustrated and problems were not always fixed. We knew we could do better. The job required uninterrupted dedication and constant follow-up.

That’s where Jurgen came in the picture. After years of day job experience in the graphic sector and nights spent on Drupal he came to work at Wunderkraut and seized the opportunity to dedicate himself entirely to Drupal support. Within a couple of weeks his coworkers had handed over all their cases. They were relieved, he was excited! And most importantly, our customers were being assisted on a constant and reliable basis.

By the end of 2012 the first important change was brought about, i.e. to have Jurgen work closely with colleague Stijn Vanden Brande, our Sys Admin. This team of two ensured that many of the problems that arose could be solved extremely efficiently. Wunderkraut being the hosting party as well as the Drupal party means that no needless discussions with the hosting took place and moreover, the hosting environment was well-known. This meant we could find solutions with little loss of time, as we know that time is an important factor when a customer is under pressure to deliver.

In the course of 2013 our support system went from a well-meaning but improvised attempt to help customers in need to a fully qualified division within our company. What changed? We decided to classify customer support issues into: questions, incidents/problems and change requests and incorporated ITIL based best practices. In this way we created a dedicated Service Desk which acts as a Single Point of Contact after Warranty. This enabled us to offer clearly differing support models based on the diverse needs of our customers (more details about this here). In addition, we adopted customer support software and industry standard monitoring tools. We’ve been improving ever since, thanks to the large amount of input we receive from our trusted customers. Since 2013, Danny and Tim have joined our superb support squad and we’re looking to grow more in the months to come.

When customers call us for support we do quite a bit more than just fix the problem at hand. Foremostly, we listen carefully and double check everything to ensure that we understand him or her correctly. This helps to take the edge off the huge pressure our customer may be experiencing. After which, we have a list of do’s and don’t for valuable support.

  • Do a quick scan of possible causes by getting a clear understanding of the symptoms
  • Do look for the cause of course, but also assess possible quick-fixes and workarounds to give yourself time to solve the underlying issue
  • Do check if it’s a pebkac
  • and finally, do test everything within the realm of reason.

The most basic don’t that we swear by is:

  • never, ever apply changes to the foundation of a project.
  • Support never covers a problem that takes more than two days to fix. At that point we escalate to development.

We are so dedicated to offering superior support to customers that on explicit request, we cater to our customers’ customers. Needless to say, our commitment in support has yielded remarkable  results and plenty of customer satisfaction (which makes us happy, too)

Mar 03 2021
Mar 03

If your website is running Drupal 6, chances are it’s between 3 and 6 years old now, and once Drupal 8 comes out. Support for Drupal 6 will drop. Luckily the support window has recently been prolonged for another 3 months after Drupal 8 comes out. But still,  that leaves you only a small window of time to migrate to the latest and greatest. But why would you? 

There are many great things about Drupal 8 that will have something for everyone to love, but that should not be the only reason why you would need an upgrade. It is not the tool itself that will magically improve the traffic to your site, neither convert its users to start buying more stuff, it’s how you use the tool.  

So if your site is running Drupal 6 and hasn’t had large improvements in the last years it might be time to investigate if it needs a major overhaul to be up to par with the competition. If that’s the case, think about brand, concept, design, UX and all of that first to understand how your site should work and what it should look like, only then we can understand if a choice needs to be made to go for Drupal 7 or Drupal 8.  

If your site is still running well you might not even need to upgrade! Although community support for Drupal 6 will end a few months after Drupal 8 release, we will continue to support Drupal 6 sites and work with you to fix any security issues we encounter and collaborate with the Drupal Security Team to provide patches.

My rule of thumb is that if your site uses only core Drupal and a small set of contributed modules, it’s ok to build a new website on Drupal 8 once it comes out. But if you have a complex website running on many contributed and custom modules it might be better to wait a few months maybe a year until all becomes stable. 

Mar 03 2021
Mar 03

So how does customer journey mapping work?

In this somewhat simplified example, we map the customer journey of somebody signing up for an online course. If you want to follow along with your own use case, pick an important target audience and a customer journey that you know is problematic for the customer.

1. Plot the customer steps in the journey

customer journey map 1

Write down the series of steps a client takes to complete this journey. For example “requests brochure”, “receives brochure”, “visits the website for more information”, etc. Put each step on a coloured sticky note.

2. Define the interactions with your organisation

customer journey map 2

Next, for each step, determine which people and groups the customer interacts with, like the marketing department, copywriter and designer, customer service agent, etc. Do the same for all objects and systems that the client encounters, like the brochure, website and email messages. You’ve now mapped out all people, groups, systems and objects that the customer interacts with during this particular journey.

3. Draw the line

customer journey map 3

Draw a line under the sticky notes. Everything above the line is “on stage”, visible to your customers.

4. Map what happens behind the curtains

customer journey map 4

Now we’ll plot the backstage parts. Use sticky notes of a different color and collect the persons, groups, actions, objects and systems that support the on stage part of the journey. In this example these would be the marketing team that produces the prod brochure, the printer, the mail delivery partner, web site content team, IT departments, etc. This backstage part is usually more complex than the on stage part.

5. How do people feel about this?

Customer journey map 5

Now we get to the crucial part. Mark the parts that work well from the perspective of the person interacting with it with green dots. Mark the parts where people start to feel unhappy with yellow dots. Mark the parts where people get really frustrated with red. What you’ll probably see now is that your client starts to feel unhappy much sooner than employees or partners. It could well be that on the inside people are perfectly happy with how things work while the customer gets frustrated.

What does this give you?

Through this process you can immediately start discovering and solving customer experience issues because you now have:

  • A user centred perspective on your entire service/product offering
  • A good view on opportunities for innovation and improvement
  • Clarity about which parts of the organisation can be made responsible to produce those improvements
  • In a shareable format that is easy to understand

Mapping your customer journey is an important first step towards customer centred thinking and acting. The challenge is learning to see things from your customers perspective and that's exactly what a customer journey map enables you to do. Based on the opportunities you identified from the customer journey map, you’ll want to start integrating the multitude of digital channels, tools and technology already in use into a cohesive platform. In short: A platform for digital experience management! That's our topic for our next post.

Mar 03 2021
Mar 03

In combination with the FacetAPI module, which allows you to easily configure a block or a pane with facet links, we created a page displaying search results containing contact type content and a facets block on the left hand side to narrow down those results.

One of the struggles with FacetAPI are the URLs of the individual facets. While Drupal turns the ugly GET 'q' parameter into a clean URLs, FacetAPI just concatenates any extra query parameters which leads to Real Ugly Paths. The FacetAPI Pretty Paths module tries to change that by rewriting those into human friendly URLs.

Our challenge involved altering the paths generated by the facets, but with a slight twist.

Due to the projects architecture, we were forced to replace the full view mode of a node of the bundle type "contact" with a single search result based on the nid of the visited node. This was a cheap way to avoid duplicating functionality and wasting precious time. We used the CTools custom page manager to take over the node/% page and added a variant which is triggered by a selection rule based on the bundle type. The variant itself doesn't use the panels renderer but redirects the visitor to the Solr page passing the nid as an extra argument with the URL. This resulted in a path like this: /contacts?contact=1234.

With this snippet, the contact query parameter is passed to Solr which yields the exact result we need.

 * Implements hook_apachesolr_query_alter().
function myproject_apachesolr_query_alter($query) {
  if (!empty($_GET['contact'])) {
    $query->addFilter('entity_id', $_GET['contact']);

The result page with our single search result still contains facets in a sidebar. Moreover, the URLs of those facets looked like this: /contacts?contact=1234&f[0]=im_field_myfield..... Now we faced a new problem. The ?contact=1234 part was conflicting with the rest of the search query. This resulted in an empty result page, whenever our single search result, node 1234, didn't match with the rest of the search query! So, we had to alter the paths of the individual facets, to make them look like this: /contacts?f[0]=im_field_myfield.

This is how I approached the problem.

If you look carefully in the API documentation, you won't find any hooks that allow you to directly alter the URLs of the facets. Gutting the FacetAPI module is quite daunting. I started looking for undocumented hooks, but quickly abandoned that approach. Then, I realised that FacetAPI Pretty Paths actually does what we wanted: alter the paths of the facets to make them look, well, pretty! I just had to figure out how it worked and emulate its behaviour in our own module.

Turns out that most of the facet generating functionality is contained in a set of adaptable, loosely coupled, extensible classes registered as CTools plugin handlers. Great! This means that I just had to find the relevant class and override those methods with our custom logic while extending.

Facet URLs are generated by classes extending the abstract FacetapiUrlProcessor class. The FacetapiUrlProcessorStandard extends and implements the base class and already does all of the heavy lifting, so I decided to take it from there. I just had to create a new class, implement the right methods and register it as a plugin. In the folder of my custom module, I created a new folder plugins/facetapi containing a new file called url_processor_myproject.inc. This is my class:

 * @file
 * A custom URL processor for cancer.

 * Extension of FacetapiUrlProcessor.
class FacetapiUrlProcessorMyProject extends FacetapiUrlProcessorStandard {

   * Overrides FacetapiUrlProcessorStandard::normalizeParams().
   * Strips the "q" and "page" variables from the params array.
   * Custom: Strips the 'contact' variable from the params array too
  public function normalizeParams(array $params, $filter_key = 'f') {
    return drupal_get_query_parameters($params, array('q', 'page', 'contact'));


I registered my new URL Processor by implementing hook_facetapi_url_processors in the myproject.module file.

 * Implements hook_facetapi_url_processors().
function myproject_facetapi_url_processors() {
  return array(
    'myproject' => array(
      'handler' => array(
        'label' => t('MyProject'),
        'class' => 'FacetapiUrlProcessorMyProject',

I also included the .inc file in the myproject.info file:

files[] = plugins/facetapi/url_processor_myproject.inc

Now I had a new registered URL Processor handler. But I still needed to hook it up with the correct Solr searcher on which the FacetAPI relies to generate facets. hook_facetapi_searcher_info_alter allows you to override the searcher definition and tell the searcher to use your new custom URL processor rather than the standard URL processor. This is the implementation in myproject.module:

 * Implements hook_facetapi_search_info().
function myproject_facetapi_searcher_info_alter(array &$searcher_info) {
  foreach ($searcher_info as &$info) {
    $info['url processor'] = 'myproject';

After clearing the cache, the correct path was generated per facet. Great! Of course, the paths still don't look pretty and contain those way too visible and way too ugly query parameters. We could enable the FacetAPI Pretty Path module, but by implementing our own URL processor, FacetAPI Pretty Paths will cause a conflict since the searcher uses either one or the other class. Not both. One way to solve this problem would be to extend the FacetapiUrlProcessorPrettyPaths class, since it is derived from the same FacetapiUrlProcessorStandard base class, and override its normalizeParams() method.

But that's another story.

Mar 03 2021
Mar 03

New month, new recap of top Drupal blog posts! This one again features a set of diverse and interesting articles; enjoy the read!

Acquia Named a Leader in 2021 Forrester Wave for Agile Content Management Systems

We’d like to kick things off with an article that isn’t specifically about Drupal - nevertheless, Acquia is an important enough company for the Drupal project that any important piece of news for them is also important for Drupal. 

In January, they were already named a leader in the magic quadrant for DXP by Gartner, and now also a leader in agile CMS by Forrester. We’d like to give them our sincere congratulations on these two important achievements!

In this post, the author Ryan Picchini breaks down what it means to be an agile CMS and the four pillars of Acquia that have made it a leader in this space: openness, ease of use, digital maturity and a multi-experience approach.

Read more about Acquia as leader in agile CMS

Why an open DXP enables flexibility and speed to market

A somewhat related article is this one by Annertech’s Gary Cosgrave, which focuses on the benefits of an open DXP, following the release of Gartner’s DXP magic quadrant mentioned earlier. 

Ryan begins with a quick recap of what a DXP is, plus some of the drawbacks of closed or proprietary DXPs. In the next section, he transitions to the open DXP, the main benefits of which are flexibility and a fast time to market.

The last part of Ryan’s article is dedicated to Acquia, addressing how they’ve become a leader in the space throughout several years and going through some of their main offerings.

Read more about open DXP

Drupal vs. WordPress for content editors

We’re moving on with an article by Evolving Web’s Leigh Ryan comparing the content editing capabilities of Drupal and WordPress. The first point of comparison is the UI, which has been greatly improved in Drupal with the Claro admin theme. With taxonomies and content types, Drupal offers more flexibility, but WordPress makes migrating content easier.

Both CMS have media handling well polished, but Drupal has a bigger focus on accessibility. WordPress offers more themes and plugins, but they’re largely not free, as opposed to Drupal. Drupal is also more flexible when it comes to versioning and facilitating workflows, and it has great multilingual capabilities. Both projects have active communities with valuable resources for these communities.

Read more about Drupal vs. WordPress for content editors

Start of 2021 update

We continue with the latest edition of Pedro Cambra’s update to his Drupal Association journey. He begins with a couple of important updates - the upcoming DrupalCon North America and the nominations for this year’s Aaron Winborn Award - before continuing with a recap of the first board meeting he attended back in December.

As he states, Pedro was assigned to two committees: the Community and Governance committee, which will also deal with the voting eligibility issue which motivated Pedro to run, and the Finance committee. As the DA’s At-Large Director, he also met with the Community Working group, who have been less busy due to the lack of in-person events.

Read more about Pedro Cambra’s DA journey update

Nominations are now open for the 2021 Aaron Winborn Award

Since we already mentioned the open nominations for the Aaron Winborn Award in the above section, we’ll just continue with the related blog post by Michael Anello / ultimike.

The annual award, created to honor the memory of Drupal contributor Aaron Winborn, recognizes an individual for their contribution and help to the Drupal community. The recipient gets a scholarship as well as a paid DrupalCon ticket.

If you know someone in the community who has stood out in their commitment and help, now is your chance to let your voice be heard and nominate your candidate. Nominations are open until March 19th, so you still have over two weeks left.

Read more about 2021 Aaron Winborn Award nominations

How to Dynamically Render a Button or Link in Drupal or Gatsby

Next up, we have a post by Mediacurrent’s Mario Hernandez in which he shows how to create a dynamic button using a button or anchor element in Drupal or Gatsby. In Drupal, this is done in Twig by additionally specifying the button class with button--link for the element. 

In Gatsby, things get a little more complicated as you also have to account for Gatsby’s native component which drastically improves performance with internal links. So, to make this work, we need to check if there is an URL, and also if it is internal or external. Mario also includes a video tutorial in his post for anyone who prefers video.

Read more about creating dynamic buttons in Drupal and Gatsby

Commerce Core 2.24 improves merchant experience, BOGO promotions, and more

In the next post from last month that we’d like to highlight, Jonathan Sacksick of Centarro gives an update to the latest version of Commerce Core. Most notably, this version brings important optimizations to the merchant experience.

These include order management improvements, e.g. more detailed order activity logging and the addition of a checkout completion event. Other changes are improvements to promotions, namely, easier promotion management and a better experience with “Buy X, Get Y” types of offers.

In addition to order management improvements, Commerce Core 2.24 also features improvements in performance by adding different indexes to the entity types, which results in faster queries.

Read more about improvements in Commerce Core 2.24

Say Goodbye to Drupal 7 and Hello to Other Opportunities

Last but not least, we have a post by Kalamuna’s Anna Mykhailova which presents and goes through the options that Drupal 7 site owners have as this version’s end-of-life date approaches.

Anna compares three main options: migrating to WordPress, migrating to Backdrop and migrating to Drupal 8 (or then again 9, as Drupal 8’s EOL is in fact coming even sooner than that of Drupal 7).

In the final section of her post, she provides more information about the benefits of migrating to Drupal 8/9. Drupal 9 boasts a highly improved editor experience and a high commitment to accessibility, and it’s moving towards an API-first approach to satisfy any kind of integration need.

Learn more about your migration options for Drupal 7

Dandelion with seeds getting blown away by the wind

That’s it for this month’s recap of the most interesting recent Drupal-related content. Stay tuned for more! 

Mar 02 2021
Mar 02

DrupalCon North America 2021 has a new format, as described in our previous post, that enables you to learn about a specific strategic initiative or participate in more general conference programming. On Tuesday, April 13, we will focus on Decoupled Menus. Rachel Lawson caught up with the Initiative Team to find out more…


Mar 02 2021
Mar 02

Lynette has been part of the Drupal community since Drupalcon Brussels in 2006. She comes from a technical support background, from front-line to developer liaison, giving her a strong understanding of the user experience. She took the next step by writing the majority of Drupal's Building Blocks, focused on some of the most popular Drupal modules at the time. From there, she moved on to working as a professional technical writer, spending seven years at Acquia, working with nearly every product offering. As a writer, her mantra is "Make your documentation so good your users never need to call you."

Lynette lives in San Jose, California where she is a knitter, occasionally a brewer, a newly-minted 3D printing enthusiast, and has too many other hobbies. She also homeschools her two children, and has three house cats, two porch cats, and two rabbits.

Mar 02 2021
Mar 02

The digital sphere keeps changing and evolving at the drop of a hat, technology being the truest representation of the requirements of the present world. Web development is a component of the web that manifests these changes on your screen, which explains why the Bureau of Labour Statistics  projects the demand for web development resources to grow by 8% from 2019 to 2029. But has this equation between the tangible world and the web world always been the same? When the web was formulated, did it mirror us the same way that it does now?

Let’s take a look at how web development has evolved over the years.

Evolution of Web Development

Tim Berners-Lee came up with the World Wide Web  in 1989. He was working at CERN at the time, and his invention was meant to serve various scientists in far off universities by facilitating data sharing among them. The idea was to provide the growing technology of data networks, hypertext and computers a common global, accessible platform. When the web materialised, the code for his web server was set up by Tim on a NeXT computer, the first web page comprising links to the WWW Project, a brief description of hypertext and the details one would need to create a web server.

This is a screenshot of the world wide web browser created by by Lee - 

Black and white web page screenshot of the world's first web page, a landmark in web developmentSource : CERN

As more web servers were created, the links to each of those were added to the first web page by Lee. There was no search engine, the web page consisted of information one might be on the lookout for like CERN Phonebook, guides for using CERN’s computers, etc. Web design was still a fetus concept at this time, HTML’s

Function, that arranged the text into rows and columns, being the closest kin. 

Two years later, in 1991, the first web server came online in the United States. As the web expanded, Lee urged developers from all over to join in and contribute to the web. This is how the journey of the web becoming a global phenomenon began. Design came on the front seat too, as in the same year, the first search engine, ALIWEB, used colour for the first time in the web pages - using yellow highlights to organise the search results. With time when more and more websites cropped up, web designing became an important thing along with web development.

Clearly, we have come a long way. To actually conceptualise how different the times have become, let’s look at what the web development trends looked like ten years ago.

Web development in the previous decade

The past decade succeeded the one with digital revolution, technology occupying the centre stage throughout the years. Like everything else around us, even web development underwent several additions and alterations. The gradual evolution of web development in the preceding decade can be summed up in the following points -  

  • In the 2010s, Ruby on Rails 3.0 was the talk of the town, being an awaited version of the popular Ruby on Rails framework. Javascript had just breathed a new life in node.js framework - an engine high in performance, speed, security and reliance. In addition to these, Microsoft Visual Studio was the chief editing tool used by developers in comparison to Atom and Sublime today.
  • With the first Iphone coming out in 2007, the market a few years later was lined with an array of devices. Smartphones, Ipads, Ebooks were all out for public use and that meant that the web was meant to be an adaptable, fluid thing now. The development and design sphere also underwent iterations with Android OS (Operating System) kicking in. With smartphones showing up left, right and centre, demand for web design grew as well. There were now a plethora of development and designing skills required to keep up with the transforming world.
  • With technology reaching new heights, Augmented Reality and Virtual Reality reached the common public’s houses, leaving it on the developers and designers to make it navigable and comprehensible. Later in the decade, even social media platforms like Instagram and Snapchat entered the augmented reality market with face filters and the likes. The common crowd began resonating with AR much more, and it started to transition into a commonplace service.
  • The Internet became more and more accessible with each passing day, and greater competition led to heightened focus on User Experience (UX). Websites wanted more animation, greater interaction with their user base. Softwares with in depth design tools starting emerging, with Adobe’s Creative Cloud setting off the dominoes to give rise to competitors like Serif’s Affinity Designer and Procreate.
  • In the 2010s, online communities were also quite a thing. People with similar interests could get on forums and chatting platforms to interact with each other. Some popular platforms during these times were StackOverFlow and Reddit.

Web development has evolved to a point where it has very little in common to its original parent now. In an attempt to culminate this timeline, here’s elaborating on what people and organisations believe will be the upcoming trends in web development.

Projected Trends in Web Development in 2021

Mobile-first development

According to Statista, mobile data traffic is expected to grow at an annual compound growth rate of 46% by 2022, which means that most of the generation has gradually shifted over to mobile devices like smartphones and tablets for non official usage. This digital transformation has both altered and expanded the avenues for web development. Now, adaptability to various devices is one of the most important factors to look out for, mobile-first development being primary. 

New architectural styles like micro frontends are also coming up where individual frontend applications are first built and later added into the codebase. 

JavaScript Frameworks

Use of Javascript frameworks will be on the rise, as these provide both animations and a bunch of other functions that make coding much simpler and compact for developers. Frameworks like React and Vue have new features like React Hooks and Typescript that offer Javascript in a more structured, object-oriented form. CSS libraries have also proved to be beneficial to jumpstart front-end development, and hence will supposedly stay trending in the upcoming year too. Javascript frameworks have also been used extensively for powering front ends in a headless CMS, which is another concept to have gained much clout in the previous years. 

With the growing popularity of Javascript, APIs and HTML5, another predicted trend is the rise of JAMstack websites. These websites make use of tools and content dynamically through APIs thus expanding and growing the user base and use case. These features solidify the hold of JAMstack websites in the developer crowd.

No code and low code

Web Standards are predicted to gain momentum not just with respect to tools like javascript frameworks but also in no code and low code space. A no code framework allows you to create content, for example, a design, without the need to code, translating to customisation without the need of expertise. This expands the user diaspora manifold, also opening up avenues for widespread awareness and adoption of web standards.


Web Assembly (WASM) is a small binary format that creates an environment for web applications to run as a bytecode, thus enabling the application to run much faster inside the browser. It has taken the developer world by a storm, as in complex areas like gaming, music, streaming or video editing, WASM is especially useful. Rightfully so, Web Assembly is becoming increasingly popular by each passing day.

Browsing convenience

Convenience in browsing is a major competitive advantage that websites aim for, which is why Single Page Applications (SPA) and Progressive Web Applications (PWA) are gaining ground. A SPA is an application where all the data is relayed in a single web page, hence completely omitting out the time needed to load different URLs of various segments. Since a solid user base is accessing the web from mobile phones now, SPAs are even more relevant. Accelerated Mobile Pages are also being used specifically for bettering the speed and convenience on mobile pages. Along similar lines, a PWA is a ‘lighter’ version of a bigger app, that is targeted towards customers using limited internet or lower speed internet. With inclusivity being a primary concern, new technologies in the web development industry are all aiming for faster, convenient internet.

Google has taken browsing convenience into consideration too, with their ‘featured snippets’ section not requiring the user to click and visit on every link.


Components of a server’s database are predicted to go increasingly virtual in the upcoming year, giving rise to the concept of serverless. In such a scenario, developers would be free to take on a managerial, decision maker role with a difference in the kind of tools they want to work with. A serverless architecture makes a model limitlessly scalable, and expansion to a global level can be visualised. AWS Lambda has shown immense potential in 2020 and is currently the market leader of serverless.

Increasing User Engagement

With user experience on the high tide, focus is on making the user feeling more engaged by using methods like sending push notifications to remind or notify the user about something important, Motion UI (User Interface) to sustain attention, and chatbots for an interactive and convenient session. Chatbots save the time and money usually spent on query resolution by human interaction and notifications can be pretty helpful both for the user and the enterprise - hence these methods are symbiotically beneficial. 

Ghost buttons are also being used increasingly in UX. These are placed for CTA (call to action) and are called so because they’re well blended with the design of the website, portraying their occurrence as largely natural. Their meant usage is primarily for increased interaction and sustaining the users’ attention.

Artificial Intelligence and Machine Learning

Artificial Intelligence (AI) and Machine Learning (ML) are omnipresent everywhere now - of course these have a part to play in web development as well. Gaining insights about user preferences and subsequent fine tuning is made much more convenient with the use of AI as all the field research is digitised and content is personalised. With components like content automation, fairly accurate customer behaviour analysis, self learning algorithms and enhanced customisation, AI is being used extensively in web development and is projected to stay at the top of the game in the upcoming year as well.

Internet of Things

Internet of Things (IoT) has best materialised in the form of Google Home and Alexa, enabling the connectivity of several devices to execute commands seamlessly. Statista’s research suggests that there will be a threefold increase in IoT devices in 2025 when compared to 2019. Even websites nowadays are opting for voice search optimisation, an IoT component - as you might notice that Amazon has placed Alexa within the Amazon shopping app as well. In the approaching times, devices will listen to their users’ commands and respond accordingly. 


Blockchain has been here for quite a while now and as per 2019 statistics, over 34 million Blockchain wallets were in use globally. In 2021, there is expected to be a wave of software and hardware infrastructure building, litigation and trade regulation for enabling blockchain use in a more comprehensive manner.

Expanding Open source

According to the State of the Octoverse 2020 report, the number of developers on GitHub will reach 100 million by 2025. Hence, we can expect significant growth in the number of open source projects and expansion of the existing ones in the upcoming years.

Being a part of the web development world and also a constantly evolving open source community, even Drupal has seen massive growth over the years and continues to innovate. It has found ways to tackle Covid-19 pandemic, remained recession-free and attracted the interests of large companies to invest.

CI/CD tools

All in all, serving will be made simple and developer convenient by tracing the roots and going back to the basics with the use of the new gen CI/CD (Continuous integration and Continuous Delivery) tooling. As the interfaces of the web get simpler with static web pages and applications,, the processes that are used to manifest it on the screen are getting more complex in the build to enable it.

Web development advancements in the Drupal World

Drupal with its constant updates has always aimed to stay in sync with the web development advancements happening around it. Being an open source software, plenty of user needs that are later materialised as technology are constantly brought up every now and then by the community, making the expansion of Drupal pretty organic and stable. Over the past few years, Drupal has come up with various new components. 

The consequent versions of Drupal 8  have tried to cater well to the community’s requirements and aspirations. Drupal’s out of the box feature enabled trials with experimental modules like the layout builder (for drag and drop management) and media library (for handling enormous amount of media) based on creating an interactive and engaging UI, which were later made into core components with version updates based on their performance and the needs of the user base.

[embedded content]

By the time Drupal was out with version 8.8, the workspaces module that was made to run on trial in the previous versions was embedded into the core. It made handling multiple workspaces much easier with features that allowed getting the content reviewed and deployed at one go. A native composer support was also built in, replacing previous third party dependencies. 

[embedded content]

In the latest updates, Drupal 9.0 and 9.1, Drupal has made an effort to make upgrading easier for everybody using the software, as approximately half of the pre existing modules do not need any changes. Access your complete guide on Drupal 9 here.

[embedded content]

The planned default front-end theme for upcoming Drupal 10 has been released as an experimental theme in Drupal 9.1, the underlying thought being incorporation of better ideas and bug resolution before the final release. This is what Olivero looks like - 

blue and white webpage displaying the theme OliveroSource : Drupal.org

Apart from Olivero, some major plans for Drupal 10 currently in the form of initiatives are  automated updates replacing the need to update your software components manually, an improved out of the box feature and introduction of javascript components. 

Light brown background with black flag and text talking about javascript componentsSource : Drupal.org

Coming to keeping up with the trends, Drupal has banked upon its flexibility to adapt to several technological advancements in the recent years.

Drupal works seamlessly with AI and ML. To facilitate ease of use, Drupal also has several modules that enable the use of AI in the website. Drupal’s compatibility with Machine Learning was well demonstrated by the demo of a proof-of-concept project shown to analyse user preferences and consequent fine tuning with due assistance from several APIs, in DrupalCon Baltimore, 2017.

[embedded content]

Drupal has noticed the trend of JavaScript Frameworks being extensively used in websites and has thus given a lot of emphasis to its decoupled architecture. Drupal’s open source community has worked a lot on various web services implementations like GraphQL, JSON:API and REST to enable efficient execution of headless architectures. This enables you to utilise a wide range of javaScript frameworks for frontend and build a perfect decoupled Drupal architecture.

[embedded content]

Drupal is mobile first and focuses greatly on responsiveness and UI.  In the past, Drupal has come with the mobile initiative for mobile first development and multiple device friendliness in an effort to draw community participation in the same. In addition to this, the Accelerated Mobile Page module enhances the overall UX of a website when accessed from a mobile device.,

To further the agenda, Drupal makes use of Progressive Web Apps to make browsing convenient and engaging for the user. These apps are usually installed in the background after the user has granted the permission to do so while browsing. PWAs do not need services from the play store and are installed from the browser itself. 

Drupal also is very handy with the native mobile application development. For instance, you can leverage Drupal as a content store and Flutter as your UI toolkit for building beautiful native mobile apps. More on Drupal’s provision for mobile apps here.

Drupal Community has also delved into Virtual Reality, Augmented reality and  Internet of things and has demonstrated Drupal’s stupendous capabilities to work well with such emerging technologies. For example, a while ago, a Drupal agency built an application prototype on Drupal 8 where users could consult a chatbot for grocery shopping, keeping certain health constraints in mind. The smartphone cameras were used to capture relevant product information, and the chatbots rendered necessary details to the customer. The concept, thus, used AR and AI together for better user convenience and experience.

[embedded content]

In 2018, organisers of DrupalCon Nashville used virtual postcards for admittance of the guests. From a VR editor built using Drupal as backend and React as frontend, to the javascript API WebVR demonstrating dynamic content using Drupal compliant JSON API, Drupal has come quite far experimenting with Virtual Reality.

virtual reality postcard with blue background, graphics of buildings, yellow text and the face of a manSource : Drupal.org

Drupal can also work with blockchain for synchronizing data of the websites of large corporations.

Headless Drupal can be effective to build advanced serverless architectures as well. For instance, you can seamlessly integrate Amazon CloudFront, [email protected], and headless Drupal that can deliver lowest latency and personalised experiences to users.


Trends in web development are always in constant evolution, demanding the rest of the market to keep up with them. While these are a few projected ideas, we might see some newer developments and technologies taking over in the near future.

Profile picture for user Akanksha Mehta

Akanksha is a writer more by personality than by profession. Believes in the unpopular opinion that Kindles are better than books. Also believes that even inanimate things have their own personalities - tea is all things bright and summery, coffee is all things cold and suave.


Get in touch with Us

Tell us about your project or drop us a line. We'd love to hear from you

Accepting Guest Posts

A BIG SHOUT OUT to the bloggers and evangelists willing to impart their knowledge with their writing.

Share your experience and opinion with us and let the world be the stage to your ideas and work. Share your piece with us at [email protected]. We also welcome ideas in the planning phase.

What Do We Expect?

  1. The content should align with our interest in web development and open source technology. However we are open to topics from in and around the industry.
  2. An average blog post should be of around 1000 words, but this is of course subjective.
  3. We love crazy and colourful content. Feel free to link awesome pictures, infographics, stats, and all.
  4. We are also open to articles with cool tips and tricks, some How-to and step by step guide as well

Have a question?
Email us at [email protected]



Attach a file

choose file

One file only.
2 MB limit.
Allowed types: gif, jpg, png, bmp, eps, tif, pict, psd, txt, rtf, html, odf, pdf, doc, docx, ppt, pptx, xls, xlsx, xml, avi, mov, mp3, ogg, wav, bz2, dmg, gz, jar, rar, sit, svg, tar, zip.

Subscribe for more awesome emails and insightful updates

Mar 02 2021
Mar 02

Drupal considers menus, custom blocks and taxonomy terms as content (although it really isn’t going to be used as content). While importing or exporting these so-called content, you might run into issues such as getting only the configurations exported/imported but not the entire block (or menu or taxonomies). Or sometimes when you try to export a menu, the menu items are often missing. The Structure Sync module in Drupal 9 (and Drupal 8) comes in handy to import or export menus, taxonomy terms and custom blocks via the configuration. 

This helpful module reduces the burden of creating the same content in different places and allows for complete syncing between environments. With the Structure Sync module, you can also perform partial imports or exports to blend well with specific environments. The module lets you synchronize content using Drush commands and admin UI, both. Instead of importing and exporting content like menus and vocabularies manually, the Structure Sync module automates the process and saves a lot of time.

Structure Sync Module

Installing the Structure Sync Module

The Drupal 9 Structure Sync module is a contributed module that can be easily downloaded here or with the help of composer.

Using Composer:

composer require drupal/structure_sync

drush en structure_sync

Implementing Structure Sync with an example

Here, for the sake of the explaining the usage of this module, I will create two Drupal 9 instances.

  1. Drupal9.local  
  2. Techx.local

Let’s create a Custom block in the Drupal9.local instance. We will be exporting this block using the Structure Sync module.

Custom Block Local

Let’s create a custom block called “Copyrights”, which I will be adding to the footer block of my page layout.

Custom Block Footer

Here in the below screengrab, you can see the Copyrights block created and placed in the footer.


Now comes the interesting part of exporting the footer block that I’ve just created. Let me first push this custom block normally (without using the Structure Sync block) with the push command and then take a pull from the other instance (techx.local).

Git CommitGit Pull

And now when you check if the Copyrights custom block has been moved to the techx.local instance or not, what you get is a broken block. Here, the configuration got exported but not the block.

Structure Sync Custom

To avoid these ugly situations, we will now use the Structure sync module. Now that you have already installed the module, navigate to /admin/structure/structure-sync. Next click on the Custom blocks tab since we will be exporting a custom block.

Export Custom Block

Here, under Export, you will find a list of your custom blocks. Select the ones that you need to export and then click on the Export custom blocks button. Once you hit export, it becomes a part of the configuration. Now go to your configuration and type the command “drush cex” to export all configurations.

Drush Cex

Here in the above screengrab, you can see that structure_sync.data is now a part of your config management. To get the entire block, you will now need to import it from the “techx.local” instance. For that, first you need to run the command “drush cim”. This will import all the configurations into that instance.

Drush Cim

Now, in the techx.local instance, navigate to /admin/structure/structure-sync/custom-blocks and click on import custom blocks (safely).

Custom Block Import

You will now find the custom blocks from the “Drupal9.local” instance have been successfully imported into the “techx.local” instance. Notice that you have three options to import –

  1. Safely - this is a safe option as it imports only those custom blocks/taxonomies/menus in config that were not previously there.
  2. Full - this will import all the custom blocks/taxonomies/menus regardless if they have already existed before. It deletes any custom blocks/taxonomies/menus that are not in config.
  3. Force - Be careful while using this one. The force option will not check for any existing blocks, menus or taxonomies. It deletes all custom blocks/taxonomies/menus in the system and creates new ones.

For this example, I will be selecting the Import custom blocks (safe) option.

Importing Custom Blocks

On successfully importing the custom blocks, you will now be able to see the “Copyrights” custom block that has been completely imported in the techx.local instance.

Successfully Importing Custom Block

Drush Commands

If you are not a UI person, you can use these commands to perform successful export and import using the Structure sync module.

The available Drush commands are:

  • drush em (export menus)
  • drush im (import menus)
  • drush eb (export blocks)
  • drush ib (import blocks)
  • drush et (export taxonomy terms)
  • drush it (import taxonomy terms)
  • drush ea (export all)
  • drush ia (import all)

While importing blocks/menus/taxonomy using drush it prompts you these options:  

Import Style

Select the number mentioned in the boxes to make your choice.

We can use the same steps to export and import Menus and Taxonomy terms as well. One thing that you do need to keep in mind is that when you are exporting / importing menus, blocks or taxonomies, the entire content gets imported/exported. For example, you cannot selectively choose some of the menu items in that menu to be exported/imported. 

Mar 02 2021
Mar 02

Today, there are a bazillion options available for us to choose from, be it restaurants, clothing brands, gadgets or software. We, as users, may have difficulty in choosing the best, but never in finding the options. The options may confuse us, but we are going to be bombarded with them nonetheless. 

This brings me to the question of choosing the right option amongst the lot; how is it selected? For me, one of the most important criteria is usability, if I am not able to understand the usage of a product, I’d rather choose the next one. I am sure usability must be an important factor in your decision as well. 

Now, coming onto the product that I would be talking about today, Drupal. It is one of the most renowned open source content management systems out there. If you are reading this blog, you would definitely be aware of Drupal and all of its brilliance. Despite its eminence and versatility, it is still marred by a slightly unjustified rumour based on its use. Yes, as the title suggests, Drupal is often considered difficult to use and as a result many shy away from using it. 

Today, we will try to understand all the aspects of Drupal that could account for this claim and see if it is really true. Can a software that is meant to be free for anyone to use be so difficult that it become inaccessible to a major lot of its audience? What would be the point of it then? You think about that while I begin with the individual of Drupal’s so-called complexities. 

A Glimpse at Drupal’s Market Share 

Drupal is one of the leading CMSs in the market. Its ability to build powerful web experiences is the paramount reason for the same. So before I get into the nitty gritty details of Drupal's ease of use, I wanted to highlight its popularity. 

A line graph is showing Drupal usage statistics. Source: BuiltWithA table is showing the number of sites using Drupal at different points of time.Source: Drupal.org 

These numbers clearly show that Drupal is being used by a considerable number of sites worldwide with as many as a million Drupal sites operational at one time. This proves the answer to the question ‘Is Drupal in demand’ is going to be an affirmative.

A graph shows how many sites use Drupal in comparison with other CMSs.Source: W3TechThere is a list of the most high traffic sites using Drupal.Source: SimilarTech

Is Drupal still relevant? I’d say it is primarily because it isn’t just the numbers that make Drupal impressive, but its performance as well. The above images depicts Drupal’s competency at handling high-traffic sites. Drupal is a software for which millions of visitors aren't daunting as proven by its clientele.

Two pie charts are showing various changes in business and projects handles by it.Source: Drupal.org 

Moreover, in a survey to understand 2021’s business outlook, Drupal found out that the majority of its users felt that the new year would mark a growth in their prospects. With Drupal’s presence in a wide range of industries, the profitability of the CMS is impressive too. Sectors like education, charities and nonprofits, government, IT and even media have experienced more profits with Drupal as per the findings of Drupal Business Survey 2020

Drupal has proven its worth in every aspect, be it the number or the performance. The only thing that mars its impeccable record is that it is difficult to use, which isn’t technically the case. I’ll start answering the why with the next section.

Let’s move on to the programming language 

PHP or Hypertext Preprocessor is the programming language Drupal is built on. And PHP is a language that is often considered to be part of its complexity. I would say that it is not accurate. 

PHP is one of the best programming languages and has landed itself in the top 10 best languages to learn in 2021 by many surveys; Simplilearn and Hackr.io are two of these reports. With that kind of efficacy, the language cannot be considered to be problematic.  

Further proof of PHP’s popularity is in the number of websites and applications that use it, which isn’t a lowly figure. Look at the graph below for proof. 

A graph is showing the popularity of various programming languages.Source: W3techs

And these reports and figures aren’t antiquated, rather are as new as the year itself. So, PHP must be a worthwhile language, even if it isn’t the easiest of them all. 

However, PHP isn’t the only language Drupal works with. It has other dependencies as well. These include; 

jQuery and jQuery UI. 

All of these only mean that Drupal is versatile, it isn’t a software with one side. Its multifaceted programming aspects only add to its appeal. It may seem like a lot at first, but it is necessary and doesn’t add up to Drupal’s difficulties, rather it eases the task of web development.

Moving on to the beginner’s conundrum 

When we start something, more often than not, we feel overwhelmed with it. Since we are not accustomed to the newness and it’s nuances, that is understandable. And Drupal ensures that it takes into consideration the novice developers. 

Until Drupal 8, beginners have reported difficulties with the installation and evaluation of Drupal. But after the release of the eighth version, things are more streamlined with the beginner’s needs and expertise. 

Drupal has also brought on new themes to make its experience more flattering for the beginners. For example:

Umami in Drupal 8.6 
Claro in Drupal 8.8 
And Olivero as an experiment in Drupal 9.1

All three themes have made Drupal more accessible, responsive and simple for its users, if we are to rely on user feedback. If I talk about Olivero specifically, it is the new beta experimental frontend theme, which is both modern and concise, and will take over Bartik as Drupal default theme. Its simplicity and professional look make it a perfect pair for beginners.  

With Drupal 9, there isn’t much that has changed. If you are comfortable with Drupal 8, you would be able to ease into the 9th version with a breeze. Although there are indeed differences between Drupal 8 and 9, these are not as stark and have made development not seem like a daunting task. 

And there is more. 

The Drupal Community, always helping out!

Drupal has a community of over 1 million people and 100,000+ stories to tell. From putting your skills at work to acquiring new skills to work, the Drupal community is known for upliftment of the software and the people using it. 

Any questions a beginner may have will be rightfully answered. You can easily find mentors, who are Drupal veterans and will gleefully help you become an expert like them. You can practise, practise and practise some more to get to the level you want to be at. Being part of the Drupal community, you will be able to hone your skills unlike anywhere else. 

You would not feel like an outsider, meet people with similar interests and similar geography as you at Drupal Groups. Since the best way to learn Drupal or anything really is to be immersed in it, the Drupal community is just the place for learning and mastering.

And, there is a constant endeavour to help underrepresented groups from the Drupal Community. Diversity, inclusion and equity is at the heart of the community.

So, there isn’t much room for the beginner’s conundrum at Drupal.

Then there are the notorious Drupal upgrades

Upgrades are necessary, but they don’t necessarily have to be an insurmountable task, which frankly speaking was the case for Drupal. Upgrading till Drupal 8 could not be described as being easy and quick. They required a lot of work and it was difficult, as there were major fundamental changes in the software. However, there was no other way to go about it. If you wanted the added functionality and support that new version would have, upgrading was the only choice.

However, that isn’t the case now and thank goodness for that. 

With the launch of Drupal 9, upgrades have become less notorious and more accommodating. The Drupal 9 switch has been deemed as the easiest upgrade of the decade and that is saying something. This is because unlike previous upgrades, Drupal 9 does not change the entire CMS on a fundamental level, there is no reinvention, but it is still unique. It is a new and improved version of Drupal 8, with deprecated APIs and updated dependencies.

Here is an illustration that will help you understand what I have been saying about fundamental changes.

Different train tracks are used to describe the difference between various Drupal versions.Source: Drupal.org 

With a four step process, you can make your Drupal 8 sites ready and waiting to be upgraded into Drupal 9, if that is difficult, I wonder which adjective would be appropriate for the previous ones. You can also directly upgrade from Drupal 7, if you wish to. Access this complete guide to Drupal 9 to know everything about Drupal 9 upgrade and migration.

Yes, Drupal upgrades were difficult, but they aren’t now. So, does this fact make this pointer for Drupal moot? I think it does.

Coming on to the workflow 

For content management systems, content is the integral. The way it is created and managed essentially decides whether the life of developers and content creators is going to be easy or not. If you are using Drupal correctly, I can assure you life is going to be a breeze.

I say this because in terms of editorial workflow, Drupal has a lot to offer and not much is complicated, with structured tools equipped to define the same.

Here is an overview of some of them.

Workspaces is one tool that helps in defining the staging environments, previewing content changes, all the while deploying these to a live environment.

Transitions is another tool that makes it easy to control content States, which have their own attributes. It allows state changes to become restricted by roles and permissions along with allowing users what content to be put through them.

Then, there is the eminent Views module. This is one unique to Drupal and its highlighting feature in terms of content. It gives the power of creating, managing and displaying lists of content to administrators and site designers. It is these lists that are called views, while what the portray in the form of blocks or pages is the display, it can be one or many.

A screenshot of Drupal's Views module can be seen.Source: Drupal.org 

One of Drupal’s most fulfilling editorial tools is the Layout Builder. It allows editors to create a publishing piece that is more than flexible to their needs. Any kind of layout is possible with this module.  
All of these support the editorial needs of the many content authors who will be populating a platform and the better part is they would not need the guidance of the developers every of the way or any at all.

The new-age of Headless CMSs 

As times change, the things that satiated our needs no longer do so. The same is true for CMSs. Looking back, it is evident that site builders and developers were quite satisfied with nestling an entire project inside one CMS, which would have acted as the provider of the frontend and the backend needs. However, with the advent of multitudinous frontend technologies, that satiation is no longer achievable. 

Hence, the new-age of CMSs emerged, which is essentially without a head, that is the presentation. Unlike the monolithic architecture, the headless approach separates the frontend development from the backend, making the developers happy by leveraging other technologies.

Drupal is a pro at the headless approach. Its monolithic architecture is also used by sites with simpler needs, however, it does give them the option to decouple or go headless, if they wanted to. 

  • You could choose to decouple partially, this would be the progressively decoupled approach
  • You could choose to go all the way, with the fully decoupled approach with JavaScript framework of your preference taking care of the frontend or you could choose static site generators as your frontend.

Be it React, Angular, VueGatsby or Metalsmith, Drupal can work with all of the major frontend technologies and make the project a success with it acting as the content repository.

Drupal’s work isn’t finished yet, it also provides robust APIs to streamline the connection between the presentation and the content layer. Built on the API-first approach, Drupal offers all of its application functions as APIs. This is done through its web services including RESTful web services and JSON:API along with API extensions with GraphQL

Drupal can create its own flexible and structured presentation layer, there isn’t a doubt in it. Regardless of this, when it is decoupled, it performs with equal efficiency to create API endpoints, which basically make room for content consumption and display in the headless application.

And this new-age of CMSs is gaining ground each day, and Drupal, with its own web services at play, is making the transition quite easy.

Fusion with Emerging technologies

I mentioned in the previous section that with time things change and so does their to us. Today, technology is a major part of that change. I remember a time not long ago, when a single camera setup on our smartphones was enough for us. Now, my phone has three, still I envy my husband, whose smartphone has a quad camera setup. Who could have imagined that? 

The same is true for CMSs, when we look at them, we don’t just want a simple site building tool. We want innovations, enhancements and upgrades that will stun us in the most positive way. And CMSs have started providing that. 

Taking Drupal into focus, it has had a revolutionary impact on the market by integrating itself with futuristic technologies.

Drupal has proven to be both reliable and reaching in its fusion with emerging technologies and that has led to an improved digital experience, both for the developers and the users. Read our blog Unleashing macro trends in technology with Drupal to find more about this topic.

It all comes down to continuous improvement in focus

A horizontal bar graph shows the various reasons people opted for Drupal.Reasons for people choosing Drupal. Source: Drupal Business Survey 2020 

The most common reason for people using Drupal is because they have already used it and because of that familiarity, it becomes easy to use. However, ease of use is not amongst the top reasons for taking up Drupal. 

Probably that is why, when Drupal 10’s 2022 release was announced during DrupalCon Global in 2020 by Dries Buytaert, its ease-of-use was addressed as one of the most impactful aspects. And Drupal 10’s development is proof of that.

In Dries speech, he emphasised the ease of use quite a lot. He talked about five crucial steps that were taken to simplify Drupal even more. 

  • Improving third party components even after their EOL to enhance Drupal 10 readiness; 
  • Improving Drupal’s ease-of-use further, Drupal 9 was a great step in this direction;
  • Improving frontend themes; 
  • Improving updates by making them automates, this would work best for security upgrades; 
  • Improving on Drupal technology by implementing JavaScript components in the UI. 

For all of these, the efforts are being made by the entire community. 

Yes, it would be faster, better and more innovative, but it would not be difficult. Like I mentioned before in this blog, we should not expect many overhauls to the software that would make our eyes pop and heads hurt. 

There are going to be improvements, there would at least by four versions of Drupal 9 before the arrival of 10. However, this continuity in advancements does not have to affect the way Drupal is seen by its users. It needn’t be the forbidden fruit that everybody wants to taste, but scared to do so. Drupal is an open source software, it is meant for everyone and that means it isn't too difficult. I wouldn’t deny that wasn’t complex at one point, but that point of time is long gone. What lies in the future is a version of Drupal that is as easy to use for a beginner as it is for an expert developer.

The Bottom Line 

I’d like to answer the question ‘How hard is it to use Drupal?’ with a direct from one of our developers.

“Being from a technical background and having PHP development experience before diving into Drupal gives me an upper edge during the journey. Being into Drupal development for around 3 years, I can say it’s all about learning the architecture of Drupal (such as entities, configs and forms) and how the code executes (sequence of functions calls). The earlier you understand these, the easier the Drupal journey would be for you and it would help you to debug faster and select the best approach for the requirements. Plus having a great community and open contribution platform helps you learn better and faster. Drupal is like a Lego, you can build it to your liking but, at a certain point of customisation, it is like a box with thousands of pieces and not all of them fit together.” - Anmol Goel, Senior Software developer at OpenSense Labs

For Anmol, Drupal experience made the journey easier. It requires you to get a hang of things, once you do that, there isn’t much that you’d find difficult, and your Drupal development experience would be a walk in the park; at least most of the time. And like he put it so eloquently, who could find a game of Lego difficult? All it is about is building something new every time, be it today or tomorrow and that’s Drupal for you.

Mar 01 2021
Mar 01

Lynette has been part of the Drupal community since Drupalcon Brussels in 2006. She comes from a technical support background, from front-line to developer liaison, giving her a strong understanding of the user experience. She took the next step by writing the majority of Drupal's Building Blocks, focused on some of the most popular Drupal modules at the time. From there, she moved on to working as a professional technical writer, spending seven years at Acquia, working with nearly every product offering. As a writer, her mantra is "Make your documentation so good your users never need to call you."

Lynette lives in San Jose, California where she is a knitter, occasionally a brewer, a newly-minted 3D printing enthusiast, and has too many other hobbies. She also homeschools her two children, and has three house cats, two porch cats, and two rabbits.

Mar 01 2021
Mar 01

This is part 3 of the blog. Here we will continue our discussions on the other features and changes in PHP 8.

Stringable interface

The new Stringable interface which is introduced in PHP 8 is now automatically added to all the classes which implement the __toString method.

`PhpToken` Tokenizer class

The new PhpToken class which is introduced in PHP 8, provides an object-oriented approach to tokenizer results.

The return value is an array of PhpToken objects.

abstract methods

Previously, PHP would not allow us to declare a private abstract function in any PHP version. That has now changed with PHP 8. It allows us to declare a method as abstract even if a method with the same name exists in the parent class.

For example:

class ParentFoo {
    private function demo() {}

abstract class ChildFoo extends ParentFoo{
    abstract protected function demo();

Before PHP 8, the above would produce the following error:

Fatal error: Cannot make non-abstract method Foo::test() abstract in class ChildFoo in ... on line ...

Variable syntax tweaks

From the RFC: "the Uniform Variable Syntax RFC resolved several inconsistencies in PHP's variable syntax. This RFC intends to address a small handful of cases that were overlooked."

ext-json is now always available

Previously compiling PHP without the JSON extension enabled was allowed but that is not the case anymore. This is a healthy change in PHP 8. 

If the composer.json file already has PHP 8 in the required parameter then the ext-JSON is no longer required to be manually added.

   "require": {  
       "php": "^8.0",  
-       "ext-json": "*",  

Concatenation takes precedence

A line of code such as this:

echo "sum: " . $a + $b;

Would be previously interpreted like this:

echo ("sum: " . $a) + $b;

And in PHP 8, it is interpreted like this:

echo "sum: " . ($a + $b);

Reliable numeric strings

From the RFC, “all strings which currently emit the E_NOTICE “A non-well formed numeric value encountered” will be reclassified into the E_WARNING “A non-numeric value encountered” except if the leading-numeric string contained only trailing whitespace. And the various cases which currently emit an E_WARNING will be promoted to TypeErrors.

Reliable string to number comparisons

From the RFC, “0 == "foobar" returns true. This RFC proposes to make non-strict comparisons more useful and less error-prone, by using a number comparison only if the string is numeric. Otherwise, the number is converted into a string, and a string comparison is performed.

Mar 01 2021
Mar 01

This is part 2 of the blog. Here we will discuss the other features and changes in PHP 8.

Mixed type

The mixed type was already being widely used in DocBlock comments. In PHP, a missing type can be due to a lot of reasons:

  • A function returning null or nothing.
  • Expecting one of several types.
  • Expecting a type that can’t be typed hinted in PHPbackward-incompatible.

mixed itself means one of the following types:

  • array
  • boolean
  • callable
  • int
  • float
  • null
  • object
  • resource
  • string

mixed can also be used as a parameter or property and not just as a return type. Since mixed already includes null so it is not allowed to make it nullable. On doing so, the following error will occur:

// Fatal error: Mixed types cannot be nullable, null is already part of the mixed type.
function myFunction(): ?mixed {}

mixed type can be used to indicate that it accepts any type, or can return any type. In a class/interface context.

function myFunction(mixed $var): void {

Static return type

static is a new return type in PHP 8. The static return type declares an object of the called class will be returned. 

class Foo {

    public static function myFunction(): static {

        return new static();



Error handling improvements

Internal functions now throw exceptions on type errors or value errors. This is a backward-incompatible change.

throw in expressions

It was not possible to throw exceptions from an expression (e.g. a ternary statement) before PHP 8. It is now possible to do so in PHP 8.

$var = isset($_GET['value'])
    ? $_GET['value']
    : throw new \InvalidArgumentException('value not set');

catch exceptions only by their type

We can catch exceptions by their type, without capturing the exception object.

try {}
catch(TypeError) {
  // Did not catch the $exception object

@ Error, Suppression operator does not silent fatal errors

PHP 8.0 changes the behavior of @ error suppression operator. Previously, it used to silence the fatal errors, which would lead to a script failure, due to the @ operator not preventing fatal errors, but rather hiding the error message display.

Default error reporting is set to E_ALL

The default configuration in PHP 8.0 is to show all error messages. It was configured to hide deprecation and strict warnings in older versions.

Default PDO error mode

From the RFC: The current default error mode for PDO is silent. This means that when an SQL error occurs, no errors or warnings may be emitted and no exceptions are thrown unless the developer implements their explicit error handling.

In PHP 8, the default error will change to PDO::ERRMODE_EXCEPTION.

Weak maps

A WeakMap holds references to objects, which does not prevent those objects from being garbage collected.

WeakMap and SplObjectStorage are quite similar. They both use objects as the key and allow arbitrary values to be stored. However, a WeakMap, unlike SplObjectStorage, does not prevent the object from being garbage collected.

Example of WeakMap:

class Myclass
    private WeakMap $cache;
    public function getAvalueFromCache(object $obj): object
        return $this->cache[$obj]
           ??= $this->computeResult($obj);

`::class` magic constant is now allowed on objects

In PHP, the magic constant ::class helps in resolving a class name to its fully-qualified class name. When this magic constant is used with a class name, use and use as statements will be resolved or the present namespace will be prefixed which would make it a fully-qualified class name.

For example:

namespace MyApp\DemoApp;

use MyFoo\Bar;
use MyBar\Baz as BBaz;

class MyDemo {}

// `use` statement is resolved:
echo Bar::class; // "MyFoo\Bar"

// `use` X `as` Y is resolved:
echo BBaz::class; // "MyBar\Baz"

// Current namespace is resolved:
echo Demo::class; // "MyApp\DemoApp\MyDemo"

Before PHP 8.0, the usage of the magic constant ::class was not allowed on objects and it would throw a fatal error like the one below:

$object = new Foo\Bar();
echo $object::class;

// Fatal error: Cannot use ::class with dynamic class name.
Now since it is allowed, we can do this and it would be correctly resolved at run time:

$object = new Foo\Bar();
echo $object::class;

// PHP 8.0+:
// "Foo\Bar"

Trailing commas now allowed in parameter lists and closure `use` lists

PHP 8 is also quite forgiving and allows us to leave trailing commas in parameter lists and closure use lists.

public myfunction(
    string $paramA,
    int $paramB,
    Foo $myobject,
) {
    // …

DateTime objects can be created from the interface

There is now a generalised way to convert DateTime and DateTimeImmutable objects to each other by adding DateTime::createFromInterface() and DatetimeImmutable::createFromInterface().

DateTime::createFromInterface(DateTimeInterface $other);

DateTimeImmutable::createFromInterface(DateTimeInterface $other);

Read part 3 of the blog here.


About Drupal Sun

Drupal Sun is an Evolving Web project. It allows you to:

  • Do full-text search on all the articles in Drupal Planet (thanks to Apache Solr)
  • Facet based on tags, author, or feed
  • Flip through articles quickly (with j/k or arrow keys) to find what you're interested in
  • View the entire article text inline, or in the context of the site where it was created

See the blog post at Evolving Web

Evolving Web