Upgrade Your Drupal Skills

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

See Advanced Courses NAH, I know Enough
Feb 24 2021
Feb 24

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.

Feb 24 2021
Feb 24

We plan to release Drupal 10 in 2022, ideally in June. That means there are 15 months left before the new major release is expected to be available. I provided an update about the initiative last time in December at DrupalCon Europe. I wanted to give a quick update on some of the highlight areas we are working on. Join the discussions and help shape Drupal 10's direction every other Monday at 19:00 UTC in the #d10readiness channel on Drupal Slack.

All work is done in Drupal 9 for now

The same way we built most of Drupal 9 in Drupal 8, we are building Drupal 10 in Drupal 9 as much as possible. There is one key exception, the CKEditor 5 project is being built as a contributed module to help test it and make it easier to collaborate on.

PHP 8 and Composer 2 support shipped

Both shipped in Drupal 9. Composer 2 support was even backported to Drupal 8, but that was not possible for PHP 8 compatibility. We plan to require PHP 8 for Drupal 10 given the end of life of PHP 7 in November 2022.

Symfony 5 support is good, Symfony 6 support in the works

One of two main drivers of the Drupal 10 timeline is Symfony 4's end of life in November 2022. We plan to update to at least Symfony 5. We did resolve all known Symfony 5 compatibility issues to date, so that looks promising.

While in Drupal 10's time, Symfony 5 will be on the long term supported 5.4 branch, that would "only" be security supported until November 2025, giving Drupal 10 a 2.5 year lifetime. To possibly expand this, we are exploring to update to Symfony 6 and resolving incompatibilities identified in Drupal 9 already. Symfony 6 development is not itself open yet, so we are only able to work on things that are already deprecated.

CKEditor 4 to 5 update needs more hands

The other big motivation behind the Drupal 10 timeline is CKEditor 4 support lasting until 2023 only. CKEditor 5 support is being worked in a dedicated contributed module for now. We are collaborating heavily with the CKSource team on runtime plugin support (Webpack DLLs), general HTML support (to avoid data loss when using CKEditor 5 on legacy content), etc. There are various great benefits of CKEditor 5 including optional collaborative editing functionality (using a paid server component).

We need more people involved in this. Dedicated CKEditor 5 meetings happen every other Thursday in #ckeditor5 on Drupal Slack at 15:30 UTC.

Starterkit theme prototype needs feedback

This is a Drupal theming paradigm shift! While inheriting from runtime base themes have served us well to avoid duplication, it causes serious problems for innovation and makes us supporting old bugs to not break live sites. So instead we aim to provide built-in support for generating a theme in core that is based off of a prepared starterkit: php core/scripts/drupal generate-theme . Lauri prototyped an initial solution, needs more feedback.

jQuery UI components have replacements prototyped, need reviews

Practically all of the jQuery UI components as well as various uses of Backbone.JS have replacements prototyped: dialog, toolbar, tabbing manager, autocomplete, tours, etc. All of them are in need of serious feedback though and testing.

Internet Explorer 11 support will be dropped

An agreement has been made to drop support for IE11 from Drupal 10. The official announcement is forthcoming.

Some one-off feature modules will likely be removed

We already agreed to deprecate aggregator module in Drupal 9 and remove in Drupal 10. There will possibly be other single-use core modules removed that lack maintainers and momentum. Work is underway to indicate individual module lifecycle states, although this needs more help soon for us to be able to use it to deprecate modules in time.

Drupal 10 readiness day at DrupalCon North America

The above were just some of the highlights we are working on. DrupalCon North America 2021 is online and will focus one of the days on Drupal 10 readiness. We submitted various in-depth talks to illuminate further details of the above areas and more. Join us there and use the opportunity to be at the forefront of the new version.

Feb 24 2021
Feb 24

The advent of Drupal 8 brought about many new features and improvements. One highly anticipated change was the move to a new structured release cycle. The update promised to improve compatibilities between versions, introduce gradual deprecation of old APIs alongside new features, and strongly suggested that the days of performing full-site rebuilds to move between major versions of Drupal were in the past.

Now that Drupal 9 has been released, we’ve had the opportunity to work through the upgrade process from Drupal 8 and found that it is indeed a significantly lower lift than doing re-implementations while moving to Drupal 8. That being said, there are still important considerations to keep in mind when preparing and executing your upgrade to Drupal 9.

Required Tooling
The first step of any project is making sure you have the proper tools to proceed, and Drupal upgrades are no different. Because the first challenge is finding and fixing all of the deprecated code and identifying modules that need updating, you will need a tool to help you. Fortunately, the Upgrade Status module gives you almost everything you need by checking:  

  • Global requirements to ensure our environment is configured correctly and has all of the prerequisites installed to run Drupal 9. 
  • Contributed modules to see if they are Drupal 9 ready, have a compatible upgrade, or have a patch available to make them compatible.
  • Custom code to identify deprecations and required changes.
  • Themes for deprecated Twig syntax.
  • Any installed libraries for deprecation status, required changes to our info.yml files, and other possible compatibility issues.

Upgrade Status can be run with Drush or from within your Drupal site, but it’s not a good idea to run this on production. Instead, install it as a dev requirement and run it locally or on your development or local environment. If your codebase is larger, the checks can take a little bit of time to run, particularly when run locally. You can run against a subset of your site’s modules if necessary and export the results after running the checks.

If your site has a significant amount of custom code, you also want to install Upgrade Rector. This module uses the Rector PHP refactoring library to automatically generate patches to fix the deprecations in your code. While it can’t fix everything, it can significantly speed up the process.

Updating Core
Routine site maintenance should always include installing and testing updates to the latest versions of Drupal Core and installed contributed modules. While Third And Grove’s support process consists of this as part of our regular support contracts, it’s a fact of life that many teams struggle with prioritizing these updates over more critical work to meet actual business goals. If your site is well-maintained, this step will be easy: The Upgrade Check report will be mainly Green, and you are well on your way to being ready for D9.

More commonly, sites will lag on updates, and your reports will show several updates that need to be applied. The first step of the Drupal 9 preparedness project should be to ensure that you are running the latest version of Drupal 8 (8.9.13 at the time of this writing).  Drupal 8.9 is the long-term support version of Drupal 8 and is the ideal starting place for a D9 upgrade. If your site’s code is working on Drupal 8.9 and clean of any deprecations, it should work with Drupal 9 since they share the same public APIs.

The first major stumbling block many upgrades hit is when the site has lagged significantly behind the Drupal update schedule and is currently on a version of Drupal older than 8.8.  This can be problematic because each Drupal feature release introduces different overall requirements and various changes under the hood that can require database updates and other special handling. To address this, we strongly recommend first reviewing the release notes of each minor version (i.e., Drupal 8.4.0, 8.5.0, etc.) and note the changes introduced by each version. Changes include the fact that Drupal now requires PHP 7.3 or greater, the addition of new core modules (such as Workflows, Media Library, and JSON: API), changes to the way path aliases are handled, and the introduction of a new set of Composer packages and a default project template. Make a note of each change that may impact your particular site install and correct any discrepancies that may arise.

Once reviewed, we don’t recommend jumping directly to 8.9 unless you are on a version *prior* to 8.6.1. Generally, you want to perform each minor upgrade individually and test them before moving on to the next version. Still, if there was a bug related to taxonomy updates in the update to 8.6, that is best avoided. Otherwise, use Composer to require and install the latest patch release of a specific version, run any database updates, and test your installation running that version before moving on to the next minor version upgrade.

Update Contributed Modules
By this point, you have used Upgrade Status to generate a list of modules your site uses and their readiness for Drupal 9. This is a straightforward process for most common modules: The module will have a version ready that is compatible with both Drupal 8 and 9, and you will update it as usual (after reviewing the release notes — see the next section). There are three cases where this can become less straightforward:
No Update Available, But There Is A Patch
Some module maintainers may not have released a version of the module with the required Drupal 9 changes yet, but Upgrade Status tells you that a patch is available for the module. One tricky aspect of this is that if some of the required changes are to the module’s composer.json file, they cannot be patched using Composer. This is due to the way it checks dependencies — a classic chicken and egg problem. While in general, it is not recommended to add contributed modules to your codebase, you can pull the modules that require patching into your project, remove them as composer dependencies, and then follow the [process of applying that patch to your codebase with Composer](https://groups.drupal.org/node/518975).  If you have to take this approach, you should continue monitoring the project and adding it back to your composer.json when the module is D9-ready.

Module Has No Patches Available
Because of the Drupal 9 Project Readiness Bot, most modules should have at least one patch available to bring the module up to speed from a compatibility standpoint. However, if you are using a module that does not, there’s still hope. With the information that Upgrade Status gives you about specific deprecations and the patches generated by Upgrade Rector, you can patch the module yourself, making it ready for other users.  

When you build these patches, we recommend following the standard Drupal module contribution guidelines and working on the module against the dev version outside your site’s codebase. Once the patch is built, you can contribute it back to the community via the project’s issue queue, then follow the process outlined above for a module that has a patch available.

Update Is A Major Version Change
We have seen one tricky situation arise with some contrib modules: modules that have a version that supports Drupal 9, but the version is also a major release with breaking API changes. This is rare but worth noting, especially if the module is one that your custom code depends on in some way. Big API changes in a module behind the scenes may significantly impact your site and require that you refactor your code to account for them. 

Updating Custom Code
Your custom code can be the most significant source of potential changes to your codebase in preparing your site for Drupal 9, especially for long-running projects that started in the early days of Drupal 8. The API changes and deprecations in D9 are well-known and documented. Still, it’s never surprising to find that routine maintenance has taken a back seat to implement new functionality to handle new business requirements.  

Fortunately, the tools for upgrading Drupal also handle custom code, pointing out where the deprecations are, what changes need to be made, and sometimes even making the change itself using Upgrade Rector. Rector can’t fix every deprecation, but it can automatically make quick work of many of the items, freeing up developer time to tackle more difficult changes. This is also an opportunity for possible efficiency, as many custom module updates could be happening in parallel to the contributed module work.

Testing Your Upgrade
Once the code is all in place and all database updates have been run, it’s time to test your site for potential regressions. Most issues and edge cases can be caught when performing the upgrades themselves, which is one reason we suggest performing the module upgrade steps one-at-a-time. If you update one module at a time (or in small groups of modules of similar/shared functionality), obvious regressions and unexpected behavior can be caught early, reviewed, and fixed. If you have enough hands, fixing problematic code can be handled by one developer while another developer continues updating and testing other modules.

A smart strategy for getting ahead of these issues is to review the release notes for the modules you are updating before beginning the process. Most module maintainers will give guidance on any additional upgrade steps or considerations you should take before upgrading, saving you time and headaches later on in the process.

Once your upgrades are complete, you will want to perform a series of checks of your site's overall functionality to ensure you aren’t running into edge cases that your unique combination of code is surfacing. It’s crucial to check all editorial and administrative functions as well — the site may appear to be operating normally. Still, some unseen interaction could be wreaking havoc with your editors’ ability to update content.  Behavioral and visual regression testing can help accelerate this process. Still, sites with complex interactions and administrative needs should be tested in concert with the actual people who use these sites daily — they are often the people best equipped to detect if something is amiss.

In The End
As we said at the outset, the underlying architecture changes to Drupal 8 brought with them a promise for easier future updates and the ability for our sites to continue to grow and evolve through many major versions of Drupal. Every functioning Drupal site relies on modules from the wider Drupal community for essential functionality. This adds another layer of complexity and dependency on the maintainers of those modules. The community as a whole has been good about maintaining modules to the D9 standard, but it’s not unusual for a site to depend on a module that lags.  

Another critical factor in the upgrade conversation is whether your site has been maintained and kept up to date already. Many site owners struggle to keep their sites' code current, but sacrificing these regular updates makes sites vulnerable to security issues and makes the Drupal 9 upgrade process significantly more difficult. That being said, a well-maintained Drupal 8 site can deliver on the promise of easy upgrades to Drupal 9 and beyond.

Feb 23 2021
Feb 23

Join me for a walkthrough of the steps I had to perform to keep track of the Drupal 9 compatibility, upgrade underlying tools like Composer 2, BLT 12 and adapting contributed as well as custom modules to be compatible with Drupal 9.

Discover more about the service CMS our digital agency has to offer for you.

Recently, I had the opportunity to upgrade one of our projects from Drupal 8 to Drupal 9. In this blog post I would like to share some of the learnings I had while completing the upgrade. As you might expect, updating from Drupal 8 to Drupal 9 involves very little steps on the application layer. Most contributed modules are Drupal 9 ready and only a few exotic modules required me to work on a reroll of a Drupal 9 compatibility patch.

1. Keep track of Drupal 9 compatibility using Upgrade Status

To get started, I used Upgrade Status to analyse and keep track of the Drupal 9 readiness of the site.

It takes a while to scan all modules, but the UI is really helpful in identifying what is left for you to do. Follow these steps:

Run a full index from the command line:

drush us-a --all

Index individual projects:

drush us-a project_a project_b

You can access your upgrade report at yoursite.dev/admin/reports/upgrade-status.

2. Update to Composer 2

One fundamental step was to update to Composer 2. Refer to the documentation here. First we update composer itself:

composer selfupdate --2

If you have the composer version specified in your docker container, you might need to set it up there. In our case, we are using Lando, so let’s refer to the documentation on how to choose a composer version in Lando. In our lando.yml, we can explicitly specify the composer version as follows:

    composer_version: 2

Updating to composer 2 may result in errors depending on the packages that you are using. When you run composer install, you might get an error like the following:

Your requirements could not be resolved to an installable set of packages.

Problem 1
    - Root composer.json requires wikimedia/composer-merge-plugin 1.4.1 -> satisfiable by wikimedia/composer-merge-plugin[v1.4.1].
    - wikimedia/composer-merge-plugin v1.4.1 requires composer-plugin-api ^1.0 -> found composer-plugin-api[2.0.0] but it does not match your constraint.

The according issue was just merged recently, but during the upgrade composer 2 support was only available via a fork of the original repository. In such a case, you can include a forked repository using the following approach. Add the following to your composer.json:

    "require": {
        "wikimedia/composer-merge-plugin": "dev-feature/composer-v2 as 1.5.0"

    "repositories": {
        "wikimedia/composer-merge-plugin": {
            "type": "vcs",
            "url": "https://github.com/mcaskill/composer-merge-plugin"

3. Update to Drupal 9 and BLT 12 using Composer

We are using Acquia BLT to automate building and testing our Drupal sites.

Updating to Drupal 9 requires updating BLT to version 12. Make sure to follow the BLT 12 upgrade notes. Most importantly, some dependencies like PHPCS have been moved into their own plugins such as acquia/blt-phpcs. The following adaptations should be performed in composer.json:

    "require": {
        "acquia/blt": "^12",
        "cweagans/composer-patches": "~1.0",
        "drupal/core-composer-scaffold": "^9.1",
        "drupal/core-recommended": "^9.1",
    "require-dev": {
        "acquia/blt-behat": "^1.1",
        "acquia/blt-drupal-test": "^1.0",
        "acquia/blt-phpcs": "^1.0",
        "drupal/core-dev": "^9",

With the BLT update, some commands have changed. The BLT 11 versions of the commands, i.e.

blt validate:all
blt tests:all

Are now replaced with BLT 12 versions:

blt validate
blt tests

To perform the necessary updates, you need to run the following

composer update -w

Depending on your module dependencies, this might result in update errors. Follow the next sections for tips how to update your module dependencies for Drupal 9 compatibility.

4. Update contributed modules for Drupal 9

Because of the switch to support semantic versioning, modules might have changed their major release. For example devel has abandoned the 8.x-3.x series and uses now 4.x. You can always check the module page and verify that you find a version that requires Drupal ^9. Adapt the version in composer.json as follows:

    "require": {
        "drupal/devel": "^4.0",

5. Notes on applying patches for module compatibility

Since drupal.org now supports issue forks & merge requests based on GitLab, .diff patch files might not need be available anymore within issues. You can still apply them using the following approach. Add “.diff” at the end of the merge request url. The following example illustrates how a merge request-based patch can be applied to a module in composer.json:

    "extra": {
        "patches": {
            "drupal/config_ignore": {
                "Support for export filtering via Drush (https://www.drupal.org/i/2857247)": "https://git.drupalcode.org/project/config_ignore/-/merge_requests/3.diff"

When a module doesn’t state Drupal 9 as core_version_requirement or you need to have the composer.json to be added, you can use the following approach to include such a module using the composer workflow. You can use the module based on the version that is provided by the git branch that contains the fixes.

    "require": {
        "drupal/term_reference_tree": "dev-3123389-drupal-9-compatibility as 1.3-alpha3",
    "repositories": {
       "drupal/term_reference_tree": {
            "type": "git",
            "url": "https://git.drupalcode.org/issue/term_reference_tree-3123389.git"

6. Update your custom code for Drupal 9 using Rector

Drupal 9 compatibility issues should be outlined by the Upgrade Status module mentioned previously. We are using drupal-check to automatically detect issues in the code base and this threw significantly more errors after the upgrade as code style requirements were increased. I used Rector to apply some automatic code style fixes for our custom modules. Rector wasn’t able to do all of them, so plan for some additional work here.

7. Working in multiple Lando instances of the same site

Because the Drupal 9 upgrade branch has a lot of dependencies that are different from Drupal 8, switching back and forth between branches might be cumbersome. I decided to run two instances in parallel, so that I don’t have to do full lando rebuilds.

Check out the same repository twice in two separate folders. Add and adapt the following .lando.local.yml within your second instance, so that you can run lando separately for both folders.

name: project_name_2

Use the following configuration to adapt url mappings, so that they don’t overlap with the original project.

    - project_url_2.lndo.site
    - project_domain_2.lndo.site
    - admin.solr.solr_index.project_2.lndo.site:8983

        DRUSH_OPTIONS_URI: "https://project_2.lndo.site"

In case you need have specified a portforward for the database, you should define a custom port for your second project instance

    portforward: 32145

Now you will be able to use lando start and respective commands within both project folders and access both site instances independently.

8. Conclusions

Thanks to semantic versioning, updating from Drupal 8 to Drupal 9 involves very little steps on the application layer. Most contributed modules are Drupal 9 ready and only a few exotic modules required me to work on a reroll of a Drupal 9 compatibility patch.

As you can see from the topics being mentioned, the effort to update the infrastructure certainly accumulates with upgrading from Composer 1 to 2, PHPUnit and making sure that other toolchain components are up to date.

Thank you Karine Chor & Hendrik Grahl for providing inputs to this post.

Feb 23 2021
Feb 23

PHP 8 brings a host of new features improvements, functions, and deprecations to the language compared to PHP 7. Among all of these new features, the JIT compiler is the one sharing the limelight. However, other features like syntax changes are also to be taken into account as it is these features that will have a greater impact on the practitioners.

Since there are many important changes that we would like to talk about, so we have split this blog into several parts. This is part 1 of the series.

Issues with the old code:

With PHP 8 we should no longer consider that it will be backwards compatible as it has a pack of syntactical changes. The latest changes include:

  • The Magic quote legacy
  • The real type
  • Reflection export() methods
  • Unbinding $this from non-static closures
  • implode() parameter order mix
  • hebrevc() function
  • mb_strrpos() with encoding as 3rd argument
  • money_format() function
  • convert_cyr_string() function
  • allow_url_include in directive
  • restore_include_path() function

Let us take a look at the major PHP 8 features:

New functions


When trying to find out if one string is a part of another string, you will generally use str_pos() which makes use of the needle in a haystack concept. It returns an integer showing the first position at which you see the needle. When it is returning the position of a string you simply cannot check for whether or not strpos() discovered it; if it returns “0” (positions are zero-indexed and begin with 0 rather than 1), then the conditional is going to treat it as a false value, and indicating it wasn’t found. 

This means you will have to wrap it in a condition such as “strpos($haystack, $needle) !== false.” Where false indicates that it could not find the string’s position. 

To counter this, PHP 8 introduces str_contains(), which returns a simple boolean indicating if the needle is present in the haystack.

So instead of doing this:

if (strpos('string with lots of words', 'words') !== false) { /* … */ }

You would now do this:

if (str_contains('string with lots of words', 'words')) { /* … */ }

str_starts_with() and str_ends_with() functions:

These functions are now incorporated into the core:

str_starts_with('haystack', 'hay'); // true
str_ends_with('haystack', 'stack'); // true

fdiv() function

The new fdiv() function does something similar as the fmod() and intdiv() functions, which allows for division by 0. Instead of errors, you'll get INF, -INF or NAN, depending on the case

get_debug_type() function:

The function get_debug_type() returns the type of a variable. get_debug_type() returns more useful output for arrays, strings, anonymous classes and objects. Sure it sounds like gettype() but there are benefits of the later. 

For example: calling gettype() on a class \Foo\Bar would return object. Using get_debug_type() will return the class name.

get_resource_id() function:

Resources are special variables in PHP, referring to external resources. One example is a MySQL connection, another one a filehandle.

Each one of those resources gets assigned an ID, though previously the only way to know that id was to cast the resource to int:

$resourceId = (int) $resource;

PHP 8 adds the get_resource_id() functions, making this operation more obvious and type-safe:

$resourceId = get_resource_id($resource);

Named arguments

Named arguments allow you to pass in values to a function, by specifying the value name, so that you don't have to consider their order, and you can also skip optional parameters.

function foo(string $a, string $b, ?string $c = null, ?string $d = null)
{ /* … */ }

    b: 'value b',
    a: 'value a',
    d: 'value d',

Constructor Properties

This syntactic change allows us to create data transfer objects. Instead of specifying class properties and a constructor for them, PHP can now combine them into one.

So instead of doing this:

class Money 
    public Currency $currency;
    public int $amount;
    public function __construct(
        Currency $currency,
        int $amount,
    ) {
        $this->currency = $currency;
        $this->amount = $amount;

You can do this:

class Money 
    public function __construct(
        public Currency $currency,
        public int $amount,
    ) {}

Attributes allow us to declare meta-data for our functions, classes, properties and parameters. Attributes map to PHP class names (declared with an Attribute itself), and they can be fetched programmatically with PHP Reflection API.

class Foo {
    public function bar(): void {}

This allows us to easily declare attributes/annotations which previously required storing them in doc block elements and parsing the string to infer them. 

The null safe operator

The null coalescing operator is similar to the ternary operator but will behave like an isset on the left-hand operand instead of just using its boolean value. This makes this operator especially useful for arrays and assigning defaults when a variable is not set.

It is not fully reliable as it doesn't work on method calls. Instead, you need intermediate checks, or rely on optional helpers provided by some frameworks:

$startDate = $booking->getStartDate();

$dateAsString = $startDate ? $startDate->asDateTimeString() : null;

With the addition of the null safe operator, we can now have null coalescing-like behaviour on methods.

$dateAsString = $booking->getStartDate()?->asDateTimeString();

Union types

Union types are a collection of two or more types that indicate that either one of those can be used.

public function myfunction(Foo|Bar $input): int|float;

Note that void can never be part of a union type since it indicates "no return value at all". Furthermore, nullable unions can be written using |null, or by using the existing? notation:

public function myfunction(Foo|null $foo): void;
public function alsomyfunction(?Bar $bar): void;

JIT Compiler

PHP Opcache supports JIT. It's disabled by default, and if enabled, JIT compiles and caches native instructions. It does not make a noticeable difference in IO-bound web applications but provides a performance boost for CPU-heavy applications.

# Enabling JIT in php.ini

Read part 2 of the blog here.

Feb 23 2021
Feb 23

Today I needed to load some Drupal user data via a profile2 profile. When looking into this, most resources that I found suggest using this approach and calling the profile2_load_by_user() function directly and passing in the user object:

$account = user_load(...);

$accountWrapper = new EntityDrupalWrapper('user', $account);
// or `$accountWrapper = entity_metadata_wrapper('user', $account);

$profile = profile2_load_by_user($account->value());
// or `$profile = profile2_load_by_user($account);`

$profileWrapper = new EntityDrupalWrapper('profile2', $profile);

$firstName = $profileWrapper->get('field_first_name')->value();

This though requires a few steps, and as I'm a fan of object-orientated code and Entity Metadata Wrappers, I wanted to find a cleaner solution.

This is my preferred method that uses method chaining. It returns the same value, is less code, and in my opinion, it's cleaner and easier to read.

$firstName = $accountWrapper
Feb 23 2021
Feb 23

The framework contract award highlights Agiledrop’s commitment to utilizing the power of open source software for the benefit of Open Data 

Capgemini Invent just announced that the Publications Office of the European Union has awarded them a six-year framework contract to continue the development of the European Data Portal and related consultancy and research work into a new service: Data.Europa.EU.

We’re proud to announce that Agiledrop is part of the consortium led by Capgemini Invent that will deliver the project. It will combine the two European data portals, and their efforts towards facilitating open data publication and re-use in Europe. 

Capgemini Invent, the digital innovation, consulting and transformation brand of the Capgemini Group, will lead the six-year engagement, coordinating the project consortium.  

The new Data.Europa.EU, to be launched in spring of 2021, will integrate the pre-existing European Data Portal and European Union Open Data Portal into a single, coherent core component of the public sector data infrastructure that has been set up by the European Union, its institutions and Member States. Like its predecessors, it will offer three key pillars: 

  • Access to public data resources across Europe via the single point of contact, which is the portal itself, offering over 1 million datasets across 36 countries, 6 EU institutions and 79 other EU bodies and agencies;
  • Support to EU institutions and Member States via the set-up of communities of practice of national open data portal and policy owners, training and consultancy to improve, sustain and document data publishing practices;
  • Evidence of the socio-economic benefits of re-using public data resources and various stimuli to foster and showcase uptake and value creation. 

The goal of Data.Europa.EU is to leverage this three-pillar approach to support the creation and improvement of processes, products and services re-using public data resources to create economical, societal, political, and environmental impact. The more this impact is documented and understood, the further access, discoverability and data uptake will increase.

The latest Capgemini Invent study published in 2020 as part of the European Data Portal estimated a value between 199 (baseline scenario) and 334 (high growth scenario) billion EUR in market size for open data in Europe in 2025.

“We are honored to have been invited to join this consortium by Capgemini Invent and to get the opportunity to participate in a project as impactful as Open Data. Having been working in the open-source world for over a decade now, we’re keenly aware of the importance of freely available information, and this is why we’re particularly excited about being able to contribute to the Open Data movement”, says Marko Bahor, Managing Director of Agiledrop.

Beyond delivering improvements to the pre-existing two services, the agreement will continue including the measurement of open data maturity in Europe and the socio-economic impact of open and shared data in Europe in light of the current and planned developments.

Assistance will be given equally to European countries where specific attention should be paid to improving the discoverability of data and improving data portals to foster re-use of public data resources within each respective country and community.

Capgemini Invent leads the project’s Consortium, in partnership with INTRASOFT International, including Fraunhofer FOKUS, OMMAX, con terra, 52°North, Agiledrop, Timelex, the Lisbon Council, Universidad Politécnica de Madrid, and Capgemini’s global design leader Idean and the Cybersecurity Services.

About Agiledrop

As long-time open-source advocates, Agiledrop specializes in the Drupal CMS and is very active in its community through code contributions, event organizations and sponsorships, knowledge sharing, and more.

We provide high-end digital experiences based on Drupal in combination with highly capable front-end technologies, e-commerce frameworks and powerful back-end technologies for government and non-government organizations, agencies, and media and publishing firms from Europe and North America. 

Headquartered in Ljubljana, Slovenia, Agiledrop’s team boasts over 65 members working from four offices in Slovenia, the majority of them being engineers and developers. Our three founders all come from technical backgrounds, and so technology proficiency and an innovative, solution-oriented outlook are integral factors of Agiledrop’s work.

We are one of Slovenia’s leading and fastest-growing software development companies and we’re also very active in the local development community, spreading the word about Drupal and open-source software to new generations of development enthusiasts.

One of our main goals is to facilitate the entry into the world of programming for aspiring developers by providing local offices all across the country and elaborate onboarding programs for a wide range of technologies. 

Key to Agiledrop’s success is our strong company culture of collaboration and knowledge sharing. Team members are encouraged to support and learn from each other, which results in a cross-pollination of experience and a strong team spirit.

Throughout the years, our team has collaborated and delivered multiple projects for organizations such as UNESCO and SAGE Publications.

For Agiledrop, being part of this consortium is the culmination of our long-standing commitment to open source and a true testament to our high degree of expertise and professionalism. 


Ales Kohek, Client Advisor

Feb 23 2021
Feb 23

Project Management is easy. It is like riding a bike. Except the bike is on fire. You are on fire. Everything else is also on fire.

A whole set of easy-looking tasks with enormous responsibilities to take care of - Yes you guessed it right, we are talking about "Project Management" - a task which seems easy to everybody else but to the one who is doing it. While the main intention of project management is to complete the project with less struggle and to deliver it within the budget and on time, not everybody has an idea about how much planning, strategizing, and communication it involves.

The other day I was curious about what Drupal.org has to say on project management. Nothing less than a bible for all Drupal developers, I was sure to find something of my interest for Drupal project management, & I was not surprised to find a set of Drupal Project Management Tools (a suite containing several components, structured as Drupal modules) But what left me wondering was, are these tools and project modules enough to achieve a Drupal project's goal. As a Drupal project manager, tools are just not enough to bring the scope of a Drupal project to completion. From Drupal website design to development and maintenance, there is a lot more to Drupal Project Management and it is certainly not one of those tools.

Drupal Project Management - What no one is talking about


Irrespective of your approach or methodology and the type of project to be handled, Drupal requires preparation. From objectives or goals to the time frames, you need to be quite clear with what the client requires and this is possible only if you and your client are on the same page. Inputs from your team who are experts in Drupal will be your trump card in the process of planning and preparation. This will not only enable you to come up with better time frames, but you would also be able to know the prerequisites, interdependencies, and work conditions.

Never fail to miss critical inputs irrespective of how small they are to the Drupal project. You might end up missing something valuable.

Communication - Keep it Open

Always keep the communication lines open. It might be from your team, the client, or even the end-user, every input is important. Though the inputs might not be from a Drupal expert, it might still be something that you could have missed or you don't even have a clue about. This type of open communication makes managing your Drupal project easy as the success entirely depends on this. Good communication allows you to discuss challenges, roadblocks, and risks associated with your Drupal project, which in turn helps you focus better on your goal.

Time Management

The bad news is time flies. The good news is you are the pilot - Michael Altahuler

Time management is the most important factor of a Drupal project. But before you even jump into the pit and start juggling multiple tasks to ensure you manage everyone else's time, you better be good at managing your own time! And the good news in a Drupal project is that everything can be broken into smaller tasks for you and your team. Irrespective of its size, breaking down your project into smaller tasks helps your team to visualize and focus in a better manner. Keep it simple and keep it real.

Take Feedbacks Seriously

Never be reluctant to receive feedback from anybody related to your Drupal Project. Feedbacks are the step to improvement & we all need people who can give us such feedback. Feedback helps you realize your mistakes and learn ways to tackle them going further. Such constructive criticism helps in stabilizing the project before it goes off the deck completely. What is better than staying one step ahead from yesterday and performing in a superior way?

Transparency: Key to Success

You need to ensure that there is a high level of transparency between your client, the core team, and the extended project team. One way of doing this is by keeping them proactively in a loop. This corroborates trust-building and open communication between the team members. For example, if there is a delay in your Drupal project, let the client know about it! Never end up in a place where they come looking for you.

Add some Spice

Coming together is a beginning, keeping together is progress, working together is a success. - Henry Ford

Teamwork is by far the best possible way to handle any hassles in your Drupal project. Bond with your team, take a day or two out from the busy schedule to do something fun. Research has proved that such activities help people work more efficiently on a project. As a matter of fact, Drupal development companies around the world conduct Drupal cons and Drupal meetings to create a bonding between developers from around the globe.

Know Your Tools

While all the above-mentioned points play a major role in Project Management, you still need to know your tools/modules in order to successfully deliver your project.

The most popular tools in the market are the ones that help you break down your project into various tasks and sub-tasks. Most of the tools provide additional capabilities or features required for better project management.

Some of these tools include Jira, Trello, Redmine, Zoho, etc.

Drupal offers quite a few modules that can play a major role in assisting Project Management. Though Drupal 8 does not quite yet provide a suite of tools, the list includes some good modules.

Feb 22 2021
Feb 22

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.

Feb 22 2021
Feb 22

Imageshop is a Cloud based Digital Asset Management system. It lets you store all your company’s images, videos and digital files easily and securely in an online image bank.

What can Imageshop do?

Imageshop is a secure image bank, where you can store and organise your images, videos, documents and graphics, making them easy to find for anyone you choose to grant access.

Drag & drop uploading and ultra-efficient image tagging means that they are always available when and wherever they are needed, in the right format and highest quality.

Banner Imageshop

About the integration

The module itself has been built to support Drupal out of the box. The main features are:

  • Uses Imageshop interface for searching, cropping and selecting media.
  • Support for image fields out of the box.
  • Support for Media library out of the box.
  • Support for CKEditor (through Media library) out of the box.
  • Easy installation / configuration.

More information about the Imageshop product can be found here.

You can download the module from drupal.org here.

The module has been made in cooperation with Screentek, the company behind the Imageshop product. We feel that Drupal needs more good alternatives for media handling and this could just be the right option for you. Feel free to contact Imageshop and have a talk to them about Imageshop and how it can help you handle your media files across your company, channels and systems.

Feb 22 2021
Feb 22

Many organizations have done Drupal vs. some other CMS, but I think my hands-on expertise with Drupal might offer some unique insight when learning a new CMS. Migrating to the DXP's new CMS will consume a lot of my time. As a result, I’ll need to limit my involvement in the Drupal community,

attend fewer virtual conferences, and limit my focus to the Webform module's maintenance.

Feb 22 2021
Feb 22

If you’re part of the Drupal community, you know that contribution is a great way to expand your skills and hands-on experience, make connections in the community, and make Drupal better.

Sometimes the barrier to making code contributions feels high. But in fact, non-code contributions are equally important. If you’re passionate about marketing and communications, and looking to contribute through writing, design, translation, or leading and managing marketing efforts, the Promote Drupal Initiative is recruiting for several positions.

The Promote Drupal initiative exists to:

  • Create content and marketing materials targeted to decision-makers who are considering adopting Drupal

  • Use events to drive the expansion of Drupal adoption and the Drupal community

  • Create social media content and campaigns to position Drupal as a thought leader

At the moment, we’re recruiting for several positions, including DrupalCon

  • DrupalCon Marketing and Outreach Committee Member - You want to support the success of DrupalCon through outreach to both potential and returning attendees.    

  • 20th Birthday Committee Member - You want to highlight the 20 years of achievements and success of the Drupal project and community throughout 2021

  • Drupal Ambassador - You are looking for opportunities to promote Drupal in other communities and at conferences outside the bubble.    

  • Drupal Initiative Marketing Lead - You are passionate about Drupal’s innovation and want to highlight the work of the project initiatives.    

  • Drupal Social Media Team Member - You want to improve Drupal’s social media presence on an on-going basis.    

  • Drupal Evaluator Marketing Team Member - You want to improve Drupal’s onboarding experience for evaluators.    

You can review the details of these opportunities and fill in our recruitment form to help match you with the right position.

The wide-ranging benefits of contributing to Promote Drupal include:

  • Official contribution credits

  • Expansion of marketing skills and open source audience awareness to leverage in other marketing positions

  • Position you and your organization as a Drupal and open source thought leader at the center of one of the world’s largest and most-successful open source projects

  • Expansion of your network of open source and technology leaders in the Drupal community

  • Hands-on experience marketing virtual conferences and insight into attendee personas

  • Joy of creating positive community engagement

  • Enjoy recognition for your service (exposure for both your personal brand and your company/organization)

If you’re interested in getting involved, fill in our recruitment form to help match you with the right position.

Contact me on the #promoteDrupal channel on Drupal Slack or directly message me at @pixelite.

Feb 22 2021
Feb 22
The Drupal and Contentful Comparison: Open Source vs Proprietary Software Gurpreet Kaur Mon, 02/22/2021 - 16:16

Today, everything is being done online. If you are not online, you just might be considered antiquated. From social media to e-commerce, every aspect of the online world is, thus, improving by leaps and bounds. We are benefiting from these advancements, so no complaints there. 

All the advantages that we are able to reap from the online world, from the websites we so eagerly use, are dependent on a particular system. This is the system that they are built on, the more versatile it is, the better the website’s versatility is going to be. And this is exactly what we expect from our web experiences and the system provides almost every time. 

Drupal and Contentful logos can be seen together.

It is the Content Management Software, I am raving about. There are plenty available for the developers to choose from. However, we’ll be talking about two of them in particular, comparing them actually as they are strangely a bit alike and a bit different too. These are Drupal and Contentful. So, let’s begin.


Drupal   Contentful Market Share  Founded in 2000, Drupal has a substantial market presence, with a million sites using it  Launched in 2013, Contentful’s market share is impressive too Decoupled Architecture  Drupal offers efficient decoupling with an API-first infrastructure  Decoupling features are similar to Drupal

Performance and Scalability 

If optimised properly, Drupal provides impeccable performance and limitless scalability  Contentful offers great performance too, however, it poses technical limitations Security  Quite reliable and the most secure open source CMS with a proactive community constantly working on issues  Good, however, bugs can be a common occurrence Content Workflow  The content modelling and editorial experience is wholesome for the authors, Views system being the highlight Contentful works differently, but offers an equally wholesome experience to content authors Pricing  Free to install and configure, there can be other costs depending on the scale of the project  Not free, being a proprietary software, has a standard monthly cost to be paid Third-party Integrations  Integrates seamlessly with third party tools and application  Matches Drupal in this regard Community  The Drupal community is over a million and growing  Contentful does not have such a wide community, but its Community Plan is a step towards it Migrations  Difficult in the past, but a breeze with the launch of Drupal 9 The CLI tool helps in migrations, making them automated Responsiveness  Designs, themes, images and tables, everything is mobile-friendly with Drupal  The responsiveness to mobile devices is quite impressive as well. Multilingual  Translates content, configurations and interfaces in over 90 languages Offers translation services similar to Drupal, but in 30 languages Accessibility  Drupal follows WCAG 2.0 and ATAG 2.0 guidelines for accessibility  Contentful follows WCAG 2.1 guidelines SEO  Drupal has a module for every SEO need, be it keywords or links Contentful also supplements SEO needs, but it is dependent on the creation of dedicated content types

Understanding the CMSs and their abilities 

Drupal, leading as an open source  

Drupal has been around for two decades. The 15th of January 2021, marked its 20th birthday, being around for this long, it has mastered all the nuances of content management and digital experiences. It is a digital experience management system that has the potential of driving web content onto multiple platforms to provide personalised experiences that would allow your users to connect with your organisation.

The kind of content management tools Drupal comes with are not only sophisticated, but also stimulate perpetual innovation. The great thing about Drupal isn’t its numerous modules, themes and templates, even though they are great too, but it is the fact that Drupal is open source and accessible to far more people than a proprietary software would be. 

A line graph is showing Drupal usage statistics. Source: BuiltWith


A table is showing the number of sites using Drupal at different points of time.Source: Drupal.org

Contentful, not the conventional CMS

Contentful was founded in 2013 by Sascha Konietzke and Paolo Negri in Berlin. It hasn’t been around as long as Drupal, but it isn’t the new kid on the block as well. In simple terms, Contentful is a content infrastructure, a platform that would allow you to create, manage and distribute content to any platform. 

This pretty much sums up the definition of a CMS. So, why did I say Contentful was not conventional?

Other CMSs, Drupal included, come with out-of-the-box content models that you have to choose from. However, with Contentful you have the liberty to create your own content models and you get to decide which content you want to manage. The RESTful APIs provide you the ability to deliver your content across multiple platforms, including websites, mobile apps, be it iOS, Android or Windows. From Google Glass to infinity, it is your pick. You can utilise the potential of Contentful on your own or a team. The uncluttered UI makes assigning custom roles and permissions a breeze. Contentful is a modern content platform that paves the way for faster launches.

A bar graph shows the market share of Contentful in different countries since it was founded.Source: BuiltWith 

Drupal vs Contentful: Putting them under the microscope

How efficient is decoupling? 

Usually a CMS is equipped to manage content in the backend and push it to the front-end templates that essentially provide the desired user experience. This meant that a CMS served as an all-in-one system that provided for all the development needs. However, that is changing with decoupling, where-in the frontend and the backend are two different entities, independent of each other.


With Drupal, you can decouple the frontend from the backend where you want to, making the content become reusable chunks that are independent of the presentation layer and always prepared for delivery to as many sites and apps.

When you decouple, you get the benefit of Drupal’s presentation-neutral content. The REST API, GraphQL, JSON:API and all the different alternatives that you get in decoupled Drupal ecosystem to build a front-end as you want, with any technology you want, is amazing

These are a few of the tools and frameworks that decoupling Drupal would allow you to take up and build interactive sites and apps. You can get the complete insights on what frontend technology to use with decoupled Drupal architecture here.

You also get the opportunity to future-proof your project by refreshing designs without re-implementing the entirety of the CMS.


Since decoupling is dependent on one principle, that is the separation of the frontend from the backend, I wouldn’t say that Contentful is all that different from Drupal in this regard. 

  • It is an API-first content infrastructure.
  • It makes front-end layers less rigid and more versatile, with a number of tools and frameworks.
  • It acts as a content repository delivering your content.

All of this is achievable through Drupal as well. What is different are two things;

  • It has its own Contentful API, delivered through a CDN, while Drupal operates on RESTful APIs, JSON and GraphQL. 
  • Next is the fact that Contentful uses an approach known as JAMstack, JavaScript, APIs and Markup; while decoupled Drupal uses MERN, MangoDB, Express, React, NodeJS.

There are also chances of API requests turning wrong. When that happens, the Contentful server will automatically create an error, with an appropriate HTTP status code in the header along with a JSON response in the body. 

How reliable is the performance and scalability?


Drupal comes equipped to handle any and all performance scalability needs an organisation might have. However, it would only be able to do that if you optimise it properly, that is a contingent for scalability. 

For instance, sites operating on Drupal 8 and later versions come with tools that will allow you to scale on the frontend and the backend. 

Content Delivery Network 
Server Scaling 
Site Monitoring tools 

All account for a better performing Drupal site that is always ready to accommodate for traffic spikes and content growth making your site always available. To know more, read these comprehensive guides to Drupal performance optimisation techniques and scalability provisions.


Contentful was made to scale to compensate for your site’s growth much like Drupal. It has taken into consideration all of the dimensions of growth that a site or app may face and categorised them into seven categories.

It is prepared to handle 

  • heightened levels of traffic, data and usage; 
  • the addition of more projects, products and channels; 
  • an increased level of complexity and sophistication in use cases;
  • an expansion in global markets; 
  • an elevated number of internal users; 
  • an enhanced pace of development; 
  • and cater for an advanced level of security for business perpetuity.

At the end of it all, Contentful comes with certain technical limits upon the infrastructure. These are enforced to mandate a lack of interruption on the shared-service infrastructure functions, however, they are limits all the same. Reading them before using Contentful would be wise.

How sufficient is the security?


In terms of security, Drupal is on the higher level of sufficiency, if not the best. The kind of features it comes equipped with make it a frontrunner. A Sucuri’s report even showed that Drupal is amongst the most secure open source CMS out there.

Drupal security is very competent because of; 

  • Its expert security team, adhering to the guidelines set by Open Web Application Security Project; 
  • Its community, being proactive and analysing any security issues; 
  • Its implementation of a secure access through strong passwords that are even encrypted;
  • Its secure codebase; 
  • Its control over the most trivial user access; 
  • Its encrypted database; 
  • Its APIs, ensuring validation of data and preventing malicious entry. 


Contentful almost competes with Drupal in terms of security, I have used the term almost because there is a catch. 

Talking about the positives, Contentful’s security infrastructure is based on Amazon Web Services, making it quite impressive. 

  • It has ISO 27001 compliant data centres; 
  • It comes with data storage, that is encrypted at rest along with an encryption of all forms of communication in transit; 
  • It comes handy with a web application firewall, brute force prevention, data retention policy, threat detection and two-factor authentication along with security audits. 

Despite all of these measures, Contentful isn’t totally secure from hacks. There are bugs and fixes that are often highlighted, and with a large codebase like that of Contentful, it is almost understandable. Therefore, its Bug Bounty Program was launched to reward hackers for finding these issues and vulnerabilities. 

How streamlined is the content workflow?

For a content management system, the content is the most essential part, its creation and management to be streamlined for the CMS to be successful.


In terms of content modelling and the editorial experience, Drupal’s abilities are more than impressive. 

  • Drupal offers numerous field types like boolean, comments, date, email, links, timestamp and numbers, inclusive of decimals, integers and floats. 
  • Drupal’s Field Group module enables you to custom group fields, allowing easy customisations for your editors.
  • The Views system helps in creating an experience that has enhanced uniqueness because it gives you the power to add any field to the view, pull relationships as well as executing many operations at once.
  • Then there is the Content Moderation module along with the Workflows module that can define an innumerable count of arbitrary publishing states and workflows. You could have a largely diverse team, and still be able to map out your preferred workflow before implementing it.

Majority of these are unfound in Contentful, however, it does have its own share of tools accounting for a streamlined workflow.


Contentful doesn’t really fall behind Drupal in content workflow by a substantial margin. Its abilities are almost as good as that of Drupal’s. Contentful’s default editorial experience is extremely easy to understand and use. However, when you decouple it, say using React, you would have to part with the default features. 

  • Contentful offers field types as many as Drupal’s, however, it doesn’t highlight specific format types like email and links and physical addresses. But then it has a JSON object, which Drupal is missing out on. 
  • Contentful uses widgets to define each field type. 
  • Default content views make viewing and filtering content very easy. 
  • Contentful also has easy field restoration with a referencing experience for searching and creation of entities, both of which aren’t found in Drupal.

Contentful’s content modeling and editorial workflow are quite different from Drupal, but effective all the same.

How pocket friendly is the pricing?


Being an open source software, Drupal is free to install and configure. If you have the right human resources, it is absolutely free. However, if you don’t, then it is going to cost you. And these costs depend on the kind of site you are building.

Costs would be dependent on; 

  • The size of the site you are aiming for, the bigger the project, the higher the cost; 
  • The kind of complexity it is going to mandate in relation to workflows, integration and multilingual sites;
  • The timeline and the team you would be relying on; a bigger project would need additional team members like project managers and quality assurance personnel;
  • Then there is the question of the Drupal agency to do all of this for you, if you cannot, which is going to cost you.


Contentful isn’t associated with being free like Drupal. It has different pricing models for different needs of developers and organisations.

  • If you are looking to build a personal site as an individual developer, Contentful would be free for you.
  • If you are looking to power a modern stack site or two with enhanced authoring roles and technical support, you could take up a free trial and then subscribe to Contentful starting at $489 per month.
  • And if you are looking to build hundreds of digital experiences while scaling your content platform, you can get a custom plan from Contentful for your specific needs.

I wouldn’t say Contentful is too heavy on the pocket as is, but including the cost of hiring developers and staff and it would become more expensive than Drupal. 

How effective are the third party integrations?


Drupal is renowned for its abilities to integrate itself with third party tools and applications. Be it analytic platforms, e-commerce verticals, ERP systems or email and marketing systems, Drupal works well with all of them.

Its API-first focus, like Contentful, makes it essential for finding connections to make content reach to other sites and apps. And third-party integrations are just the way to do that.


Contentful comes with UI extensions that are able to integrate themselves with external APIs and third party data. From e-commerce sites to YouTube to local translators, Contentful can merge itself with a number of tools. 

There is also the fact that Contentful has successfully integrated itself with Gatsby and Metalsmith as its official projects proving its abilities further in this regard. Drupal and Contentful aren’t all that different in terms of third party integrations.

How helpful is the community?


Drupal is a large platform, operational all over the globe. This means that its community is also spread throughout the world. And it has, the Drupal community has over a million users in as many as 230 countries, isn’t that an achievement in itself?

People from different backgrounds, different skill sets and different perspectives come together to improve Drupal and enhance its community ties. Perks of contributing to open source are immense and this guide to Drupal contribution will shed more light on the advantages that you get.


Contentful does not have a community as wide as Drupal’s. However, it is making strides towards building one. It has devised and launched a Community Plan that would empower individual developers to build as they like, without incurring any costs as opposed to its 14-day free trial. 

The community also provides technical support through its slack channel, where thousands of developers are active and ready to help.

How seamless are the migrations?

Upgrades and migrations are inevitable when it comes to web development. Usually developers do not look forward to the hassle they bring along. So, do Drupal and Contentful bring on the hassle or eliminate it?


With Drupal 9 having launched last year and Drupal 10 on the horizon, there is a lot of anxiety amongst the Drupal 7 and 8 using folks. The primary reason for the anxiety being the looming EOL dates and the heavy-duty upgrades. 

However, the anxiety isn’t necessary at all.

Talking about the switch from Drupal 8 to 9, as per the makers, this upgrade is considered the easiest in almost a decade. By following a four-step guide, you can have your current site ready for the functionality and better security standards of Drupal 9 by using the Upgrade Status

As for the upgrade from Drupal 7 to 9, easy is not a term that would be used to describe it. The migration will overwhelm you, but all the advantages of Drupal 9 will make it seem worth it. Developers can make the upgrade themselves with the help of Upgrade Status and Drupal Module Upgrader. These help in letting you know whether your themes and modules are competent for Drupal 8/9 and converting your custom code respectively. Explore the ultimate guide to Drupal 9, all the burning questions that you may have about Drupal 9 and the must-have modules to start your Drupal 9 website to know more


Contentful has a tool that helps in the migration process, making it rather easy by using CLI. The Contentful migration CLI helps developers to script changes to the content model with a fine-tuning that wasn’t possible before. Using continuous integration services along with it will also help you in validating the deployment before it hits production. 

Installation and configuration of the Contentful CLI; 
Writing of your own migration script; 
And applying the migration with CLI, is all you need to do to make it happen. 

The result would be getting documented and versioned content types along with automated and predictable migrations that can be repeated in other environments.

How versatile is the responsiveness?


In terms of responsiveness to devices, Drupal is a pro. Providing an optimal visitor experience is one such feature of Drupal that makes it worth everyone’s while and responsiveness is its core. 

Drupal offers; 

  • Responsive designs;
  • Responsive themes; 
  • Responsive images and breakpoints; 
  • And even responsive tables; 

All of these enable Drupal sites and apps to identify the width and height of any device and adapt itself accordingly, making it mobile and user-friendly at the same time. 


Contentful is often referred to as a mobile content management system, meaning it was built keeping in mind the fact that developers and authors would want to publish content on the go through a smartphone or tablet and Contentful makes that work seamlessly.

It optimises mobile performance with three features; 

  • Selective sync;
  • Image auto-compression; 
  • And providing support for offline persistence.

This makes it as good as Drupal in responsiveness.

How fluent are the multilingual sites?


Another one of the benefits of Drupal is the fact that it caters to a multilingual audience very well. With inbuilt language handling abilities, it provides localised digital experiences that are both fast and easy to get.

  • It can translate content, configurations and interfaces. 
  • It can be run in 90+ languages.
  • It also provides an overview screen for translators, making their work easier.  

Access this guide to Drupal’s multilingual capabilities to know more.


Much like Drupal, translations in Contentful also take place in-house. It has a six-step process to make translations happen, which isn’t very complex or rigid. You can add and delete the locales (languages) from the settings as and when you wish, provided you have administrative access. 

The only aspect that pales Contentful in front of Drupal is the number of languages supported. Sadly, Contentful only offers translations in 30 languages. 

Contentful uses locales to define the varying languages a site might use. This allows you to define localisations of content easily enough. However, when you have to work with multiple locales, it can become confusing for your authors. That being said it is an insurmountable task, organisations have worked with as many as 30 locales at once. 

How universal is the accessibility?


Drupal follows the WCAG 2.0 and ATAG 2.0 guidelines to make its projects accessible to people with disabilities. 

Features for screen readers are a major part of it, with the inclusion of drag and drop functionality, colour contrast, image handling, form labeling and exclusion of null tags, to name a few. 

Drupal accessibility also transcends from the users to the developers, with themes, modules and community sites making an inclusive developer environment. 


Contentful also offers similar features and functionalities for accessibility like Drupal. The only major difference is that it adheres to WCAG 2.1 guidelines, which are more recent. 

Building sites that are easy to adapt, navigate, have distinguishable elements and are keyboard accessible are some of Contentful’s accessibility principles. It also implements automated accessibility testing to check whether the project is compliant with the set standards or not. 

How friendly is the SEO?


Drupal has powerful SEO tools that can enhance your site’s visibility by a landslide. When I say tools, I mean modules, the use of which can make you a pro at SEO. 

Mastering the keyword game through Real-time SEO for Drupal; 
Mastering the linking game through Linkit module
Mastering the duplicacy predicament through Redirect module

Drupal can and will keep you at your A-game in terms of SEO. The Ultimate Drupal SEO Guide will help you become acquainted with all the right SEO modules. 


When you use Contentful as is, there aren’t as many SEO privileges to enjoy. For instance, a media page would only have a title and a description. That’s not to say that Contentful doesn’t provide for SEO. 

It does, however, for that you would need to provide more information. This means you would need to create a dedicated content type for the media files you will have. 

Once that is done, you Contentful will enable you to; 

  • Take command of the SEO; 
  • Put in the right tags (which are only used for organising and searching content, sadly); 
  • And add alt text for your accessibility. 

The change in the content type helps you to create whatever suits your needs and preferences, which is a good thing. There is one thing to remember that the extended metadata for these media files would be stored in the content tab, rather than the media tab, where the actual file would be located. This can be a little confusing. 

The bottom line

In the end, I wouldn’t say one is definitely better than the other. There are aspects wherein Drupal prevails over Contentful, like security and performance; however, there were also areas, wherein Contentful gave Drupal a run for its money, like accessibility and responsiveness. I’d say that both are great at what they do and saying one is entirely better than the other wouldn’t be appropriate. So, I’ll leave it to you. 

blog banner There are two chicks standing side by side. blog image A balancing scale can be seen. Drupal Contentful Blog Type Articles Is it a good read ? On
Feb 22 2021
Feb 22

If you manage a Drupal site that has constantly changing content, you may have concerns about the size and contents of the /sites/default/files/ directory. For most Drupal site maintainers, this can often be a source of anxiety, not ever really knowing what it contains and what, if any of the uploaded files are obsolete. 

Any method you utilize to solve potential issues is going to be tedious, but the Audit Files module can help make it a little less painful. This module provides several reports (generated using some user-configurable parameters) that can help you wrangle things:

Audit files module screenshot.

As an example, the "Not in database" report will show you a list of files that exist in /sites/default/files/, but are not managed (have not been uploaded via a file field) in Drupal. This list might include files directly uploaded via SFTP or some other method, so be careful what you delete, but it will definitely give you a head-start on identifying files that might be safely deleted.

If you feel that your site's files directory is a bit out-of-control, this module may be a good first step in cleaning things up.

Feb 22 2021
Feb 22

Through our decade long history in building nonprofit digital experience we've identified a unique set of challenges that almost all nonprofits and NGOs suffer from - and how Drupal was uniquely and strategically positioned as the ideal technology to transform those weaknesses into strengths.

Let's take a look at those challenges and how choosing the right CMS features address them:


10 Must-Have Features in a Nonprofit Website CMS

1. Tailored Flexibility

Challenge: Your current CMS limits your team's ability to create dynamic digital experiences for your website visitors.

First, filter the list of CMS options you are looking into by listing your strategic objectives and aligning them with the technical capabilities that will support your nonprofit's ability to deliver results.

Typically, a nonprofit's digital strategy objectives include:

  • Community-centric digital presence
  • Scalable expansion
  • Enhanced outreach
  • Easy, simple, yet rich UX/UI
  • Mobile responsiveness
  • Secure donations
  • GDPR, W3A, and WCAG 2.0 compliance
  • Safe data migration

For nonprofits who need a site builder with maximum flexibility tailored to the needs of complex nonprofit digital experiences, Varbase (Drupal 9 CMS) is an ideal choice as it comes with hundreds of pre-built modules, customizable themes, and multiple content types.

Need assistance in aligning your business and technical requirements? Book a call for with our team of consultants for a free consultation today!

2. Enterprise Security Measures

Challenge: Threats are evolving and your nonprofit lacks the resources to hire full-time DevOps to manage, update, and upgrade your IT infrastructure security.

If you cannot demonstrate your ability to keep your website visitors information and transactions secure - your nonprofit's digital presence is practically non-existent.

Cybersecurity threats are evolving all the time and it only makes sense that the CMS you choose is supported by enterprise-grade security modules constantly updated by the CMS vendor.

Make sure to ask potential vendors and service providers to demonstrate their security credentials.

Ask questions such as:

  • How often do you upgrade security modules?
  • How do you monitor projects built on your CMS?
  • What is the response rate when it comes to risk assessment and management?
  • Do you have in-house DevOps?
  • Are your information security management systems certified by ISO? Learn more about ISMS ISO certification.

3. User-Friendly Backend

Challenge: You have a diverse staff with varying to non-existent levels of technical expertise.

Your nonprofit organization is comprised of non dedicated part-timers and volunteers with diverse backgrounds - but this shouldn't hinder your ability to deliver results efficiently.

Everyone involved in content publishing, site building, and marketing should be able to use your website CMS in full collaboration with the rest of the organization based on user-specific roles regardless of their technical knowledge or first language.

Be sure to select a CMS that is supported by:

  • A multilingual backend for all users
  • Help and "How-to" guides
  • Technical documentation
  • Built-in support features in the CMS for each user role and activities
  • 24/7 support for complex technical issues
  • Open-source - wider community of developers to provide solutions if needed

For example, global nonprofits that employ diverse teams from around the world such as MSF, ICARDA, and UNHCR needed a multilingual Drupal 9 CMS like Varbase to build complex, custom, and engaging digital experiences.

4. Multisite Functionalities

Challenge: Lack of funds to build localized microsites or websites for your nonprofit's global missions and initiatives.

Rather than struggle with different standards and skill sets required to manage different websites; enterprises have realized that Drupal's multi-site functionality enables them to have a focused IT team with fewer burdens and distractions due to the fact that all websites under their umbrella are built using a single CMS installation and framework.

The same benefits extend to marketing departments who will find that publishing content from the same CMS is easier and more efficient.

Instead of spending money and hiring teams to manage expensive numerous website development projects - invest in a CMS that provides multisite functionalities:

  • Centralized management: Build multiple sites and domains managed by the same CMS and team.
  • Faster to market: Launch those projects quicker because they share all critical modules, themes, and branding of your nonprofit.
  • Efficient upgrades: All websites will be upgraded and updated through the same CMS.
  • Lower total cost of ownership: Save resources hiring teams to build and manage new digital projects.

If you are a nonprofit with missions across various regions around the world - localizing your digital experience and messaging to those locations and beneficiaries will be a massive boon to your digital strategy.

Identify the Right Multisite Solution Architecture for Your Enterprise

5. Mission Critical Integrations

Challenge: Not all CMSs can integrate with tools and tech you currently rely on (or will need to in the future).

The modern-day digital experience relies on an interconnected web of channels, systems, tools, and technologies that support your nonprofit's digital experience.

From built-in performance dashboards to custom complex integrations - those technologies must be integrated into your website and each serves a specific purpose.

Such as:

  • Analytics and reporting (i.e. Google Marketing Studio)
  • Omni-channel marketing automation (i.e. Campaign Studio)
  • Email marketing (i.e. MailChimp)
  • Social media tracking (i.e. Facebook Pixel)
  • Engagement (i.e. Disqus)
  • Customer relationship management (CRMs such as Eloqua and Hubspot)
  • Communities (i.e. OpenSocial)
  • Video publishing (i.e. Vimeo and Brightcove)
  • ... and much more.

Drupal has quickly become a strategic asset to nonprofits and NGOs around the world due to its ability to scale and integrate with almost anything out there in the market - and more importantly, custom-tailored integrations.


6. SEO Friendly Content Structures

Challenge: Lack of technical SEO knowledge harming website ranking on search engines.

Content structure is key to being rewarded by search engines like Google with higher exposure and ranking on their search engine results pages.

The IASLC, a US-based global nonprofit, is a content-heavy digital experience and struggled with content structure and information architecture-related challenges that negatively impacted their UX score.

When their new digital experience launched on Drupal 9 CMS Varbase - the simple transformation of their legacy menu and navigation to a user-centric structured menu provided the following benefits:

  • Categorized and clear content structure
  • Enhanced indexing when crawled by Google’s bots
  • Clear website visitor paths
  • Mobile-first UX design

7. Enhanced Content Publishing and Outreach

Challenge: Your target audiences speak different languages and have different preferences when it comes to content.

Content structure and user-centric UX/UI design will definitely help you maintain high page performance scores and core web vitals for search engine crawlers, but what about your human visitors?

Not all of them can read the same language - in fact, most would rather watch a video than read.

Does that mean you have to hire a translator? More marketers? Rebuild duplicate pages for each language?


With a push of a button, CMSs like Varbase enable your team to translate, review, and publish content created across your website and other relevant domains and websites built on the same CMS.

That's right, with a push of a button you can speak your target audience's various languages and create multilingual content enhanced for search engines in each language!

Casting a wider reach isn't enough if your communication doesn't support your efforts to convert visitors into members and donors.

8. High Conversion Donations Page

Challenge: You need to optimize conversion rates but your CMS doesn't provide the flexibility to create dynamic and rich landing pages easily.

Getting people to support your cause via donations requires a high conversion landing page. But what are the on-page features and UX elements necessary?

They can vary.

But these UX factors must be present on your donations landing page:

  • Credibility - Give potential donors clear information about where their money will be going. Support your credibility with hi-res images, stats, and testimonials from other donors in your NGO's community.
  • Accessibility - Make sure that anyone can clearly understand and access your donations page through a seamless journey regardless of the browser, device, or screen size they access your website from.
  • Security - Do you have SSL certificates? Let them know that their transactions are secure.

Using the Layout Builder module in Varbase - your marketing team can personalize and optimize landing pages on your website in a matter of minutes rather than days. 

Check out those stats about personalization real quick:

  • 80% of website visitors are more likely to convert thanks to personalized user experiences. (Epsilon)
  • Personalization can reduce acquisition costs by as much as 50%, lift revenues by 5 to 15%, and increase the efficiency of marketing spend by 10 to 30%. (McKinsey)
  • 89% of digital businesses are investing in personalization. (Forrester)

Evidently, personalization is key towards retaining and engaging your website visitors. Utilizing powerful UX personalization tools such as Layout Builder; your brand as a nonprofit will sustain a strong relationship with each visitor based on relevant communication, content, and user experience.

Streamline your donations with those pro tips:

A/B Testing: Create a separate donation landing page for each of your traffic sources (email, social media, organic search, etc.) This helps you identify which messaging and sources are converting higher than others.

Track Events: Set up event tracking in Google Analytics to identify which elements on your donations landing page are working and which are negatively impacting conversion.


9. Ongoing Support and Maintenance

Challenge: Outdated UX, buggy performance and website suffer frequent downtimes leading visitors to abandon site.

Prior to the pandemic, many enterprises underestimated the importance of ongoing support and maintenance is to their growth, and matter of fact survival as a business.

Not anymore.

As more enterprises are accelerating their digital transformation plans they are realizing how much website maintenance and 24/7 support, monitoring, tracking, and upgrading is to their digital strategy success:

  • Risk assessment, tracking, and aversion
  • Security module updates
  • Continuous delivery of UX feature upgrades
  • Server performance optimization
  • Search engine optimization
  • Uninterrupted website service regardless of traffic load

Drupal 9 and open-source-based CMS are ideal for nonprofits who are constantly growing and evolving, which means that you won’t have to change CMS solutions or purchase upgrades every time you need to add a new page to your site or implement new functionality.

Choose a CMS provided by vendors who have an in-house DevOps department with a proven and strong record of frequently keeping their CMS up-to-date with key upgrades and proactive reporting to guarantee that your websites are always at optimal performance.

Bridge the Gap Between You and Your Clients' Experience

Bridge The Performance Gap

Explore your website's post-launch opportunities to help your NPO realize it's mission.

10. Reliable Hosting

Challenge: Downtime and server performance is poor due to a lack of dedicated IT staff to monitor and manage performance.

Still in support, maintenance, and growth territory here.

Implementing best practices in web design and development is not enough. To sustain uninterrupted availability and performance for your users, you must find a reliable hosting service provider.

An ideal solution for budget-strapped nonprofits is to go on the cloud - as it reduces your IT staff overhead by using cost-effective cloud-based services.

Interested in discussing or auditing the performance of your technical infrastructure?

We'd be happy to help out. Get in touch for a free consultation and audit!

Feb 21 2021
Feb 21

The past couple of months have been very eventful in the Drupal Association, I can say I've been on boarded and I'm ready to participate in several committees and the general board meetings. The next being this upcoming Tuesday the 23rd at around lunchtime.

I'd like to start with a couple of updates I want to mention:

First board meeting

On December 15th 2020 I attended the first board meeting, and although minutes for this one or the October 2020 one are not available yet, I'll try to sum up a little bit. Both myself and Tiffany were presented (again) to the board. We got a quite extensive introduction by Heather, the DA Executive Director, regarding staff updates and current teams and what they do. There was a surprising amount of sales focus on this update, including a special mention to the #DrupalCares fundraising campaign</a> which has been fundamental to the continuity of the organization during the pandemic. The new merge requests and issue forks feature on Drupal.org also was part of the update. This is supported by GitLab and it is one giant step forward for contributions. We also discussed a little bit about the Drupal steward program, a mashup between the Drupal Security Team and the Drupal Association that provides a WAF service and has the aim to explore this area where the DA can facilitate these kinds of services and be less economically dependent of DrupalCon. The program is still very new for definitive conclusions but the update was a positive one. There were other topics on the table such as the Drupal 9 update roadmap for Drupal.org, core initiatives and financials.

Additionally there was a DrupalCon Europe update, which had around 800 participants and some suggestions were mentioned for this year's but it is quite early to know what DrupalCon Europe 2021 is going to look.

I was assigned to two committees, the Community and Governance one, which I am very happy to participate in and then the Finance committee, which I was very reluctant as I don't know if I can add much value there but after two meetings of the committee I am very happy to have been included in those discussions.

Finally, I was able to include a discussion for next board meeting (23rd of February) about the voting eligibility issue. I've prepared a couple of proposals and I hope to give an update next week about next steps.

Community and Governance committee

You can check who's on what committee in this page. Leslie chairs this one and we're discussing quite a bit on how to communicate effectively to the broader community. There's going to be a survey to get suggestions and I will promote it as soon as it is ready.

Since my last update, this committee has met twice (some committees meet monthly), and I think the second one went way better than the first one, I am really looking forward to work more on these initiatives.

One of the main focus of this committee I think is to identify opportunities of early communication regarding the DA programs so information is clearer and more adequate for the larger community.

This committee has discussed regarding the voting eligibility issue and I have been given the opportunity to present some of my ideas and proposals previous to the board meeting.

Interestingly enough, Rachel Lawson brought the topic of community cultivation grants and whether we have the chance to restart the program, which I think if the budget allows, it's an excellent initiative.

Finance committee

This committee meets also monthly and Angie gives a thorough update through the finances, how the year is progressing and things such as audits and reality vs projections. Baddý chairs this committee. As mentioned, I was reluctant about being part of this one, but I think I can give some valuable input despite not being my specialty at all.

Really good news came out of this committee last month. The upcoming DrupalCon was originally set in Boston and it is going to be celebrated online due to the pandemic, the DA was still accountable for cancellation fees with the venue but the staff has been able to get a waiver for that!

I also had the opportunity to meet with the Community Working Group a few weeks ago, they are really nice folk who have a huge impact in our community and the nature of the chair I have in the DA board puts me in a position where I overlook the group and if there's an escalation issue, me and Leslie would be responsible of dealing with that. This is something that has never happened so the less I see this very fine group of people, the better :). We will meet annually for a quick check in.

There was something very interesting to mention, ever since we don't have in person events, they are less busy. I think this is something for us, as in the whole community to reflect on.

For this upcoming meeting, there's a big agenda, but the voting eligibility issue will be in it. I will make my case and hope we can get to a resolution that can bring some closure and sense of reparation to the community.

Anything you want to ask me or if you want to share concerns and comments, please do get in touch with me.

Note: This blog has the comments disabled, please feel free to send me a message through my contact page if you need to discuss anything related to the community and the Drupal Association. You can also tweet at me or find me in Drupal Slack or the distributed matrix network as pcambra.


Feb 19 2021
Feb 19

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.

Feb 19 2021
Feb 19

We had a custom user registration form for use in our Commerce checkout account registration workflow that allows users to register during the checkout process. We wanted to add additional fields to the custom registration form but adding the fields to the standard user entity would not display the fields in our custom form as its fields are all created manually in the custom form.

In Drupal 7 we would use the field_attach_form() function but it is removed in Drupal 8. Below is how we achieved this in Drupal 8/9.

Feb 19 2021
Feb 19

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

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

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

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

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

Previous winners of the award are:

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

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

Nominations closed March 19, 2021.

Feb 19 2021
Feb 19

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

Blue background with light blue arrows, addition sign and light blue drop

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

What is Flutter?

blue arrows on white background with the text flutter

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

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

white graph with blue red and yellow lines mapping the number of questions asked about flutter, xamarin and react yearlySource : Stack Overflow

Why use Flutter?

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


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

Open source

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

Single codebase and Cross Platform

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


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

Integrated Tools

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

Drupal for Mobile App Development

White background with a blue drop

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

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

white graph with red and blue lines mapping drupal's growthSource : BuiltWith

Drupal also has a domineering presence across several industry verticals.

red, blue, yellow pie chart showing the presence of drupal throughout various industriesSource : SimilarTech

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

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

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

Case Study : Drupal with Flutter 

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

The primary agendas were - 

  • Refurbishing an already existing but poorly maintained website.

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

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

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

Processes and solutions -

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

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

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

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

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

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


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

Feb 19 2021
Feb 19

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

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


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

Module's popularity

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


Module's creators

Four developers are responsible for maintaining the module:

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

What is the module used for?

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


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

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

Module's use

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


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

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

Backup sources

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


By default, the sources can be:

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

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

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

Backup destinations

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


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


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

composer require defuse/php-encryption

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

Advanced backup

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

Here’s a quick overview of the options available:

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

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

Backup list

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


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

Backup restoration

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


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


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

Hooks and integrations

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

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

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


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

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

Feb 18 2021
Feb 18

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


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

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


This year’s tickets are all flexible:


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

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

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

Help Us Spread the Word

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

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

Feb 18 2021
Feb 18

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.

Feb 18 2021
Feb 18

Advance the Drupal project and make Drupal 10 a success

DrupalCon North America will incorporate Drupal's strategic goals and contribution opportunities into the main event programming. As part of your DrupalCon experience, you will have the ability to deep dive into a specific initiative or participate in more general conference programming.

As we look forward to the launch of Drupal 10 in 2022, we’re supporting opportunities for all DrupalCon participants—of all levels of experience—to contribute to this next phase of the platform.

Here’s what to expect:

Each day of DrupalCon will begin with a keynote presentation focused on a strategic initiative related to Drupal 10. You’ll learn about each initiative’s goals and see how it will help all of us create even better, more engaging digital experiences.

Throughout each day, you’ll then have the chance to join sessions that will help participants of all professional backgrounds and skill sets learn:

  • How the initiative works
  • How it will enable more exciting digital experiences
  • How to sell those experiences to clients
  • How Drupal community members can contribute to the initiative’s success
In the latter part of each day, you’ll have the option to participate in contribution activities designed for participants with or without technical experience, with support from Drupal leaders and mentors.

If you’re already working on a contribution team, you’ll have the chance to continue your work at DrupalCon and share your experiences and lessons learned with the wider Drupal community via the hashtag #DrupalContribution.</span>

Feb 17 2021
Feb 17

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

The result: a cohesive brand and online presence that enables Lenovo’s commercial customers worldwide to easily explore all of Lenovo’s commercial technology solutions that include workstations, servers, storage solutions, IT management software, smart TVs, tablets, smartphones, and apps.  

The success of this massive consolidation project was due in part to Promet’s development of a component-based, drag-and-drop page-building capability leverages Drupal Paragraphs.

Read more about how we helped Lenovo drive efficiencies with a cohesive global web presence.

Promet also established clear processes for enabling content editors and site managers within multiple markets worldwide to log in and easily update content or add pages. Site updates and revisions that would have otherwise taken a week’s time and required the help of an in-house IT support team or a local agency, can now be completed by non-technical site managers within a few hours. For Lenovo’s global commercial customer base, the consolidated Lenovo Tech Today site has provided the advantage of a consistent brand presence and user experience, along with significant operational efficiencies and massive cost savings.

Commenting on the impact of Lenovo's global website consolidation initiatives and engagement with Promet, Roman Olney, Head of WW Digital Marketing, PCSD Marketing, for Lenovo said,

Over the last few years, Promet has helped us navigate some complex technology needs that have driven significant efficiencies for our global marketing organization. With their support, Tech Today continues to grow and meet the needs of our customers in new and exciting ways.

Interested in consultation and support in managing complexities, while improving user experience? Let us know how we can help!

Feb 17 2021
Feb 17

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.

Feb 17 2021
Feb 17

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

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

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

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

The World of Drupal 9 Updates

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

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

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

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

Except for that one line.

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

The Catch-22

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

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

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

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

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

Improved Code Collaboration Workflows

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

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

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

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

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

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

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

Putting it All Together

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

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

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

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

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

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

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

But it Didn't Work?

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

  No valid composer.json was found in any branch or tag of [email protected]:issue/commerce_migrate-3150733.git, could not load a package from it.

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

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

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

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

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

That Was a Lot of Words, Do You Have a Picture?

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

[embedded content]

Feb 16 2021
Feb 16

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

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

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

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

What changed over the years?

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

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

A bar graph shows the global monthly data consumption on various smart devices .Source: Deloitte.com

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

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

A circular diagram is showing the four waves witnessed by the media and publishing industry.The four waves of the media and publishing industry. Source: Weforum.org

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

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

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

Revenue statistics for digital media and publishing industry are shown in the US.Source: Statista 

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

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

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

Ease of publishing 

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

Friendliness towards the search engines

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

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

Amiability to social media 

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

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

Responsiveness of design

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

Warmth of personalised experiences

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

Why is Drupal great for the media and publishing industry?

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

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

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

Drupal eases content management and distribution 

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

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

Drupal eases the mobile transition 

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

Drupal eases multilingualism

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

Drupal eases profits and lessens costs  

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

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

Drupal eases the security concerns   

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

There is a pie chart depicting the percentage of security issues in various CMSs, Drupal being one of least of them all.Percentage of security issues in a sample group. Source: Acunetix

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

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

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

Men's Health 

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

Read the complete case study of Men’s health to know more.

Earth Journalism 

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

Here is the detailed case study of Earth Journalism Network.

Farm Journal 

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

To know about everything that went on in the Farm Journal project, read this case study


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

Take a look at the AgWeb case study to understand the project better.  

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


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

Feb 16 2021
Feb 16

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

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

Content Moderation

What can you do with the Drupal Content Moderation Module?

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

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

Implementing the Content Moderation Module

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

Content Moderation

Enabling the Content Moderation Module

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

Default Workflow

Editing the default Workflow

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

Adding a New State

Adding a new state - Needs Work

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

Adding a New Transition

Adding a new Transition

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

Custom Block Types            Content Types

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

Track it with Content Revisions

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

Content Revisions

Content Revisions

Access Control with Permissions

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

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

Feb 16 2021
Feb 16
Drupal 8 will be released on November 19 | Wunderkraut


We're ready to celebrate and build (even more) amazing Drupal 8 websites. 
On November 19 we'll put our Drupal 8 websites in the spotlight...be sure to come back and check out our website.


Michèle Weisz


Want to know more?

Contact us today

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

© 2015 Wunderkraut Benelux

Feb 15 2021
Feb 15

You Might Also Like

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

This wave pattern is common, and you can see so many instances of it. There’s the Dunning-Kruger Curve, where you swing from the peak of Mount Stupid to the Valley of Despair when you learn a new skill. There’s the Economic Life Cycle of Boom, Bust, and Recovery that our economy grinds through over and over and over. There are the relentless cycles of high tide and low tide, and of course, the actual, endless waves of the ocean. The pattern is common because that’s the way nature and humans operate.

The Digital Destruction Wave

Let’s take a hypothetical, but pretty typical, example. Acme Corporation has a popular website that’s been in operation for nearly 10 years. They have hundreds of pages of content and thousands of images and a small editorial team that is increasingly frustrated with the work it takes to create new content. They’re using an old CMS, and they’ve seen others that appear to have nicer features. Their site looks tired anyway, and they’re ready for something new.

There’s enthusiasm for the idea of starting over.  When comparing something they know intimately (with all its problems) to alternative solutions, Acme relies on demos and salespeople and marketing information that highlight the best features of the new solutions and mention little, if anything, about their limitations. 

Acme stakeholders settle on a new solution. Everyone is optimistic and very ready to get rid of the current CMS. They tackle the months-long process of designing the new solution, building it out, and populating it with all the old content, and they finally launch it.

But after launch, cracks start to emerge. Editors find that some things are harder to do than they anticipated, and some things that used to work just fine now require compromises.  Some things are easier to do, but others are harder. Editors want to be able to do “anything,” but the new implementation focused on the need for simplicity, consistency, and stability by limiting editorial options. Political realities within the organization rather than the site's actual needs drove other decisions that further complicated the solution. 

The list of requested changes and improvements grows as users and stakeholders actually use the site and realize they need more features or a different experience. Every new requirement complicates the UX and UI, adds hundreds of lines of new code, and increases the frustration. Sooner or later, the new solution is weighed down with just as many problems as the original. And the next wave of digital destruction begins as everyone wonders whether there is some other, better solution out there.

Building for the Long Term

Lullabot primarily builds Drupal sites, sometimes monolithic stacks where Drupal delivers the entire digital experience, sometimes decoupled sites with a Drupal back end and React (or something similar) on the front end.  And every year, we see this relentless wave pattern of clients reworking their digital properties in a quest for better digital experience and content management tools. Sometimes they’re coming from another CMS hoping that Drupal will finally solve their problems. Other times they have a Drupal site that has become bloated and inefficient, and they’re looking for a new solution.

Destroying everything and starting over every few years is enormously expensive and disruptive. 

But is it inevitable?

Below are three reasons why organizations get disillusioned with Drupal, each with ways to combat the problem.

No Priorities - Everything for Everyone

One of the main reasons organizations get disillusioned with Drupal is not unique to Drupal. It has to do with a lack of clearly defined goals.

Either they cannot articulate those goals in a meaningful way, or there are so many competing goals that there is a resistance to prioritizing. Prioritizing means agreeing on precise definitions. It means being locked in on specific directions and making some tradeoffs.

It means giving up on some grand panacea of building something that is everything for everyone. Many organizations do not want to give up on this vision. But that vision is never realistic. Trying to reach for that vision will mean disappointing everyone. You cannot say “yes” to everything.

In our experience, defining and prioritizing goals is the big problem to solve when implementing a new CMS. Failing to solve this problem upfront results in failure. Period. Though you might not realize the failure until more cracks have started to appear. Like playing against a Chess grandmaster when you are a novice, you lost after the first move, even though the game wasn’t technically over for another 27 turns.

And this type of failure has nothing to do with Drupal.

For example, the marketing team’s goal might be to shrink the bounce rate and increase time on the website. That is what “success” is to them. But the sales team keeps hearing complaints from their prospective customers that spending so much time on the website before speaking to a human was frustrating.

This type of mismatch is a recipe for disillusionment, no matter what technology you choose to use.

How do you avoid this problem?

Solving this problem begins long before the project kickoff. In some cases, it starts before you even know you need the help of an outside vendor.

You must have the organizational governance to be able to make decisions and enforce those decisions. All stakeholders must feel as though they are heard. There must be clear and open communication and the ability to have difficult conversations.

Sometimes an outside party, like Lullabot, can help you have these conversations. An outside voice can cut through some of the noise and tease out information from shy stakeholders hesitant to speak up. The sooner you uncover potential mismatches and risks, the better off you will be when deciding priorities.

This can feel like an extended phase one. This is foundational work that sometimes has to do with your organization’s very identity. Why do you exist? Who are you serving? What does success look like overall? What does success look like for each department? Do they conflict? Why? What is most important?

Only after you can answer these questions should you move on to additional details. Presentation modeling workshops and other requirements gathering exercises will run so much smoother, and as a result, your new CMS has a higher chance of lasting for a long time.

Drupal is a Framework, Not a Product

Drupal is flexible, and that has been touted as one of its strengths. And it is a strength. You can do a lot with Drupal that you can’t do with other enterprise content management systems. It has a wide breadth, where it can be used for things beyond landing pages, such as blogs, event systems, listing pages, contact forms, CRMs, e-commerce, and more.

But do enterprise content management systems really need that type of breadth? In the age of micro-services, a CMS product can do a few things really, really well and then integrate with other services to fill in the gaps. Most modern enterprise CMSes are polished products geared toward solving a limited set of problems.

Drupal can also integrate with other services, but if you ask what problems Drupal is designed to solve, you will get different answers depending on who you ask and what day of the week you ask them.

A Lack of Polish

Drupal has no set of polished functionality that is highly targeted to solve a limited set of problems. It is not a product. It is a framework.

Drupal’s structured content capabilities are first class, rival many enterprise systems, and are better than any other free tool you will find on the market…but this advantage will not be visible to most stakeholders. A marketing team that wants to spin out beautiful-looking landing pages cares about certain success metrics, and the elegance of the underlying content model probably isn’t one of them.

To make up for this lack of initial focus, Drupal requires significant investment if you want to use it for a big project. This is offset a little by having no licensing fees to pay (which, for some enterprise CMSs, can run into the millions of dollars per year). This type of customization and investment comes with its own risks, like missed timelines and blown budgets.

The lack of constraints and limitations also means that other products will almost always have a more polished editorial experience. With Drupal, you often have to settle with “good enough,” and, outside of some core features, polished functionality is rare. Or at least, the cost of that final 10% of polish is both time and cost-prohibitive.

This can all contribute to disillusionment, especially if expectations have not been set correctly. The grass will look greener on the other side. The spit and polish of a product demo can be alluring, especially when that demo doesn’t have to contend with your organization's underlying complexities and competing priorities.

Flexibility: Strength and Weakness

Because it is a flexible framework, Drupal is also complex. It is a set of tools that can be used in many different ways. The problem is that a screwdriver is not opinionated in how you use it. It will totally let you swing it and use it as a hammer. Sometimes, it might even work as a hammer.

Many Drupal installations end up looking like they were built by using screwdrivers as hammers. They work. Barely. But the lack of craftsmanship shows, making the system fragile and difficult to work on. Any attempts to change certain parts can cause everything to collapse.

When customized for mission-critical functionality, serving hundreds of editors across different internal teams, Drupal implementations require deep expertise. If this expertise is not present, you run the risk of building a brittle codebase that is hard to maintain and hard to extend. An extensible, flexible framework that becomes rigid and fragile is a perfect recipe for disillusionment.

How do you avoid these problems?

You need to be unrelentingly honest. You need to be clear about your goals and priorities (as discussed above), and you need to measure any polished functionality against those goals and priorities. It can be tempting to fall for the siren song of slick interfaces and smooth aesthetics.  But maintain clear eyes on what is important and impactful.

A new product may be what you need. A completely revamped editorial experience may be what you need.

But are you sure? Is the need more than skin deep?

Some other ways to ensure your Drupal implementation lasts for the long-term:

  • Have deep expertise. If you are trying to implement Drupal at scale, where it is mission-critical to your business, you need true Drupal experts. Not just PHP experts or Symfony experts. Drupal experts. If you can’t have them on your staff, you need to hire one of the top Drupal agencies (like Lullabot). You also need an architect with Drupal expertise who has the ability to see the big picture and can help be a bridge between your organization’s domain expertise and its technical implementation in Drupal.
  • Do not expect the slick editorial experience of a focused, polished product. Instead, you should manage expectations and keep the focus on what is actually important. Under the proper care, Drupal can provide you with an editorial experience that matches your business needs, but you need to reserve your budget for things that actually matter. Understand what makes for a good editorial experience, and Drupal will hold up very well when measured against that standard. Just don’t expect it to fly you to the moon. A pick-up truck doesn’t need the best stereo system in the world to do what it does best.
  • Make sure you need the flexibility of Drupal. You need to ask if Drupal is really suitable for your organization. Drupal’s strength is in its flexibility. That means, to really get gains versus other systems, Drupal needs to be used for situations that have unique needs and require extensive customization. Do you have multiple audiences seeking out content in multiple formats? Are you a large organization with various departments, each with its own editorial team, and need to maintain both consistency and flexibility?

Growth, Maintenance, and Technical Debt

This spins out of the previous section on Drupal being a flexible framework. These problems are not unique to Drupal, but because of Drupal’s unique strengths, these problems can manifest in unique ways.

Each installation has its quirks. Each implementation will make different decisions that map better to an organization’s needs.

This can lead to frustration in the future. Even if Drupal has been deployed in an expert fashion, problems will start to sprout. Organizations are not static, and the software that serves them cannot remain static.

Teams roll off, and new teams roll on. Turnover can cause gaps in knowledge. As new features are added, the potential for performance problems increases. Forms get longer and longer and more cluttered. Technical debt attaches to projects like barnacles on a ship. Drupal, and the many dependencies it relies on, must be updated and maintained.

Since Drupal isn’t opinionated, similar functionality can be implemented in many different ways. Different teams have different styles, and these styles can start to clash if there is no proper continuity plan. This leads to less code reuse and a breakdown in the overall organization.

All of these things can start to cascade like a slow-moving avalanche, eventually ending the honeymoon period of a successful launch and leaving a wide swath of disillusionment in its wake. 

How do you avoid these problems?

  • Maintain continuity after team roll-offs. This can come in many forms. Good documentation is always encouraged, though that requires effort on its own, and it requires the next team to care about it. It is better to focus on people. You can have at least one developer overlap both teams, and they work to continue the same standards. Or you can have the same company pick up support and maintenance for the project. The concept of “office hours” can work. These are set times when members of the new team work with some members of the old team who helped launch the project.
  • Be explicit when mapping business logic. Settling on a ubiquitous language and modeling that language with classes in your code can limit technical debt and make future maintenance smoother. Using something like Typed Entities to help keep your custom business logic separate can make it easier for new team members to jump in. These build fences around how developers extend Drupal, which leads to more explicit expectations and reigns in some of the disadvantages of Drupal’s radical flexibility.
  • Maintain a clear view of your priorities. Managing your priorities doesn’t stop after the project launch. This takes us back to the very beginning. Your organizational governance must hold the line. New features must be filtered. New priorities and requirements must be surfaced in an organized manner. Unregulated growth is not good for any organism, and it remains true for your CMS implementation.

Conclusion: Noble Retirement

Your CMS investment can last a long time. And now, with Drupal’s new major releases not requiring migrations, your investment should last a long time. You don’t need to be subject to the waves of disillusionment and destruction.

Your investment won’t last forever. But it should last long enough for you to retire it on your own terms, long after you have seen an ROI. Send it off into the sunset with full honors, knowing that it did its duty and served you well.

Early destruction and re-creation are not inevitable. Manage your priorities, set reasonable expectations, ensure you have deep expertise at your disposal, and maintain continuity and consistency. These are easier said than done, but they can be done. Instead of being beaten down by the heavy waves of destruction, you can surf them with grace.

Contributed to by Karen Stevenson, Greg Dunlap, Mike Herchel, Mateu Aguiló Bosch, Chris Albrecht, Nate Lampton, Sean Lange, Marcos Cano, Monica Flores

Feb 15 2021
Feb 15

Last February, we wrote up a draft for an article about employee experience at our company. We wrote in-depth about all the awesome team activities we have and how we’ve opened several offices across the country to facilitate commuting for all employees and help them have a great work-life balance.

Then just as we were about to publish it, the Covid epidemic hit Europe and lockdowns ensued in March. We thought, ok, we’ll shelve it until April, when this whole thing blows over, and publish it then with a minor nod to the remote working adventure.

Yeah, right! Looking back, it’s almost crazy to see how optimistic we were. Even if the pandemic were over in a matter of months, it would have still left long-lasting and significant consequences to employee experience.

With 2021 promising the beginning of a transition into the so-called “new normal”, we thought this would be the perfect opportunity to revisit our article on employee experience. But we’ve come up with a twist: instead of giving a more general overview, we’ll focus on the major changes to EE in 2020 and our key takeaways from all this.

So, this article will take a look at 8 employee experience lessons that we learned from 2020 and that we believe will help us have an even stronger foundation for a post-Covid future. 

To better illustrate the changes and the lesson, we’ll compare each one with how we used to do things pre-2020 to determine what we were doing right already and what we managed to improve now.

1. Flexibility in work schedules

If you already understood the importance of flexibility before Covid, then you’re definitely prioritizing it now, in a period where almost everyone is working from home, many having to balance kids and their being homeschooled, as well as potentially taking care of loved ones with a higher risk from COVID-19.

Flexibility has been a long-time key value at Agiledrop. Of course we’ve stuck to a loose schedule, in order to enable collaboration and facilitate communication with clients, but we’ve always done our best to accommodate both early birds as well as night owls.

We’ve also always been very understanding with regards to employees’ personal obligations that take place during the workday; it’s always possible to take care of certain tasks later in the day to make room for everything.

So, in this regard, not much has changed with Covid: we still keep the same flexible schedules, without rigid demands as to when something should be worked on, as long as we guarantee timely delivery and good communication (even if asynchronous).

2. Work-life balance

A key factor of a good work-life balance is flexibility, which we’ve just discussed. This includes the ability to grant time off to employees when they need it, something which has become even more relevant in a health crisis such as the pandemic. 

With major restrictions to all aspects of our lives, even something as simple as going grocery shopping or having a health checkup now requires much more scheduling and typically also significantly more time.

On the flipside, it’s also important not to overwork oneself - but this can happen much faster when you’re working from home and aren’t allowed to go outside. 

At Agiledrop, we’ve always made it a point of never requiring employees to do overtime without prior arrangement. Furthermore, we’ve always made sure that any overtime which is necessary is adequately compensated.

We believe this has helped cultivate a mindset that makes employees value the work they do, but without making them feel like they should be working around the clock. A good work-life balance has been a key value since the inception of Agiledrop and we believe we’ve managed to tame both extremes during the pandemic.

Home office with Netflix

3. Empathy

Being able to put oneself in someone else’s shoes has always been important to good relationships with people and in the workplace, but 2020 has now really accentuated the importance of empathy.

While some were much more impacted by the lockdown than others, it has had at least somewhat of an impact on every one of us. This made empathy more important, but also easier - with everyone knowing that others are going through the same thing, it was much easier to get through the uncertainty of the first few months.

Indeed, empathy is a key ingredient of the employee experience in times of Covid. It has allowed us to adjust our expectations, with regards to both ourselves and others, and not take everything for granted, but instead appreciate each other even more.

At Agiledrop, we’ve always been proponents of empathy, but last year added an additional dimension to this and now empathy is an integral part of our day-to-day interactions, and a cornerstone of our company culture.

4. Digitally enabled

2020 was really the year of large-scale digital transformation. It suddenly became essential for traditional businesses to have a digital presence, while more digitally mature ones were able to take even greater advantage of the plethora of available digital tools.

Not only was this digitalization a necessity for digital customer experience, it was also a huge boon to the employee experience. Efficient remote working is near impossible without a properly enabled digital workspace, and so even the less technically savvy have been empowered to adopt digital means of communication.

As we were already used to remote collaboration at Agiledrop, the transition to fully remote and digital did not represent a drastic change for us. In fact, we took the opportunity to fully leverage digital to streamline the experience of all our employees.

We’ve really started seeing digital as a means to continuous improvement. With the help of capable front-end technologies, we made significant improvements to our internal dashboard, which now provides employees with easy access to time tracking, skills reviewing, holiday management and many more useful features.

5. Connection & collaboration

One major thing that we and likely countless others have noticed is the power of meaningful connection in times like these, especially with remote work and (potentially severe) Covid restrictions. 

Like many others, we introduced more video communications, in our case in the form of daily online coffee breaks, very early on into the lockdowns last March. Although we’re typically very keen on in-person collaboration, we were able to make a seamless transition into digital channels and keep that same in-office vibe.

But, while virtual team activities were fun, we were really excited about in-person activities when we were able to return to the office for a few months in the summer. Taking all the necessary precautions, we were even able to carry out our annual picnic, which was all the more a blast considering the isolation from months prior.

This has really shown that, even in a distributed future (more on that in a moment), people greatly cherish these team get-togethers, and not even everyone working remotely has been able to diminish our team spirit.

Agiledrop Lj office post-lockdown pizza

6. Distributed work

Another big trend that’s pretty much ubiquitous across the industry is that a return to normal will feature a prevalence of “distributed work”, that is, a combination of remote and on-site work.

To us, this also seems like the most logical outcome. As we just said under the previous point, people really value in-person interactions at the office or at a teambuilding - but, now that it’s been proven how effective remote working really is, there’s no going back to fully on-site work.

We made appropriate changes at Agiledrop. As soon as we were able to return to the offices, we gave every employee the choice of going fully remote (including new hires, once they finish initial onboarding). In addition, we upped the number of our “no questions asked” remote work policy for on-site staff from 2 to 5 days per month.

Both of these actions have been a massive improvement to the employee experience, giving employees more freedom and flexibility, and thus underlining the effectiveness of a distributed approach long before most businesses have even implemented it.

7. Recognition

You probably remember a time when you received meaningful recognition at work - so you probably also remember how good that made you feel and how much more motivated you were afterwards.

If getting recognition is so powerful even with everything going on as usual, just imagine how much more valuable it gets during a disruption, when general anxiety and confusion reign even among the most optimistic individuals.

Giving praise and recognition is an important part of Agiledrop’s company culture; management and leadership achieve a great balance between private and public recognition, with a significant chunk of our monthly meetings dedicated to thanking employees who have outdone themselves in the past month.

We’ve also always encouraged giving recognition among employees, and we took that up a notch in 2020. We introduced a Slack bot for giving praise, called AgileKarma, with small quarterly prizes for the top ranked employees, which strongly promotes helping others.

8. Streamlined onboarding process

A final lesson that we learned, which is perhaps less intuitive, is the importance of a great onboarding experience, in particular when someone joins the team during a crisis and can’t have that initial in-person experience.

While we halted hiring during the months of lockdowns, there were a few potential employees with whom we had been talking prior to the Covid outbreak, and a few joined our team just as the pandemic was in full swing and meeting in-person was impossible.

This meant that we had to do our best to provide them with an experience that was as close to what they would get had it not been for the crisis. Our development managers tried to focus even more on helping newcomers, as much as client projects could allow it, and we plan on finding more development managers in 2021.

In addition, we’ve introduced huge improvements to our onboarding processes, which now include a broader range of technologies, plus more specific tasks for both front-end and back-end developers. And we’re constantly improving everything, adding more technologies and resources to ease onboarding as much as possible.


With all this in mind, the number one employee experience lesson that we learned in 2020 was that we’ve basically been doing things right from the very beginning. None of the improvements which we introduced last year were complete novelties; all had basis in existing processes and/or values.

Of course, we’ll still put everything we learned to good use and keep ensuring a great experience for each employee. We know that even a crisis such as Covid can’t break our team spirit, and we know that we’ll be happy to return to the offices and have more in-person experiences as soon as circumstances allow it.

We hope this article has given you some insight on how you can streamline your employee experience for a post-Covid era. If you happen to be looking for a development partner that truly prioritizes the employee experience, drop us a line and we’ll be happy to help you out.

Feb 12 2021
Feb 12

When publishing a form on your website, you must be aware that sooner or later spambots will find it. It is one of the biggest scourges of the modern Internet. The Captcha module will protect you against such situations.

Further down the article, I will present the instructions for using the module and its potential possibilities. This is essential knowledge that we use in practice as part of the Drupal development services provided by Droptica.


The first version of the module was released in May 2005 for Drupal 4. Developing the version for Drupal 8 took many years. The first try-outs took place in 2013, but the première of a stable version took place only at the beginning of 2020.

Module’s popularity

Captcha is a popular and appreciated module. According to official statistics, it is used by almost 300,000 Drupal-based websites. The latest version from the 8.x-1.x branch is installed on 80,000 websites. The module’s popularity is gradually decreasing – probably due to the transition to other, more modern solutions.


Module’s creators

The Captcha module has five maintainers; they are Jakob Perry (Acquia and Lanfest), Fabiano Sant’Ana (Chuva Inc.), Lachlan Ennis (Expert1 Pty Ltd), Naveen Valecha (Acquia) and Andrii Podanenko (Open Y and ITCare). They are all very active and valuable members of the Drupal community. The official sponsor of the module is the Chuva Inc. company. The code repository consists of 606 commits by almost 120 users.

What is the module used for?

The Captcha module is used to protect forms against spam; it helps you ensure that the website’s visitor is not an Internet robot. There are many ways to check the user’s authenticity (such as reCaptcha) – they are delivered as dependent modules. By default, you can use a simple math challenge that will lock the form if the person completing it fails to add two numbers.


You can download the Captcha module at https://www.drupal.org/project/captcha.

After enabling the Drupal module, the only necessary step is to select the forms you want to cover by protection. Go to the module settings by selecting “Configuration → People → CAPTCHA module settings“ and select the “Form settings” tab. Find your form there and enable it by clicking on the “Enable” button.

CAPTCHA - list

If the form is not on the list, add it by clicking the “Add captcha point” button and enter form_id. The effect of the module for the user login form looks like this:

CAPTCHA - form

Module’s use

The Captcha module has several advanced settings that allow you to customise the protection of your websites better. The most important ones are:

  • Default challenge type - the ability to choose the type of a “trap”, by default it is a mathematical operation. External modules provide other types.
  • Default challenge on non-listed forms - a radical solution that enables protection for all forms that are not listed in the “Form settings” list.
  • Add CAPTCHA administration links to forms - a very useful option that allows you to manage the type of security directly from the given form. It saves a lot of time on complicated websites.
  • CAPTCHA placement caching - cache clearing, useful in the case of problems with forms.
  • Add a description to the CAPTCHA - adding a description explaining why the user needs to prove that they are not a bot.
  • Case sensitive/insensitive validation - determining whether there will be a distinction between uppercase and lowercase letters in solving the “puzzle” presented to the user.
  • Persistence - the ability to disable protection in certain special cases, e.g., when the user has previously confirmed their authenticity.

Hooks and integrations

Captcha provides two hooks to integrate Drupal modules that verify users. These are:

  • hook_captcha() - the main hook used to define your own submodules; it has a structure known from Drupal 7 (it transmits the $op variable containing the type of the currently performed operation).
  • hook_captcha_placement_map() - optional hook specifying the place in the form that should be modified.

This is where the real power of the module lies. At drupal.org, you can find a number of projects that implement various verification methods:

  • reCAPTCHA - to support the most popular verification services available, provided by Google.
  • Image CAPTCHA refresh - this module is an integral part of Captcha for Drupal 8; for Drupal 7 it functions as a separate project. It introduces a widget with an image from which one has to rewrite a text.
  • CAPTCHA Pack (alpha version only) - a collection of very interesting “traps” for bots, including completing a missing letter or word in a sentence.
  • Text CAPTCHA (Drupal 7 only) - integration with the textcaptcha.com website.
  • Captcha Riddler - allows you to define your own set of puzzles for the user.
  • Hidden CAPTCHA (Drupal 7 only) - cheats bots by inserting an invisible field that blocks the form from being sent.
  • CAPTCHA after (Drupal 7 only) - only runs Captcha after the user has submitted the form multiple times.
  • KeyCAPTCHA (Drupal 7 only) - integration with the keycaptcha.com website.
  • Draggable CAPTCHA (Drupal 7 only) - a drag & drop puzzle, no dependence on external websites.


The main arguments behind the module are the effectiveness and simplicity of implementation. It is perfect for fighting against Internet spammers.

We also use it in our Drupal agency as a tool that fits every form and does not require additional coding.

Feb 11 2021
Feb 11

The past 12 months have presented lots of opportunities for looking at life and work through a different lens. Many of us have gained a newfound gratitude for the people, perspectives, and technologies that have sparked new possibilities and powered us through.

Love is in the air as Valentine's Day approaches and here at Promet Source, we thought we'd take this opportunity to share an inside look at some of new inspiration, developments, and tools that we've come to love lately. 

1. Haben: The Deafblind Women Who Conquered Harvard Law

Denise Erazmus, Accessibility Specialist

This is the memoir by Haben Girma, who is the first deafblind student to graduate from Harvard Law.

So much of what we focus on as web accessibility specialists is empathizing with differently abled people in order to understand how they consume content. This book gave me even more insight into that experience by showing a picture of a girl born deaf, who goes through the process of losing her sight, but not her drive to succeed.  The memoir also helped to further raise my awareness of what members of the disabled community can accomplish, which I believe is absolutely anything.

Haben: The Deafblind Woman Who Conquered Harvard Law book cover

2. The New, Accessible White House Website

Peter Ross, Senior UI/UX Designer

I love all of the design and accessibility features of the new whitehouse.gov. I also love that a Spanish-language version has been reinstated into the WordPress CMS. The layout is clean and reads much more like a news site. 

Whitehouse.gov screenshotA screenshot from the newly designed whitehouse.gov site


3. CrossFit. Definitely CrossFit

Andrew Kucharski, President

I love CrossFit because it kicks my butt. It sharpens my focus for all aspects of my life and it has moved me beyond wellness into fitness. Plus: I get the self satisfaction of being disciplined enough to stay at it. Every. Single. Day.

Andrew Kucharski at CrossFitAndrew Kucharski, President of Promet Source and a serious CrossFit devotee

4. Dual Monitors!

Chris O'Donnell, Digital Strategist

I love dual monitors. I have no idea how I worked with a single monitor for most of my life. I'm planning to get a KVM switch so I can share my second monitor with my Linux PC and have two monitors on my personal set-up too.

Chris O'DonnellChris O'Donnell at his desk with two monitors going strong


5. The Snapchat Filter for Zoom

Chris Sensat, Graphic Designer

I love the Snapchat filter for Zoom. Remote meetings can take on a whole new life when there's the option of showing up for a moment or two from the beach, as a bandit, or as an alien, or with a cat on your head.

Snap Chat during a Zoom Call

6. Provus

Aaron Couch, Director of Technology Solutions

We're just getting started, and I love all of the new possibilities that Promet's Open Source, drag-and-drop page building solution is creating. Provus is giving marketers and content editors the keys to take ownership of their websites with the ability to easily build pages, revise page designs, and a lot more. 

Provus banner


7. LastPass 

Patti Cardiff, Director of Support Services 

I love LastPass! I have a zillion client passwords to keep up with. LastPass makes my processes much, much faster!

last pass logo

8. The Drupal Community!

Danita Bowman, Drupal Trainer

Until you are actually a participating member, it's hard to realize how awesome the Drupal community is and how much there is to love -- the support, the inclusivity, the way this amazing worldwide team is committed to helping each other, and the continuous contributions to making Drupal a better CMS for all. 

DrupalCon 2019 SeattleGroup shot from DrupalCon 2019 in Seattle


9. Sketch for Teams

Mic Seaton, Senior UI/UX Designer

Sketch for Teams allows for amazing new possibilities that includes seamlessly sharing designs with stakeholders, sharing feedback within the team, prototyping previews for user testing and research, and staying organized!

Sketch for teams


10. Google Data Studio

Ishmael Fusilero, Digital Marketing Analyst

I love the depth and breadth of intelligence that's available from Data Studio.  We leverage Data Studio internally, and the tool also helps us to offer our SEO and analytics clients highly precise levels of insights and recommendations. 

Data studio screen shot

At Promet Source, we're a diverse team of experts with passions that run deep and wide. What unites us is our enthusiasm for igniting new digital possibilities for our clients. Let us know what we can do for you!

Feb 11 2021
Feb 11

Last week one of our clients was asking me about how they should think about the myriad of options for website hosting, and it inspired me to share a few thoughts. 

The different kinds of hosting

I think about hosting for WordPress and Drupal websites as falling into one of three groups. We’re going to compare the options using an example of a fairly common size of website — one with traffic (as reported by Google Analytics) in the range of 50,000–100,000 visitors per month. Adjust accordingly for your situation. 

  • “Low cost/low frills” hosting — Inexpensive website hosting would cost in the range of $50–$1,000/yr for a site with our example amount of traffic. Examples of lower cost hosts include GoDaddy, Bluehost, etc.  Though inexpensive, these kinds of hosts have none of the infrastructure that’s needed to do ongoing web development in a safe/controlled way such as the ability to spin up a copy of the website at the click of a button, make a change, get approval from stakeholders, then deploy to the live site. Also, if you get a traffic spike, you will likely see much slower page loads. 
  • “Unmanaged”, “Bare metal”, or “DIY” hosting — Our example website will likely cost in the range of $500–$2,500/yr. Examples of this type of hosting include: AWS, Rackspace, etc. or just a computer in your closet. Here you get a server, but that’s it. You have to set up all the software, put security measures in place, and set up the workflow so that you can get stuff done. Then it’s your responsibility to keep that all maintained year over year, perhaps even to install and maintain firewalls for security purposes. 
  • “Serverless” hosting¹ It’s not that there aren’t servers, they’re just transparent to you. Our example website would likely cost in the range of $2500–5000/yr. Examples of this kind of hosting: Pantheon, WP Engine, Acquia, Platform.sh. These hosts are very specialized for WordPress and/or Drupal websites. You just plug in your code and database, and you’re off. Because they’re highly specialized, they have all the security/performance/workflow/operations in place that 90% of Drupal/WordPress websites need.

How to decide?

I recommend two guiding principles when it comes to these kinds of decisions:

  1. The cost of services (like hosting) are much cheaper than the cost of people. Whether that’s the time that your staff is spending maintaining a server, or if you’re working with an agency like Advomatic, then your monthly subscription with us. Maybe even 10x.  So saving $1,000/yr on hosting is only worth it if it costs less than a handful of hours per year of someone’s time. 
  2. Prioritize putting as much of your budget towards advancing your organization’s mission as possible. If two options have a similar cost, we should go with the option that will burn fewer brain cells doing “maintenance” and other manual tasks, and instead choose the option where we can spend more of our time thinking strategically and advancing the mission.

This means that you should probably disregard the “unmanaged/bare/DIY” group. Whoever manages the site will spend too much time running security updates, and doing other maintenance and monitoring tasks. 

We also encourage you to disregard the “low cost” group. Your team will waste too much time tripping over the limitations, and cleaning up mistakes that could be prevented on a more robust platform.

So that leaves the “serverless” group. With these, you’ll get the tools that will help streamline every change made to your website. Many of the rote tasks are also taken care of as part of the package. 

Doing vs. Thinking

It’s easy to get caught up in doing stuff. And it’s easy to make little decisions over time that mean you spend all your days just trying to keep up with the doing. The decision that you make about hosting is one way that you can get things back on track to be more focused on the strategy of how to make your website better. 

¹ The more technical members of the audience will know that “serverless” is technically a bit different.  You’d instead call this “platform-as-a-service” or “infrastructure-as-a-service”. But we said we’d avoid buzzwords.

Feb 11 2021
Feb 11

In our recent webinar, we set out to help higher ed marketing teams rethink their digital focus for the year ahead. 

We tapped a group of experts with years of experience helping some of the best-known colleges and universities deliver engaging digital experiences to discuss key web strategy takeaways. Members of the expert panel included:

  • Muzel Chen - Senior Digital Strategist, Mediacurrent 
  • Diane Kulseth - Senior SEO Consultant, Siteimprove 
  • Steve Persch - Technical Product Marketing Manager, Pantheon

If you missed our webinar or want to watch it again, check out the full recording: 

[embedded content]

The live audience came ready with their most pressing questions on topics from personalization and SEO best practices to harnessing analytics and breaking down the communication barriers between Marketing and Admission departments. Below is a summary of what was discussed on the webinar. 


Is personalization dead?

Diane Kulseth: I've seen some higher education institutions using personalization effectively by auto-populating forms. That can be really helpful to keep things seamless for the experience for the student. At the same time, we're talking to a generation that's getting more and more skeptical of the internet. 

There's a misconception that adopting new technology will automatically save you time. Technology, like personalization, can save you a lot of time but it will also take time to implement correctly.

Steve Persch: Technology buying decisions are often made on the assumption that by buying a tool, you will get to spend less time doing a certain task. I think a similar motivation leads a lot of people to buy personalization. They think getting a more powerful measuring tool will fix their problem, but it actually gives you more to measure and requires more of your time.

Muzel Chen: There’s also the issue of how do we use personalization effectively? Students want to get information right away and personalization can reduce these obstacles in navigation and process.

Personalization can mean many things, but in the context of higher ed, we can personalize content for an audience based on their common demographics and behaviors. But it also depends on your medium: are you trying to personalize in social media? Website? Email? Text message? Audiences have different expectations from each marketing channel, which is predicated by the amount of PII (Personally Identifiable Information) they have disclosed to those channels. 

Depending on the context and level of personalization, they can range from convenient to creepy, and striking that right balance can be tricky. But when it works, visitors experience a higher level of engagement because of the convenience and they feel the institution cares about them.

SEO Best Practices for Subsites and Domains 

When thinking about a redesign, I know websites should have ONE main goal, but how do you handle a few different audiences without creating microsites? For example, prospective vs. current students?

Muzel Chen: Some of these issues are mitigated by dedicating an area in your architecture for those specific audiences. But there are situations where it feels the content is servicing all audiences or only one exclusively. These situations typically result in microsites which can be difficult to manage. 

An easy way to address those needs is to start with an audience-neutral page, have the audience self-identify, and place those audience-specific pages at a deeper level. For example, common pages where this occurs are: campus living, parking permits, and health services. These top-level pages will have content that speaks to all audiences and grows in detail as the visitor goes deeper into your site. The details can then begin to diverge by audience type. 

Do you see any trend of separate sites vs. subsites for academic departments (or other smaller units) within a university or college?

Muzel Chen: Over the last decade, it's been very common for higher ed to have subdomains (separate sites) for each individual department or school. But, these sites grow out of hand and become difficult to manage especially when there's not any established governance for tracking content updates across all of the subdomains. 

More institutions are starting to transition to the subfolder (or subsite) practice. It’s easier to see the big picture of all your sites and manage them all within their content management system. 

How can one build a culture of importance for SEO across a decentralized organization (i.e., schools, departments, and offices, like Admissions, all run their own websites)?

Diane Kulseth: I think the biggest part is tying it back to what it all means. Whether it's donor relations, increased revenue for the university, or admissions, tie it back to their goals. That's first and foremost and all of that helps the website and it helps your students. It helps your donors. It helps your prospective parents of students to be able to better navigate the website. 

SEO is great for SEO's sake and building great traffic, but it's also really helpful for all your other marketing initiatives to make sure that people are able to get where they want to go on a seamless web experience that loads properly and is easy to navigate with strong information architecture. 

Marketing Strategy and Analytics 

What are some of the challenges you've seen higher ed leaders face when implementing marketing technology?

Muzel Chen: Reporting. I often see data collection tools being misconfigured. Or collecting lots of data without really defining its purpose. Everybody wants to get access to analytics data, and once that's provided, they use it once and never touch it again. Suddenly, you have 100 users and nobody is providing insights. Without data, all planning comes down to guesswork.

Steve Persch: You almost need Google Analytics for your Google Analytics to track who's using it.

Which analytics data seems to be the most valuable to higher ed? I realize this is likely very organization or campaign dependent, but anything generally useful that may not be obvious?

Diane Kulseth: First and foremost, you want to have your reports on RFIs or requests for information and your applications, and then connect that to enrolled students within your CRM or admissions platform. 

Beyond that, once you start digging deeper, it's really important to start looking at insights like when people are coming to this page from an advertising campaign, are they actually engaging with the page for a substantial amount of time? Are they going elsewhere? How are they responding to your marketing messages? Can you get even more granular and start looking at the demographics behind them? Are these men, women, what are their age ranges? What other insights can you glean from your different tools? I think all of that can be really helpful, but again, start with your basics: RFIs, enrollments, and applications.

Overcoming Department Silos 

Do you have any tips for how Admissions and Marketing can work together?

Steve Persch: Shifting to an iterative or agile mindset for your website is especially difficult when so much of a university operates on a semester or year-long calendar. There's an expectation that you need the web plan for the next year or 10. Saying we're going to do small experiments and get feedback week by week is challenging to accomplish in the higher ed ecosystem. However, I think that you need to find a way to do it with strong cross-departmental relationships across those silos. 

Muzel Chen: We talked about analytics access as one of the technology challenges, but as far as a people challenge, what I see most often is communication. A lot of departments are still siloed — especially marketing and admissions.

A good starting point here is setting up a meeting cadence where you can share common challenges to solve and opportunities to pursue. For example, an ideal project is to link marketing and admissions data, which tracks the visitor as they leave the main site and enters the application process. Marketing could validate their campaigns by reviewing the application data, whereas admissions could personalize the student experience by using marketing’s data. 

Optimize Your Higher Ed Site 

Explore how RainU CMS can help your school launch on Drupal in 30 days or less with a Pantheon-powered hosting solution. Together with Siteimprove, Mediacurrent’s digital strategists can help you optimize your website for SEO, accessibility, and overall performance. 

Feb 11 2021
Feb 11

Way back in August 2006 we launched a holding page for Dave Hall Consulting. Then in early 2007 we launched the real Dave Hall Consulting website on Drupal 4.7. The site and logo were designed by imgageffect.

Since that time little changed with the website. The site evolved a little over time. There were quick and dirty upgrades to Drupal 5 and 6. In 2019 we stripped the design back to make it more mobile friendly.

Over the last 5 years there have been multiple plans to fix the site. They all failed, most due to lack of time and/or focus. In September 2020 we decided it was time to fix the site. Instead of doing it in house, we leaned on our years of experience managing remote and out sourced teams. We searched for the best people to deliver our new site.

After an extensive search we settled on One Week Wonders Studio. We couldn’t be happier with the results. We worked closely with the OWW team throughout the process. The communication was excellent. They understood the image we wanted to project and they provided a logo and design that fitted the brief. We have no reservations about using them again.

We prepared a brief for the logo including the general concept. The new logo incorporates the business name, while being a valid domain. We retained the orange and green from the original logo but went with stronger shades. The “/>” on the end references HTML and a command prompt.

The new website design is fresh and modern. With more white space and clean illustrations we hope the new site is more engaging. It now works better on all devices. It’s a shame that most people will never see our new 404 page which we love.

OWW didn’t have experience building Hugo sites. That wasn’t a problem. We engaged Ahmad Muhardian to take care of that for us. He did a great job delivering to our high standards. If you need someone to turn HTML into a Hugo theme, Ahmad is your person. He also does some awesome manga art.

We consider this iteration our minimum lovable product. Comments will be back in a future version of the site. More content is in the pipeline too. Hugo makes it easier for us to focus on the content, rather than the CMS and the underlying stack. This makes it easier for us to iterate and push out new content.

When rebuilding the site we wanted to adopt a principle of respecting users privacy. We use Netlify Analytics so your visits here aren’t added to your aggregated Google data profile. We host the fonts for the same reason. Youtube and most other embeds are links, rather than rich content. These privacy respecting features allowed us to implement a simple Content Security Policy.

Once again the builder no longer has the worst looking house in the street.

Feb 10 2021
Feb 10

The Automatic Updates initiative in Drupal has made significant progress since we first discussed it in our third-ever Tag1 Team Talk. Bringing automatic updates into Drupal core is a significant step in helping small to medium sized Drupal installations be able to keep running, with less time dedicated to maintenance.

In this talk, Tag1 Managing Director Michael Meyers sits down with Senior Back End Engineer and Migration Lead Lucas Hedding to discuss the progress of the Auto Update system intended for Drupal Core, how it’s different from the Auto Updater module, how it should help you keep your websites up to date more easily, and the variety of projects who are working together on creating this as an extensible system.

[embedded content]


Automatic Updates Module - Module

Automatic Updates - Drupal 7 and Drupal 8 Documentation Pages

Automatic Updates - Issue Queue To provide your feedback on this first generation of the Automatic Updates module, create an issue in the Automatic Updates issue queue

Drupal Core Strategic Initiative

More information about the PSA.json feed can be found at the link.

Drupal.org uses a package hashing and signing architecture based on the BSD Signify project

Drupal contributors created a php implementation of Signify

Photo by Markus Winkler on Unsplash

Feb 10 2021
Feb 10
Drupal 8 to 9 Migration

2020 was significant for web development — not just because of Сovid, but also because of the new version Drupal 9.

Since the new version was based on the same core as the previous one, the developers promise that the Drupal 8 to Drupal 9 migration will be smooth and fast.

Drudesk, our web support agency, has put together a guide for you on the migration preparation process from Drupal 8 to Drupal 9 to understand all the details and conditions.

Feb 09 2021
Feb 09

One of the top reasons people cite when canceling a membership with Drupalize.Me is, "No time to learn." We hear you. It's hard to set aside time for self-paced professional development for any number of reasons -- lack of support from your employer, other priorities that make it hard to justify "tutorial time", or feeling like you're wasting time looking for the right starting point that meets your needs.

Registering for a scheduled professional development event like a workshop or conference helps some folks overcome these barriers. How? A workshop or conference can fit into your professional development plan at work and is easier to set aside time for than self-paced learning. It's easier to communicate to others "I'm going to be attending this workshop and unavailable for other things during these days/times" than it is to set boundaries around self-paced learning -- even though we wish it were just as easy!

Online workshops with 2 scheduling options

We're offering 2 online Drupal theming workshops in February and March for folks ready to get started with theming in Drupal. Whether you can set aside part of 3 days in 1 week, or part of 1 day a week for 3 weeks, we hope one of these workshop schedules can help you set aside the time you need to get started on a path to mastering themes in Drupal.

February's Hands-On Theming in Drupal 8 and 9 workshop (February 22-24, 2021):

Register for February workshop

March's Hands-On Theming in Drupal 8 and 9 workshop (March 3, 10, 17, 2021):

  • Once a week for 3 Wednesdays, 3 hours a day
  • Starts at 5PM UTC (see my timezone).

Register for March workshop

Learn Drupal's theming system in a hands-on workshop

Are you ready to set yourself on a path to learn Drupal's theming system? Maybe you've just inherited a Drupal site and need to update the look-and-feel and you want to know the correct method. Or maybe you're a long-time Drupaler with more experience pre-Drupal-8 and need to get up-to-speed on Drupal 8 or 9 theming practices.

Class size will be limited to 12 people so you can ask questions, get live one-on-one help, and focus on your specific use cases. You can read a detailed syllabus for the workshop here. You'll also get:

  • Example code with extensive documentation suitable for use as reference material for future projects
  • A PDF workbook with exercises and solutions
  • Access to pre-recorded explanations of the solutions for all exercises
  • One month of free access to the entire Drupalize.Me tutorial catalog

Register for February workshop

Register for March workshop

Does this sound like something you want to do but the schedule just doesn't work for you? We're interested to hear your feedback on what scheduling options would work better for you. Let us know!

If you have any questions about this workshop, please contact us. We hope these workshops can help you set aside the time you need to take your Drupal career to the next level.


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