Upgrade Your Drupal Skills

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

See Advanced Courses NAH, I know Enough
Jun 08 2020
Jun 08

This blog has been re-posted and edited with permission from Acquia's blog.

We’re so close to the release of Drupal 9 and the excitement is alive all throughout the Drupal community. It has been 5 years since Drupal 8.0 was released and in that time, thousands of contributors and organizations have worked together to create a more powerful, accessible and innovative Drupal experience based on the input of people all around the world. As we await the reveal, we know that you are eager to know what Drupal 9 will mean for your sites and the next generation of web experiences. 

We recently joined Drupal founder Dries Buytaert in a webinar hosted by The Drupal Association and Acquia to answer your top Drupal 9 questions. Since we weren’t able to cover everyone’s questions, we wanted to cover some of the most popular ones here. Keep reading to find out what’s in store for Drupal going forward.  

Making the Migration

What are the migration options for users currently on Drupal 7? 

Gabor: Prior to the release of Drupal 9, we’ve been recommending people move to Drupal 8 first because the upgrade from 8 to 9 is much simpler. However, once Drupal 9 is released, people can use the Drupal 7 to Drupal 9 migration path directly built into Drupal 9.

The question comes down to whether the extensions that you are using are already available for Drupal 9 or not. Drupal has 9,000 extensions and more than 2,200 of them are already Drupal 9 compatible. We’re seeing hundreds of extensions added each week. The majority of people find that most/all of their extensions are already Drupal 9 compatible, in which case it is easiest to go directly from Drupal 7 to Drupal 9.

To track all of the great progress we’re making toward getting all of the Drupal extensions compatible, you can check out the Drupal 9 Deprecation Status Tracker.

Angie: Acquia also has a new tool in development for Drupal 7 to 9 migrations called Acquia Migration Accelerator, which we'll talk about more in a later section!

Do you expect support for Drupal 7 will be extended beyond November 2021?

Gabor: Currently, community support for both Drupal 7 and Drupal 8 will end in November 2021. However, Acquia is a member of the Drupal 7 Vendor Extended Support Program and will be providing commercial support for Drupal 7 until 2024

What migration tools are recommended to support the upgrade to Drupal 9?

Gabor: Drupal 9 has the same migration capabilities as 8.9, meaning that the standard migration tools can be applied when migrating to Drupal 9. The three main tools we recommend are:

  1. The Core Migrate Module suite - Migrates your content and site configuration  
  2. The Upgrade Status Module - Provides information about contributed project availability
  3. For Drupal 8 sites, the Upgrade Rector module automates updates of many common deprecated code to the latest Drupal 9 compatible code
  4. For Drupal 7 sites, the Drupal Module Upgrader - Scans and converts outdated code on your site. (This was recently upgraded by Acquia to generate code that is compatible with Drupal 8 and 9 at the same time where it can do transformations.) 

Angie: We’re also excited that Acquia will soon be offering the Acquia Migration Accelerator. This tool, which is currently in development, will help automate parts of the Drupal 7 to 9 migration process by giving companies access to a dashboard to view their data migration, provide module replacement recommendations, and offer insights into things like validation and migration errors.

Accessibility and Security 

What accessibility features will Drupal 9 have built-in? 

Angie: Drupal 9 is going to continue the strong commitment to accessibility that began in Drupal 7. Drupal's Core Accessibility Gate, required for all core changes, is a major show of dedication to accessibility efforts, and it makes sure that any new feature added will be accessible right out of the box. We’ve made a lot of positive strides when building Drupal 8 with full keyboard support, voice-to-text support for visually impaired users and media and layout enhancements. There was a lot of care put into the issue of accessibility and it’s something that will continue to be refined and worked on as part of the future of Drupal 9. 

Gabor: We’re also excited that the new Claro Administration theme, which was specifically optimized to feature an accessible design, will become the eventual default backend theme in future versions of Drupal 9. 

What security enhancements should we expect in Drupal 9?

Gabor:  A large part of the reason for the Drupal 9 upgrade itself is to ensure Drupal is more secure and compatible with modern system requirements. Also, Drupal 9 removes deprecated code so you’re working with a smaller codebase. This means there is less chance for potential security risks or errors. 

In general, Drupal has always shown itself as a secure choice. Drupal’s trusted by some of the biggest names from NASA to Tesla to NBCSports, so we’re confident it will continue to meet these high standards. The open source model creates shared responsibility throughout the community, meaning that security is a constant focus.  

Headless/Decoupled Drupal 

Is there going to be any movement toward more robust headless support and non-web content?

Gabor: We know there’s a huge interest in headless and non-web content with things like chatbots and IoT devices right now. While there aren’t currently any set plans to expand into more decoupled features, the push for change and innovation will be driven by the community. Anyone interested in advancing the current decoupled Drupal capabilities should submit their thoughts in Dries’ 2020 Drupal Product Survey, which is used to inform the strategic roadmap of Drupal’s future. 

Angie: Drupal 9 will still have all of the diverse options around traditional, partially decoupled and fully decoupled Drupal. For anyone looking for more support for their decoupled modules and content, there are tons of great contributed modules dedicated to decoupled and headless support. 

The Future of Drupal   

Will Drupal 9 include more “no/low code” features and features for non-developers?

Gabor: Definitely. Making Drupal more intuitive for all users is a big priority. There’s the Automated Updates Initiative in the works that began during Drupal 8. Funding for the second phase is being collected right now. That would help a lot of organizations with their site upkeep and maintenance without requiring a lot of dev resources.

Angie:  We’ve also got the new front-end theme, Olivero under development, that’s optimized for accessibility and tailored to front-end experiences. It’s made for people like marketers, site designers and content editors with a huge focus on responsiveness. 

Beyond core, users who want an easier experience on the front end should check out Acquia Cohesion, a low-code site building tool that lets people create new sites really quickly and easily. 

What sets Drupal 9 apart from other enterprise CMS platforms? 

Gabor: It’s the best and most modern version of Drupal, which has long been a CMS that offers the most variety, flexibility and freedom. Drupal's foundation was always in structured data which naturally caters itself to today's needs of multichannel interactions. Also Drupal has one of the biggest open source communities on the planet. There are thousands of people and over a thousand companies working on it to add more features, to improve security and to create new extensions.

Plus, those open source roots mean that companies that choose Drupal aren’t limited or trapped if one proprietary software company suddenly decides to switch vendors. They always have the option to move to another provider.  

Angie: Drupal is amazing because it’s always on the cutting edge. There’s no waiting around for one company to catch up with the digital roadmap. For example, a few years back when Pinterest had just come out and was becoming popular, Drupal had a plug-in for it in just two days! We have a community of thousands of developers that can embrace change right away as these big developments happen and I think that’s a big advantage when it comes to web experience. 

---

Drupal 9 marks another huge milestone in the world of web content management and digital experience. As you prepare for Drupal 9’s release, we’ve got the Ultimate Guide to Drupal 9 to help guide you on this exciting journey.  

Jun 08 2020
Jun 08

While working on making a module compatible with Drupal 9 I found that the module was using an obsolete function that became a new service. It was something like this:


/**
 * My plugin.
 *
 * @SearchPlugin(
 *   id = "my_plugin",
 *   title = @Translation("My plugin")
 * )
 */
class MyPluginSearch extends SearchPluginBase implements AccessibleInterface, SearchIndexingInterface {

  /**
   * {@inheritdoc}
   */
  public static function create(
    ContainerInterface $container,
    array $configuration,
    $plugin_id,
    $plugin_definition
  ) {
    return new static(
      $configuration,
      $plugin_id,
      $plugin_definition
    );
  }

  /** ... **/
  public function indexClear() {
    search_index_clear($this->getPluginId());
  }
}

The function search_index_clear is now part of the new search.index service that was added on Drupal 8.8. In order to keep this working on Drupal 8.8+ and Drupal 9 we need to inject the service in the create function. But if we do this unconditionally, we will get an error in Drupal 8.7 because that service was added on 8.8. What to do then?

Fortunately years ago I read an article that addressed a similar need. It talked about how to safely extends Drupal 8 plugin classes without fear of constructor changes. In my case I didn't want to change the constructor to keep it compatible with Drupal 8.7 and below. At the same time, I wanted to inject the new service to use it in Drupal 8.8+ and Drupal 9. I just modified a bit my code to something like this:


/**
 * My plugin.
 *
 * @SearchPlugin(
 *   id = "my_plugin",
 *   title = @Translation("My plugin")
 * )
 */
class MyPluginSearch extends SearchPluginBase implements AccessibleInterface, SearchIndexingInterface {

  /** ... */
  protected $searchIndex;

  /**
   * {@inheritdoc}
   */
  public static function create(
    ContainerInterface $container,
    array $configuration,
    $plugin_id,
    $plugin_definition
  ) {
    $instance =  new static(
      $configuration,
      $plugin_id,
      $plugin_definition
    );

    // Only inject the service in Drupal 8.8 or newer.
    if (floatval(\Drupal::VERSION) >= 8.8) {
      $instance->searchIndex = $container->get('search.index');
    }

    return $instance;
  }

  /** ... **/
  public function indexClear() {
    if (floatval(\Drupal::VERSION) >= 8.8) {
      $this->searchIndex->clear($this->getPluginId());
    }
    else {
      search_index_clear($this->getPluginId());
    }
  }
}

And that's it, Drupal 8.8 and newer will take advantage of the new service while we keep this compatible with Drupal 8.7. This will give users more time to upgrade to Drupal 8.8+ or Drupal 9.

Jun 08 2020
Jun 08

PatrickContinuing our short series of articles highlighting ways that the Drupal software and its community are building solutions to help combat the effect of COVID-19, today we hear from Patrick Corbett of Redfin Solutions. Here, he describes their project at the  Rural Aspirations Project.

The Rural Aspirations Project was created to expand educational opportunities in rural Maine that develop and honor the community while stimulating the innate curiosity of the students and teachers. When the Maine state government shut down the schools to limit the spread of COVID-19, parents and teachers found their roles turned upside down. Rural Aspirations saw the need for a service to connect Maine families and teachers with the wide array of activities and resources offered by Maine organizations.

In light of this growing need, Redfin Solutions collaborated with Rural Aspirations to launch an improved Community Learning for ME website. The new website had to be capable of addressing immediate needs in the community: collegial support for teachers, a way for organizations to explore and pilot innovative virtual connections, and a quick and easy resource for families that are struggling to manage what some have called “crisis schooling.”

With communitylearningforme.org, local educational organizations such as the University of Maine Cooperative Extension, the Portland Public Library, and the Maine Audubon can post their resources, learning activities, and links to live events. With Drupal, we were able to use taxonomy and views with exposed filters to empower the teachers and parents to find the perfect resource while enabling them to discover more. Users can filter and search by subject, age group, and duration for a resource that fits a specific need. They can also browse through the website to learn more about what Community Learning for ME has to offer. Teachers can create schedules for their students to follow along with at home. Parents can find resources to support them in engaging their child, and fun activities for their child to work on. 

screenshot of website

Community Learning for ME is a volunteer-driven, grassroots effort. The website is best served by Drupal because it allows administrators to grant trusted organizations access to manage their own pages on the site through a custom publication workflow. Before using Drupal, the administrators spent hours each day on a Wix-based site creating and updating resources manually. Now, with the time they save, they can focus on providing targeted support to those in the rural Maine community who need it the most.
 

Jun 08 2020
Jun 08

For higher education IT departments, it's a familiar scenario.   

Your team is in charge of managing hundreds of websites that support different mission-critical areas of your organization. You are responsible for updating the sites, keeping them all up and running, and optimizing their performance. Additionally, each site has its own small team updating content, creating new features, and working within the Drupal admin system. They are predominantly non-technical users, and reach out to your team whenever they need help.  

Over the years, we've worked with many teams facing these exact challenges. Through our clients' experiences, it is quite clear that your ability to effectively manage your platform is substantially determined by your architecture. Drupal 8 core includes multisite functionality and is a popular choice that works well up to a certain number of websites. For a large-scale university platform with hundreds of sites, our preference is to use a shared codebase that provides more fine-grained control. This is exactly what Pantheon Custom Upstreams provides.  

Why is that? Read on...

Challenges for Deploying Higher Education Websites

While each of our clients is unique, they also share many of the same challenges. For our higher education clients with large, complex Drupal platforms, we encounter some key pain points time and time again.  

  • Redundant implementation. When fixing a bug or developing a new feature, the wrong architecture can leave you re-implementing and testing the solution on a site-by-site basis. This can turn a 5-minute fix into a project that takes several hours.
  • Ungainly testing. Testing and deploying Drupal updates across hundreds of sites can get very tedious and time consuming. There are weekly releases of updates for contributed projects, twice monthly core updates, and additional critical security updates when needed, each of which must be tested against every site.
  • Difficult system-level updates. System updates like PHP versions are infrequent, but critical for maintaining site security, and can require code adjustments to keep things working correctly. These adjustments must be discovered, implemented, and tested within both the platform code and per-site customizations, making these important updates a potentially daunting task.
  • Significant risk of introducing new bugs, conflicts, and inconsistencies. When hundreds of sites share a codebase or installation profile, but also have their own customizations, any change to the platform code has the potential to cause problems at the site level. A new platform feature, for example, might work great on most sites, but conflict with a custom module used on a quarter of the sites, several of which have their own revisions of the module that may cause additional issues...it can get quite messy. 

Possible Architectural Solutions

It's clear that these challenges are big enough to deserve a good solution. There are two main approaches to architecting large-scale Drupal platforms, each with their own advantages and disadvantages.

Multisite Installation

With Drupal's multisite setup, separate, independent sites can be served from a single codebase, each with its own database, configuration, files and domain.   

Multisite has the advantage of being relatively simple and intuitive to manage. With just one codebase, there is less code to administer, and updates are rolled out to all of the sites at once. Additionally, individual sites can incorporate their own themes and modules as needed. 

However, it also comes with some disadvantages, which are amplified when managing large-scale platforms:

  • Having a single codebase and single server means you also have a single point of failure. An issue in your server or codebase will affect all of your sites, potentially taking down the entire platform.
  • Deploying updates or fixes to selected sites is difficult because all of them share the same codebase. Anything deployed for one site has the potential to affect any other site on the platform.
  • Drupal updates deploy to all sites at once, and cannot be reverted on a per-site basis. This means that either all sites must be tested before any can receive the update, or some sites will be in a broken state until they can be fixed individually.
  • Teams come up with homemade solutions to circumvent some of the challenges involved with maintaining a Multisite installation. These solutions can be difficult to maintain if documentation is not properly written, or if they function in unexpected ways.

Shared Codebase

A shared codebase can include a set of modules, an installation profile, a Drupal distribution, or other code that is used for multiple sites on your platform. Rather than all running off of the same code, however, each site has its own copy. Individual sites can also have their own customizations if they don't conflict with the shared codebase.   

Some advantages of this approach are:

  • Bug fixes, new features or even security updates can be added to the shared codebase and pulled into each site when its team is ready to work on it, rather than all sites updating together on a forced schedule.
  • Customizations can be done for each individual site without having unintended effects on other sites.
  • Avoiding a single point of failure at the server level eliminates the risk of an error or conflict taking down the entire network of sites.  

Some disadvantages for this approach are:

  • Applying shared codebase updates to each site individually requires doing work for each site, and can take more time.
  • Multiple servers or hosting environments must be administered and kept consistent across the platform.

Custom Upstreams: The Pantheon Approach to a Shared Codebase

Pantheon hosting platform has introduced the concept of Custom Upstreams to solve scenarios like the one described above. With this solution, you can standardize design and functionality across multiple Drupal sites that share a custom upstream managed by your organization. This governance does not compromise the customization of individual sites. Instead, it offers a sustainable and scalable solution for handling updates across massive site portfolios. When used well, Custom Upstreams frees up developer time to focus on higher-impact work, and makes it possible to spin up new sites quickly, without repeating foundational work.   

Pantheon Custom Upstreams workflow across dev, test and live environments Deploying updates.

Deploying updates to the upstream is as easy as pressing a button in the dashboard to pull the update into the development environment and then deploying this update to test and live environments. Further automation is possible with Terminus, even to the level of running a single script to update and deploy all of the sites at once. There is a lot of good documentation from Pantheon about creating Custom Upstream and related topics.  

Custom Upstreams within Pantheon provides solutions for the challenges presented and also the disadvantages of the architectural solutions explained above:

  • There are no servers for you to administer.
  • The PHP version could be changed globally and overridden per site if needed using the pantheon.yml file.
  • Security updates, new features and global bug fixes can be applied to the custom upstream and pulled into all of the sites either manually or through some automation.
  • There is no Single Point of Failure at the server level, and the Pantheon folks are really good at managing their infrastructure.
  • A lot of automation can be done by using Terminus and Terminus plugins.  

Final Thoughts

There are always tradeoffs to be made when attempting to balance power with complexity. Drupal's Multisite--a solution that is initially simple and intuitive--can evolve into a quagmire as the platform scales up to meet the requirements of higher education institutions.  

It has been through our years of experience with such institutions that we have established our preferred best practices for architecting and managing these exceptionally challenging platforms with a shared codebase. Pantheon's Custom Upstreams provide tools and automation to relieve some of the complexity of administering independent sites and their environments, while retaining the powerful benefits of such an architecture.   

If you'd like to learn more about our toolbox for large-scale Drupal platforms, check out How to Set Up BLT and GitLab CI to Work with Pantheon Hosting (Part 1) and (Part 2), or just click the green chat bubble to ask one of our team members. 

Jun 07 2020
Jun 07

The standard Drupal 8 block visibility page settings allow you to either include the listed paths (via "Show for all listed pages" or exclude the listed paths (via "Hide for all listed pages") - but you can never include and exclude at the same time. The Block Exclude Pages module provides a solution to this.

Consider the following situation: you have a block that needs to appear at all pages whose URL begins with "/about", with the exception of "/about/me". With just Drupal 8 core visibility rules, it isn't possible to easily make this happen.

With the Block Exclude Pages module installed and enabled, the following visibility rules can then be used:

/about
!/about/me

(Show for all listed pages" selected.)

The Block Exclude Pages module allows you to use the "!" character as a negation - problem solved!

Jun 07 2020
Jun 07

If you use Drupal 8's configuration system, then you know that one of the trickiest parts of using it effectively is managing configuration on a per-environment basis. Luckily, the Config Split module makes it easy to manage different configurations in different environments, but how to set it up properly isn't always readily apparent. 

In this blog post, I'll provide one method for setting up Config Split in an efficient manner, with splits for local, remote development, and production environments. 

The goal is to be able to set things up right the first time, without having to worry about manually enabling/disabling different "splits" depending on the environment. 

The key to it all is leveraging Config Split's ability to enable/disable individual splits with configuration in the settings.php file.

The first step is to set up your splits - I normally start by doing this on my local environment. Once Config Split is enabled, via the admin toolbar, head to Configuration | Development | Configuration Split Settings (/admin/config/development/configuration/config-split). Click to add a new split setting - in this example, we'll use the following settings:

  • Label: Local
  • Folder: ../config/splits/local
  • Active: (selected)
  • Modules: Complete Split: Devel, Devel Generate, Devel Kint, Reroute emails
  • Configuration items: reroute_emails.settings

Let's also add a second split - this one for remote development environments:

  • Label: Dev
  • Folder: ../config/splits/dev
  • Active: (selected)
  • Modules: Complete Split: Reroute emails
  • Configuration items: reroute_emails.settings

Note that we're not going to split out the Config Split configurations (meta, I know), rather we're going to allow the Local and Dev Config Split settings to be exported to the main /config/sync/ directory. 

Next, when exporting config, the following directories and files will be created:

/config/splits/local/
    reroute_email.settings.yml
/config/splits/dev/
    reroute_email.settings.yml
/config/sync/
    ...
    config_split.config_split.local.yml
    config_split.config_split.dev.yml
    ...

At this point, if we did nothing else, then both the "Local" and "Dev" splits would be automatically active all the time in all the environments and we really wouldn't have accomplished anything yet. 

The final step to make this all work is to add a couple of lines of code to each environment's settings.php file. For example, in the settings.local.php, add:

$config['config_split.config_split.local']['status'] = TRUE;
$config['config_split.config_split.dev']['status'] = FALSE;

Then, in the settings.php for the remote development environments, add:

$config['config_split.config_split.local']['status'] = FALSE;
$config['config_split.config_split.dev']['status'] = TRUE;

If you use a single settings.php for all environments, then you can use if-statements to determine the current environment and then enable/disable the appropriate splits. For example:

if ($env == 'local') {
  $config['config_split.config_split.local']['status'] = TRUE;
  $config['config_split.config_split.dev']['status'] = FALSE;
if ($env == 'dev') {
  $config['config_split.config_split.local']['status'] = FALSE;
  $config['config_split.config_split.dev']['status'] = TRUE;
else {
  $config['config_split.config_split.local']['status'] = FALSE;
  $config['config_split.config_split.dev']['status'] = FALSE;
}

With this type of Config Split setup, you'll always be able to immediately run a configuration import after pulling in new commits from the project repository without having to worry about manually enabling or disabling your splits. 
 

Jun 06 2020
Jun 06

I had the pleasure of being interviewed by Richard Pietro as part of his Stories from the Open Gov podcast. Richard has gotten some amazing speakers on his show including Sir Nigel ShadboltAshley CasovanNathaniel HellerMelanie RobertRob DavidsonTony ClementMichael GeistLindsey MarchessaultRyan AndrosoffTracey LauriaultKeith Loo, and Jesse Hirsh. You should subscribe to the podcast and listen to it on SoundCloud. We talk about a range of things here from accessibility to open government and open source, I hope you find it interesting.

I was encouraged by Ioanna Talasli & Nicolas Steenhout to promote podcasts which are accessible and have transcripts. This is difficult for many podcasts, but I wanted to start ensuring that at least the podcasts I am interviewed with have transcripts. For this one I used Rev.com to transcribe the audio which Richard provided from the discussion. It was really quite accurate and also a useful tool as a speaker to actually see what you say. I have to admit to editing the text below to remove some of my filler words and phrases. I do hope that with this awareness I'll become a better speaker over time.

With that said, I hope you enjoy the content. 

Richard Pietro:
Hello and welcome to stories from the Open Gov, a podcast dedicated to telling the stories about what open government and open data look like. My name is Richard Pietro and I am joined by Mike Gifford. He is the owner of Ottawa based OpenConcept Consulting, it's a company that specializes in web development with a particular focus on open source and web accessibility. OpenConcept has also contributed to the Drupal Core. Now for some of us that's a whole heck of a lot of tech jargon, which is why Mike is here. Not only will we glance over some of these tech matters, but we will also talk about how open source technology can help governments. Hello Mike, and thanks for joining us.

Mike Gifford:
Richard, good to talk.

Richard Pietro:
So my first question is quite simply, do you mind clearing up your introduction a little for us? Like, what is Drupal?

Mike Gifford:
So Drupal is a content management system, and so what that means is it's a framework that allows people to go from entering content into a database, and allow it to be expressed in a website or for that matter it can be put up in a whole bunch of other ways. It can be used as a framework to organize and display content orally through Alexa or for... through your mobile app, through a smart smartphone in terms of trying to go up and have responsive and native mobile apps. It's a framework.... It's a content organization framework and it's also very flexible and allows you to go off and do a lot with it. More people are aware of WordPress as a tool and WordPress is great but it's more sort of geared towards blogging and for simpler websites, where this is about trying to build something that is more customized, more comprehensive things like bilingualism and whatnot are things that are harder to do with a simple blogging tool, and Drupal allows you to create multilingual sites.

It's also really useful to build sites that are accessible which is why I've been involved, and I've contributed to Core and a whole bunch of modules in Drupal, but I'm also a Drupal core maintainer. So I have an official capacity and in every copy of Drupal 8 that's downloaded my name is listed there amongst a whole bunch of other people who've contributed tons and tons of their time to make sure that this open source software (which is free for everyone to use and drives 3% of the web) is able to be as good and robust as possible.

Richard Pietro:
Now, am I wrong in thinking that whitehouse.gov a number of years ago under the Obama administration, they used Drupal to build whitehouse.gov?

Mike Gifford:
That is absolutely correct, and they used it for... Well, up until I think that the first... the end of the first year of Trump's presidency, and I think they just realized that for a president that... yeah, thought in tweets it wasn't really relevant to have something as powerful and is able to organize as much content as what Drupal does.

Richard Pietro:
This is quite possibly the most political this podcast has been, this little exchange here between Trump and Obama but okay, so let's get back on track a little bit here. One other thing I want to ask you is, there are tons of tech languages and programming languages out there, and for people like me who are not programmers it can be very confusing.

Mike Gifford:
Yes.

Richard Pietro:
So I want to understand the relationships between these languages a little bit better. So if we were to think of as an analogy thinking of a car, right? With something like JavaScript and Python and PHP, is it kind of like the engine of the car?

Mike Gifford:
PHP would be the engine, JavaScript would be things like the automatic window-

Richard Pietro:
Or be like the features of the car?

Mike Gifford:
The features of the car, the windshield wipers and whatnot.

Richard Pietro:
Okay.

Mike Gifford:
It's the stuff that is dealing with the exterior look and feel, the stuff that you see but you never see PHP. I mean that's all under the hood and so you see the effects of JavaScript because JavaScript organizes, and arranges the HTML and CSS to display information to the browser. So the JavaScript sort of is the functional moving parts and the CSS is like the paint job of the car, and the images those are the decals you throw in the car.

Richard Pietro:
Where does Drupal sort of fit in that conversation? Or in that analogy, I'm sorry.

Mike Gifford:
So Drupal in that case is... it's the whole car because it includes everything and whether you want to build a car or an aircraft carrier or a moon lander, I mean you can do that all you need to have the... there's an engine that allows you to power your websites and organize the content that you don't actually see that, and there's a database as well, the database is sort of like the gas for the car.

Richard Pietro:
That would be things like SQL or MySQL or things of that nature, right?

Mike Gifford:
Yeah, that's right. But yeah Drupal is the whole package and so it's hard when you're comparing something like Ruby or Python to Drupal, because those are essentially the engine.

Richard Pietro:
Okay.

Mike Gifford:
So it's like you can't really compare Ruby with Drupal because it's like comparing a V8 to an electric engine. They're both engines and they both do the same thing and if you don't bother to look up the hood... if you're not trying to build a car it doesn't really matter, but if you are trying to build the car it does matter and if you want to be able to have a car that has certain things built into that, like if you want to make sure that you've got comfortable bucket seats as opposed to-

Richard Pietro:
Bench seats?

Mike Gifford:
Yeah, bench seats or milk cartons stuck on the ground you're going to want to have a framework that actually has a lot of material and development that's going into it to improve its usability.

Richard Pietro:
Which is I'm assuming probably why... and for a lot of people like me they don't understand that just because you can code doesn't mean you can build a car. There're some specialists that focus on the engines and the pistons and things of that nature, and then you have your brake guy and then you have people that do the paint job.

Mike Gifford:
Yeah.

Richard Pietro:
People that do the electrical, so that much within your community while there's... you can dabble in a lot of different things it doesn't mean you can do everything.

Mike Gifford:
It's really interesting and going back to the car analogy, the only car I've ever owned is a 1967 Beetle. I went off and ripped it apart and... actually ripped two of them apart, put them back together into one and drove it across the country, and you could do that with a car that old with very little information, with material online you could... you didn't need to take it into the shop. But if you were to go off and buy let's say the latest... the last issue of Volkswagen that rolled off the press or latest Beetle. You couldn't do that, there's so many electrical components that are built into that, there's so many special tools that are required. It's been so fine tuned over the years that it's not possible for somebody with no training and education to put together a working, viable vehicle because we've made them more complicated.

Mike Gifford:
The same thing applies to the web and that's 20 years ago when I started my company, one person could probably do everything like it wasn't that complicated things had not advanced that far, but now there are so many specialties and there's so many different requirements and so many different use cases, that it's not possible to find somebody who's an expert in everything.

Even if you find a jack of all trades, it's so much more complicated than that, there are people who are full stack developers but they still just know the tools they know and the patterns that they've run into and they know what's worked in the past and can probably learn to replicate it and expand on that, but it's not like it was. You need to have more people involved in building and developing these tools because we expect so much more out of them.

Richard Pietro:
Ain't that the truth? And now that we have this sort of foundation for our conversation I'd like to get into the meaty part of it. For a good long time now many governments have lingered when it came to changing the way they work in the 21st century and the tools that they use. For example, even though it's been on the books for a number of years, Canada has an edict that says it must consider and use open source tools as often or as frequently as possible or the edict is something along those lines, but there hasn't been I think the kind of buy in even though the edict is present or the directive is present. Do you think that that government is giving enough consideration to open source solutions? If not why do you think that is?

Mike Gifford:
No, I don't think that the government is giving enough consideration for open source. Initially it's difficult to try and think about this in terms of the long term and how legacy institutions tend to work, but they're not really keen to innovate and so much of the time it's about trying to minimize risk. For the longest time the least risky thing to do was to buy a service from a third party and then be able to incorporate that afterwards, so that you could just externalize the risk so that a third party is responsible for all of that.

I think that there's been a real effort... well, under the Harper government there was an effort to try and outsource all of the IT functionalities as much as possible, and to... whether it's Canada.ca and web renewal or whether it's The Phoenix Project, there was the belief that IBM or Microsoft or somebody else knew how to do it better and that government could just set up a contract through a long process and pay somebody else to take care of it. I hope that belief is coming to an end that there's a reawakening of the need to invest in people inside the government to understand technology, and to use technology and to be able to not just be consumers of technology but to actually be producers of technology.

There is no other entity in Canada that hires more computer scientists than the Government of Canada, and yet they don't spend a lot of that time finding ways to build and to contribute back to projects that they use. I think that a lot of this comes down to building confidence in their team, and building... and shaping the culture so that people are actually not just consuming open source tools, because there are actually open source tools that are used throughout government, but actually getting governments to start to contribute back to them and to find ways to demonstrate by engaging with the community outside of the government silo, to actually learn how to verify and to build a better product that works well for everyone.

Richard Pietro:
I think one of the examples of what you're referring to that relates particularly to open government and open data, is the Open Data Portals themselves. So for those of you who are not familiar there are really two big dogs in the community, which is you have the traditional sort of over the shelf software known as Socrata, and then you had the open source software known as CKAN. With Socrata government can easily go to them and say, "we want to buy a license, we want you to implement it and you put it out there and we won't worry about a thing." But with CKAN you need to hire people that are familiar with some of those programming languages that we talked about earlier, so they can more appropriately customize a portal that fits their needs and their citizens.

Mike Gifford:
Yeah, I mean that's a great example and CKAN is a wonderful tool. There's actually a variation of it called DKAN which is a Drupal content organizer and manager as well, so that's maintained by-

Richard Pietro:
How's it different? I've never actually heard of DKAN before.

Mike Gifford:
It's just based on Drupal, so a lot of that infrastructure like CKAN is built on... I think it's a Python application if I'm not mistaken, and DKAN is just built on Drupal and PHP. So it's similar in terms of organizing content and it works very similarly, but it's just a Drupal based initiative.

Richard Pietro:
Would it be easier for government agencies to use the DKAN than it would be CKAN? Is it kind of like you're asking someone to just go out and buy a car and do some minor modifications, but with CKAN you're asking someone to build the car from scratch?

Mike Gifford:
I think that with CKAN it's just that it's... I think that there may be some government departments that will be more appropriate to use DKAN because they're already using a Drupal natively, and see CKAN uses Drupal as well but it's... at least the StatsCan implementation does. But it's... I think that having... it's just a matter of providing options that make it easier for people and a lot of times the organizing and managing that content, it's not that difficult as a way of structuring and organizing content itself.

Richard Pietro:
Mm-hmm (affirmative)

Mike Gifford:
For many organizations CKAN is the right solution and DKAN just provide another option that is a little bit lighter, and a little bit easier for people to implement if you're looking to have a data store. But that provides an option that's more... probably more in line with what their current web teams are already familiar with.

Richard Pietro:
So you are a hardcore open source, web accessibility, Open Data practitioner and advocate?

Mike Gifford:
Yes.

Richard Pietro:
I have to ask you this question, what are some of your biggest beefs on how the government views open source?

Mike Gifford:
So, I think that the biggest problem is that governments see open source as free, and so the big advantage that they see of open source is that you don't have to pay for the license. But that sort of mindset is sort of like free as in beer and not the intention that many people have had in the open source or free software movement as in free isn't speech as a right and whatnot. I tend to think about open source as in... free as in kittens.

Richard Pietro:
Okay. Sorry, I didn't mean to take you out of your zone here but that was just do funny, please continue.

Mike Gifford:
It's totally good. So kittens are lovely and we all like them but then they rip things up and you need to train them, and you have to nurture them if they're going to grow up and be a lovely mature adult cat. If you don't train that and invest time in working with the kitten, then you're going to have a very unpleasant life as a cat owner. So it's that same idea that you need to invest back in the community and that could be a matter of paying for things like there's paying for... paying open source development firms who have experienced working the software, and trying to maintain those organizations who are leading the software initiatives that you're using. I mean that's a great way to do that, even going off and organizing hackathons and providing sponsorships for events that are related.

There's Drupal Camp Ottawa, and there are Drupal camps all over the place but events like that are things that can be... that are always looking for sponsorship whether they're in person or virtual, there's always expenses that need to happen. There's also just trying to go often to educate and talk about it. I mean Drupal is used extensively in governments around the world but you almost never hear about it. The Prime Minister's website uses it, we built the Governor General's website with it, StatsCan can use it which is still one of the largest websites that's the government of Canada has as does buy and sell, as does Ontario.ca, as does Ottawa.ca, as do most governments in the European Union use Drupal still, it's very, very popular in governments in the United States. Australia has put forward an initiative to use Drupal and built their own theme and distribution around that, to make sure that they have a consistent look and feel that is possible for governments not just at a federal level, but also at the state and municipal level.

Mike Gifford:
So there's a lot of stuff that could be done but in general governments are not talking about it, and they're not talking about what all of the work that they're getting for free by choosing open source, and finding ways to help their communities grow and flourish and to get more adoption of these software communities. So it's ridiculous that there are so many governments out there that are using the same tools and yet they don't collaborate with each other on this. They don't collaborate with the community, they're still sort of stuck in their silos for the most part and they're not looking at ways to really benefit from the community aspect of a community driven software initiative like Drupal is.

Richard Pietro:
This is actually very relevant Mike I think, on how the government reacted after the COVID-19 lock downs were announced. So for example, all of a sudden you have all these public servants that are just overloading the government VPNs. I'm not sure if this is still a problem or not but are there sort of solutions that could have helped the government resolve this problem aside from just buying more servers?

Mike Gifford:
So I'm sure that it is a problem but I'm not sure for which departments and I don't know that even the government itself is aware of how much they are... the more they need to invest in order to be able to support a remote workforce. I think that they're certainly struggling for this but a lot of information is decentralized in across all the departments of the Government of Canada, and I'm sure that the CIO councils are trying to gather this information. I haven't seen anything about a concerted effort to evaluate and track the progress of the internet access and availability of access to the internal network of the Government of Canada.

I'm on the outside though so it's very possible that these conversations are happening elsewhere, but a lot of the problem comes down to this idea that there's a government network that all of the secure information will be held within this government network, and that if you... you need to go often and get clearance in order to get access to that network and then once you're on the network, you can be more loosey goosey about what happens inside there with the permissions and configurations and access to information that you can just assume that anyone who has access to the government network has what they need to to access it. I think that's part of the challenge that there's a lot of stuff that has been put inside of the government network that probably should never be there.

There are things like MediaWiki is installed on... in Government of Canada instances in their various different government departments, but the big one is GCpedia and with GCpedia like at the moment you can only access that through the VPN. There's no other way to access GCpedia. So all of that knowledge base of information they could just expose GCPedia to the public and have an authorization system so that you need to be able to log in through MediaWiki in order to access any of the content on the page. That wouldn't be that hard to go from to set up for them, but it will require a way of thinking about how security is managed and how they deal with this... deal with a more permeable membrane between the government network and the internet. I think that one of the elements I was really interested in is the idea of building an internet and committing to building an internet that is okay for secure transactions, and many people will go off and remember the Heartbleed bug of a few years back.

It cost a few trillion dollars in the economy, it was a fairly significant impact for the economy and as a result of that many organizations started contributing to an initiative that is managed by the Apache Foundation called the Core Infrastructure Initiative, and the point of this is to take... to look at the files that are critical to maintaining a secure internet and to make sure that there's enough people reviewing those little files for security to make sure that there isn't... that we don't have another Heartbleed bug issue again. That $3 trillion economic... or the $3 trillion expense happened essentially because one little file has been maintained by one or two people on the side of their desk for a period of decades and just hadn't gotten the attention that it deserved, and there was an exploit that was within that that was not fixed in the internet because people were not contributing back to this open source software.

Another thing that I'd like to think about is this idea of internet exchanges, and for government towns like for that matter Ottawa and Toronto and Victoria, there's government towns where there's a lot of critical government infrastructure that is being... that should be shared. That we should have common fiber or potentially common wireless available that is available in these heavily government oriented municipalities. Not that it needs to be limited to that but there are communities that have invested in fiber and have had a faster, more reliable, more resilient infrastructure. But for the longest time governments have built relationships with Bell and Rogers to provide them with internet access and I don't think that those have really demonstrated that they're as resilient as we need particularly in times of crisis like this.

Richard Pietro:
Mm-hmm (affirmative)

Mike Gifford:
A packet of information to jump between department A and department B should not have to get routed through a server in Chicago, in order to get back to jump between the two departments but often that's what needs to happen. There isn't enough of an emphasis on building a resilient, redundant infrastructure in our municipalities to make sure that the packets are kept local wherever possible, and only sit outside of the city when we need to do that.

Richard Pietro:
This is getting pretty technical for a lot of us. We're talking about packets and things along those lines and analogy... we've had this discussion before and an analogy we used at the time was this idea of sort of carpooling a little bit for these internet exchanges. I forget at the time, did you agree with that analogy or would you reframe it?

Mike Gifford:
I think that carpooling is probably... I mean that's not a bad analogy. CIRA has a really interesting model where they visualize this as well, and the way that they provided their visualization was that right now each department has their own freeway to the Internet, and they're maintaining independent freeways to the internet to exchange information back and forth and so from the Ottawa example, department A would need to get onto the Queen's way in order to get to department B, even if they're all... if they're both located in downtown Ottawa. Whereas if we just sort of built around about in the downtown core for information then you could get off where it was appropriate for you to get off, and not necessarily have to jump onto the freeway in order to communicate to your neighbours.

Richard Pietro:
Got you, got you. I want to go back to open source right now because you were very clear about some of the things that governments are doing wrong when it comes to open source and how they should view it, but have you come across any government initiatives or any governments in general that are doing open source right?

Mike Gifford:
I think that there are governments that definitely are and that are doing some really interesting work. The European Union has had a lot to try and promote open source. I think that they see this as part of a way of trying to build more economic independence from largely American tech companies, and that's certainly an issue for us here in Canada as well. France in particular has seen a whole series of businesses pop up because they're able to leverage open source tools in order to be able to provide high level support for larger organizations, and if the developers weren't able to stand on the shoulders of giants in order to be able to do that, then there's no way to be able to accomplish these tasks. If everyone was trying to go off and to code from scratch the work that needs to be done, then it wouldn't be possible for a small organization to be able to meet the requirements of government much of the time, but leveraging open source software you can.

You can access millions of dollars worth of software for free if you're able to leverage open source code effectively, and so there definitely are small businesses and government agencies that are able to do this. I've been really impressed by the open source community in the US government particularly under Obama, there was some really interesting things that came out of it. There was code.gov was one of the initiatives that came out of it, 18F is another one you can see a lot of the code that has been used in Canada and other government departments has been shared on the 18F's GitHub page.

Richard Pietro:
Mm-hmm (affirmative)

Mike Gifford:
There's a lot of governments that are sharing code and policy and documentation through GitHub, and that's really wonderful to see all of the ways that that's been being done. That's exciting to see, I'm also excited to see things like the Australian Government has made a big commitment to using Drupal and to invest in a distribution of Drupal that there... that's able to be used consistently across government departments and to really drive cost down, because they can build a single distribution that is able to go off and to meet the security and accessibility requirements of the government and be able to implement that. I've got to say I'm also really impressed by a lot of the work that StatsCan has done, StatsCan with their Drupal WET distribution and all the work they're doing on Kubernetes and cloud infrastructure. It's really visionary stuff and it's amazing to see a small team of people in a government department really going off and moving ahead, and sharing some best practices to the government and to others that really are able help advance the bar and to see that the government is actually able to see that these tools and technologies are really able to off, and serve not just the needs of a particular department but the government as a whole and society at large.

Richard Pietro:
You just mentioned WET which stands for the Web Experience Toolkit, which was from my understanding one of the very first open source projects coming out of the Treasury Board Secretariat, and I remember this was happening I think around the 2011s.

Mike Gifford:
Yep.

Richard Pietro:
And at the time speaking to some of the people because it was such a trailblazing exercise, there was a lot of meetings, a lot of conversations, a lot of legal. It was an experience or an experiment that they really didn't know what was going to come out of it. The Web Experience Toolkit became sort of a standard across Canada for building web accessible templates based on open source code. Were you at all in part as a community member in those conversations in those early days?

Mike Gifford:
Yeah, I definitely was and it was definitely an exciting era to go from be involved in and it was nice to see Paul Jackson and Mary-Beth involved in the WIRED Magazine. You don't see government departments anywhere in the world featured in Wired magazine all that often.

Richard Pietro:
Oh, my I didn't know that.

Mike Gifford:
Yeah, there's a great picture they look a little younger than they do now but-

Richard Pietro:
You're talking Mary-Beth Baker?

Mike Gifford:
Yes, that's right. So there was... there's really interesting times to pull that together, and I think the project... a lot of effort was put into this in terms of policy and regulation and sort of what it would be like for the government to contribute a code... a front end framework to the community using GitHub. It was exciting to see that, but they never really had the resources that they needed like it was always understaffed and run in a very tight manner. So things like documentation was a problem and still is a problem trying to go off and make sure that there's a clear set of documentation around how to actually implement this.

Things like roadmaps, so how do you try and... where is WET going next? What are the concerns that are going to be addressed in the next release? They did such an amazing job given the resources that they had and it really does stand outside of Canada as well as it stands inside Canada, but it also needs to have... it's one of the things where the web has changed a lot since then, and there hasn't really been the investment in WET that there needs to be to maintain this framework.

Richard Pietro:
So you have been... we've just talked about you've been in this space for a long time.

Mike Gifford:
It's true.

Richard Pietro:
Do you think that we now need to rethink the open government, open data and open source movements in the context of COVID-19? Has COVID-19 changed anything when we think about those movements?

Mike Gifford:
I think that one thing that does... we do need to rethink is just... I've been involved in promoting open source in organizations for over 20 years and there... we haven't made as much progress as I would have wanted. Whether it's open government, open data, open source like all of those are... there's been some... there's a geeky clan of people who've gotten excited by this and have... and understand why it matters, but we haven't really extended beyond that geeky clan of people. I think what we need to rethink is what we're... what our aspirations are, and who do we need to bring together to go actually understand how these geeky ideas really do matter and that they... that we need to start investing them if we're going to be able to build a resilient infrastructure that we need.

So I think that the... Yeah, we haven't seen a lot of collaboration or as much collaboration around this, and how do we try and not just use these open approaches as a way to save a bit of money which hopefully we can, but also really to allow for innovation to happen and it allows innovation to happen inside of government. One of the projects that I didn't mention but I should have mentioned, is all of the open source work that's been done by... in the UK Government and The Notify project that the... or the Notification project was developed by the GDS team that the Canadian Digital Services team went off and was able to take advantage of and start leveraging that out. So we're using a common code base to go off into to build a messaging service that is used and available for departments across... in the Government of Canada to be able to reach out to citizens through email, through SMS and eventually I'm sure to other means of communication as well.

So it's nice to see this leveraging of open source tools but it took teams to be able to sort of... to sit down and to think about what are the opportunities for us to collaborate and what are the things that we can contribute back to make sure that this tool is more bilingual, is more accessible, is more secure? I was happy to say that the Canadian Digital Services has done that. It has really taken a forward thinking approach to using open source software that has been pioneered in other government departments, and been able to find ways to apply that and we just need this to be the norm and not the exception. I don't see why every government department out there, every IT team is looking out and finding ways to leverage tools and patterns and libraries that are being used by other government departments that have similar functions inside their own government department infrastructure.

Richard Pietro:
It's funny because you're really sort of talking about one of the things that I've been harping on for a number of years now, which is sort of the marketing of open Gov, Open Data, open source within the community and governments in general as well, which is these tools exist but I don't think we've done a very good job of explaining their relevance, their value, breaking... and essentially the culture of government, right? Just sort we always talk about siloed governments, and they don't talk to each other.

Mike Gifford:
Yeah.

Richard Pietro:
We always talk about how one of the biggest users of open data sets for example is the government, because now they don't need to go through all the different channels down the red tapes to get access. So I think we as a community need to do a better job of essentially marketing and selling our movements because unlike many movements, we don't have sort of a David Suzuki Foundation behind us to promote and invest a lot of money in some of these things. So we're sort of left on our own on that one.

Mike Gifford:
No, absolutely. I was thinking about how the... a lot of the work that's been done with open data was actually stuff that even inside the government departments before the call for open data it wasn't available. So there were tool sets that's... Sorry, there were data sets that were sitting on in somebody's desk and was there... in their fiefdom and that they didn't want to release or didn't want us to share information back and forth, or agree to a common data standard because they preferred organizing dates one way, and somebody else in another section of the department preferred organizing dates another way.

Richard Pietro:
Yeah.

Mike Gifford:
So you'd have these different varying datasets, but when you suddenly have to start publishing the information under a common open DNS format. You just look like complete amateurs if you have different data formats and otherwise largely identical data. One of the things I think is a huge need with the open data community is not necessarily focusing on publishing more, but trying to get government employees to look at consuming open data more, and what can they do as consumers and how can they engage with other producers of open data to go off and be able to really build a community around those data sets? So maybe there's a privacy issue that a publisher isn't aware of that you could combine different data sets to gather information about individuals with open datasets that are being published or accessed.

Maybe it's just about inconsistencies, that flaws in the data but how do we build those feedback loops within government so that the Ontario government is actively looking at the federal data and looking to contribute to and benefit from the work that's being done on different levels because there's so much data that's out there, but there, I don't think there's a real effort to find, to build a community around those datasets that there's the ability to critique and review and improve those data sets over time.

Richard Pietro:
I need to mention this real quick because I live in Toronto and I've worked very closely with the city of Toronto's open data team, and that's one of the things I give them full credit for. When they decided to revamp their Open Data program a few years ago, they definitely took a leadership position, because they have the resources, they have the budget so compared to a city like Sudbury or Timmins or even say Kingston, they have people that can work on developing sort of a template and that's what they've done when it comes to their open data portal and their Open Data program. So they've created a kind of cookie cutter that any other jurisdiction in Ontario and I'm assuming around the world could literally grab and just put and install right into their government.

Mike Gifford:
One of the challenges... I mean that's great to hear. One of the big challenges that a lot of times, developers and techies in general don't want to leverage other people's work, they want to do it themselves because they think they can do it better and faster and easier. So often we underestimate the complexity of the problems that we're taking on and want to be given the freedom to be able to explore the solution in a way that makes sense for us. But when you do that often you can't take advantage of all of the learnings that you get from building on somebody else's dataset.

Now, it could be that the structure that's built for the City of Toronto is more complicated than will be required for Wolfville Nova Scotia. But there should be some similarities and if there aren't then there should be enough... there's enough small municipalities that have this common need that should be able to unite together under the leadership of the Federation of Canadian municipalities or other organizations to go off, and to build those tools at a scale that's relevant for them that allows them to track the things that are going to help them be able to make better decisions going forward.

Richard Pietro:
So we've talked a lot about open source and things of that nature and websites, but one of... a lot of your work is actually focused more on web accessibility and by that we're talking about things like disabilities like blindness, how can a blind person navigate the web? Now there are some legislations that mandate that websites be web accessible, but they're often not adhered to. Why do you think that is and how can we get over that Trump... over that Trump. How can we get over that hump? And full disclosure I do have a website reopen gov.org and I refuse to believe it would pass the web accessibility test, but I still want to ask the question nonetheless.

Mike Gifford:
So the most important thing about web accessibility is to keep in mind that this is a journey, your website is never going to be 100% accessible you just need to focus on learning more and making sure that every day your site is a little bit more accessible than it was before. If you take that mindset then you can reach out and find some basic tools and find some flaws in it, and look for ways to start asking questions on a regular basis to see what can you do to it to be better? So that's definitely a huge part of the mindset that we try to go off and building with our communications with our clients, and it's been interesting like web accessibility is a really... the big challenges is that there hasn't really been enforcement and everyone is so excited by the newest shiny flashy tools, that they're not looking at how do they address the needs of people with disabilities and that's... people think about this as a really small portion of the population but it's actually pretty significant.

It's not just blind users and deaf users I mean there are certainly those people but it's also one in seven people according to StatsCan. So if you've got a team of seven people there's probably one of them that has a... identifies as having at least one disability. That can be dyslexia, it can be color blindness, it can be mobility challenges. There's so many different ways that people interact with digital tools and with the physical world, but with digital tools as well in this context. If you can write off one in seven people and certainly the Government of Canada can't legitimately write off one in seven people, most businesses can't afford to write off one in seven people but it hasn't sort of been at the forefront.

The other side is I try to think about accessibility in terms of not just the people with permanent disabilities, but there's people with temporary disabilities and people with situational disabilities. So, for instance recently I went off and I kicked a ball for my dog and I have been trying to stay off of it because I think I fractured a bone in my foot.

Richard Pietro:
Oh, wow.

Mike Gifford:
Yeah, this is a month ago. It's like this is still so annoying, but I mean... and I can walk on it but it just... it causes me pain so I don't go very far and I don't walk like I used to until my foot feels better. But that's a clear example of a temporary disability if you are... there're all sorts of people who have temporary disabilities that are because of medication or injuries. There are all kinds of ways even just all the people who have glasses and wear glasses, and if they don't have their glasses with them then they can't necessarily read the email that they would with a proper prescription glasses on. So, that's a really simple example of a temporary disability.

Situational disabilities are another one that a lot of people face, if you've got a nice sunny office and the sun comes in and it's beautiful and whatnot, it's really hard to see your screen to be able to see the content that... whereas opposed if you're sitting in the darkroom. Another great example is how many presentations have you seen that it's really hard to read because they were built on a desktop that has really crisp definition, but then they're broadcast on a LED/LCD projector and with some additional light bleeding in and it's really hard to figure out what it is that there is that they're trying to say with this gray on gray background. So that's a situational disability, if they were doing the presentation at night then it wouldn't be a problem because there'd be no light bleeding in, but in the daytime with sunlight then that's a huge issue for people. We don't think about these implications because we're used to creating content in an ideal environment, and that's just not how people are living and working with technology anymore.

Technology is with us basically 24 hours a day and if we may want to be accessing it on our phone, or through our Google home device, or through virtual reality or through... there are so many ways that we interact and engage with other technology beyond just our desktop computers. So we need to start thinking about how do we think about improving the access of our information and digital content however people want to be consuming it. So right now with the COVID crisis, this is another example where people who are in the public sector were able to effectively communicate and work together because they were in person most of the time and those meetings were in person, and they built tools and approaches to deal with those in person meetings.

When you suddenly bring it so that everything is digital then suddenly maybe somebody has a harder time hearing somebody, and making... and communicating with them because they can't see the subtle gestures that they make, or that there's a slight delay that makes it difficult for them to focus on the work. There're elements where we're just not having a high bandwidth, for instances is there something that can make it very difficult and slow for people to access information, because the sites were built assuming that you had high speed broadband access to navigate it, and that's just not the reality when everyone is working from home, you can't assume that everyone has bandwidth.

Richard Pietro:
Actually it's an interesting point that you bring up because one of the fun stories that I like to talk when I mentioned web accessibility or accessibility in general, is that oftentimes while accessibility is viewed as a cost, right? It takes a lot more time, it takes some work. The benefits are not just for those one out of sevens, a lot of the times those benefits come for the general public like for example, having a much quicker website but the story that I always use is one from Toronto which deals with transit.

Mike Gifford:
Right.

Richard Pietro:
So when you jump on a streetcar or when you jump on a bus, there's auditory signals like you're approaching this stop like there's a... it tells you what stop you're coming to it and you cannot... there's also a visual cue that says you're approaching this stop. Even though I'm fully capable I'm not someone that I would identify as having disabilities. Those are extraordinarily helpful but the only reason why those are on streetcars and subways and buses is because of a lawsuit from disabled communities in Toronto, who said to the TTC, how are we supposed to know what stop we're at?

Mike Gifford:
Yeah.

Richard Pietro:
There's got to be better ways, so they introduce all this technology and it turns out that it helps a lot more than one out of seven people.

Mike Gifford:
It's absolutely true and I remember back when they started adding the automatic door openers to doors at Carleton University and seeing how many people were using those to get in and out of the open doors when they could just open the door. There's nothing stopping them from opening the door but they found it just that much easier just to tap the button than to carry on through.

Richard Pietro:
Or if they're carrying like groceries, that's one of those like sort of situational disabilities that you would think of. You got your hands full of groceries, you bump it with your butt or you bump it with your foot and

Mike Gifford:
Yeah, it's so useful to have that, and curb cuts are another one that people often point to. I think the reality is that we're all trying to juggle so many things, and at this time we're juggling more than ever as people are working from home, and often trying to balance kids and families and work and friends and there's so many things coming at so many different levels. We don't really have a quiet space to focus on the work at hand and be able to off and manage that. So trying to make sure that it's accessible and organized and really written in plain language, so that it's something that people can understand as they're managing their busy, chaotic, hectic lives. I think that's a really important part of accessibility and something that people often overlook.

Richard Pietro:
Okay, so we got to start thinking about wrapping up the episode here, but before we go I want to give you an opportunity. Is there anything that we haven't discussed yet that you want to bring up?

Mike Gifford:
I guess there's two things that I think are worthwhile going off and adding. One is that that we just recently added an accessible business hub, it's AccessibleBusinessHub.ca. and that's essentially a space to organize information not just for businesses but for people with disabilities, and for organizations who are looking at understanding what the implications of COVID are for people with disabilities in Canada, and try have something that's specifically focused on Canadian legislation and best practices here for dealing with this virus. So that's that's a small initiative that we're involved in and excited about trying to look at ways for us to help better support a community of people with disabilities in Canada.

The other thing is we've got a newsletter that we've been putting out for the last seven months, and there's a lot of information there about accessibility and trying to raising awareness about this issue in the various different complexities behind it, because this is something that is a really deep issue and I'm an accessibility expert but there's so much that I don't know, there's so much that is beyond what I've had experience with. So sort of being able to point to other resources and to engage people with the process of learning and becoming part of the journey of looking at web accessibility and to improve their content over time.

Richard Pietro:
Well, you're doing some fantastic work and like you were mentioning you've been in the space for 20 years and I have a feeling you'll be in the space for a lot longer, and we need people like you in the community to keep sort of preaching the choir or not preaching to the choir but singing the gospel, that's the term I'm looking for. So we thank you for that and then please don't stop.

Mike Gifford:
Thank you Richard, you've organized some really amazing interviews and it has been really flattering to be amongst so many of the amazing people that you've brought on to your podcast, so I really appreciate this opportunity to talk with you.

Richard Pietro:
Oh, it was my pleasure and thank you for being part of the interview, and we also want to thank our audience for listening and as usual please leave us a rating or a comment on how to make the podcast better, or if there's any guests or any stories that you'd like to hear. So, until next time let's make it open.

Jun 05 2020
Jun 05

In anticipation of the June 3rd launch of Drupal 9, I spent the weekend a week previous to the launch dusting off the Drupal module I'm most famous for: the Pirate module! What does it do, exactly? Like the WP extension, the Pirate module changes your site's content to pirate-speak on September 19th, International Talk Like a Pirate Day. I took the tagline ("Ah, Squiddy! I got nothing against ye. I just heard there was gold in yer belly. Ha ha har, ha ha ha har!"), which I buried in the configuration, from a non-pirate, sea captain Horatio McCallister. (Spoiler alert: He's not even a real sea captain.) It adds a text filter (previously known as an input format) to whatever field you specify, and on September 19th, that field's content is changed into various pirate-like sayings, interspersed with yarr! and avast! During Drupal's semantic versioning transition, versions 8.x-1.1 forward are intended to be fully compatible with Drupal 9.

The module started out as an internal ticket at Bryght in 2005. Boris Mann came across the Talk Like a Pirate plugin for WordPress, and since both Drupal and WordPress are written in PHP, he wanted it ported over. I took the ticket, 45 minutes before a colleague saw it and, almost 15 years later, it serves as the project I use to keep up with Drupal internals. Thanks to a patch from Snehal Brahmbhatt, later confirmed by a robot, I am able to legitimately claim that the module has full Drupal 9 compatibility. (Unlike the move from Drupal 7 to 8, Drupal 9 is an update, not a rebuild.) It has had an official release for all versions of Drupal since 4.6.

Over the weekend of updating the module for D9, I caught wind of DrupalSpoons, and without fulling realizing the implications, I applied to have the Pirate module mirrored there. (Moshe was excited!) After reading the DrupalSpoons announcement, I understood it to be an experiment in using GitLab as the issue queue and repository platform more directly than the Drupal core and contributed modules projects, which uses GitLab as an underlying provider for their official repositories. As long as code and issues are synced between the two, I don't have a problem pushing and responding in both spaces.

I'm looking forward to September 19th this year and years to come. Yarr!

Jun 05 2020
Jun 05
A man walking on a word cloud


Writing is an exploration. You start from nothing and learn as you go.
- E. L. Doctorow

When you think of a writer, the first thing that would come to your mind is someone who writes novels, blogs, or poems, or maybe scripts. That’s where we go wrong. Today, content is required in every part of the web. Not only does it help your audience create a relationship with your brand but it covers every single aspect of the business. Upkeeping your content will help you upkeep your brand.

Most of the designers don’t see writing as a skill that is required for them. UX designs are not complete without writing. It is important for them to communicate in order to influence. 

Writing Can Be Hard

Writing is hard even for writers. There are times that you have to write about things that you don’t believe in or things that you don’t know about. The more you accept that it is a tough task, the more it becomes easy for you. 

Even though writing is hard, it doesn’t have to be painful. In school, we were asked to write essays which had a specific word count which made most of us assume that writing is a painful and unpleasant experience. 

A writer's job is to help in selling a product, but a designer who writes does more than that. He is responsible for the writing along with the design.

Essential Tips For A Designer To Improve Writing 

With the apps and websites becoming more complex, the need for clear guidance within them has grown. Words convey meaning, and writing in a concise manner helps the users to understand the message your design and content is trying to send. 

Writing will help you become a better designer and a better thinker. In a way, writing is similar to designing. In writing you have to decide which ideas you need in the content and which ones to remove. Similarly in designing, you look for features that your design needs or features that need to be removed from it. 

Writing in a clear and concise language helps the users to understand your content easily and get the desired information. Here are some ways that will help:

A half visible typewriter on a brown colored background with essential tips for a designer to improve writing written on it


When a user searches for something on the web, they usually search for keywords. So, it is important to use clear and front-loaded heading to make it easier for users to reach your webpage. 

Use short sentences that give a clear message. Long and complicated sentences make the readers work harder to understand what they are reading. They would want you to get straight to the point instead of confusing them with complex words and sentences that are not needed. If you do this, it shows that you respect the readers time and attention.

Too many lines can confuse the users so it’s always better to use bullet lists wherever possible. Try to keep it short and clearly emphasize the points that you are trying to make. 

It is crucial to prioritize your content. When a user visits your webpage, he should be able to get the important information in the beginning and continue to read if they want to understand more of the content.

An inverted triangle showing the priority of the structured contentSource: The Ready | Medium

Reasons why writing makes you a better designer

Now that we know of a few tricks to make our writing clear and concise, let’s quickly look at how consistent writing makes you a better designer:

Thoughts

A man sitting on a chair and thinking


When you make a mistake or repeat a thought in your writing you will remove or change it and run your thoughts around it to get better ideas. Writing is great exercise for your mind and it helps you to stay organised and logical in your thinking. 

Growth

A man walking on a graph

Another benefit of writing is that it makes you a better listener which is a crucial skill for designers. The more you read and explore the world of writing, the more you become involved with creativity.

Creativeness

A man with books, bulb, pencil floating around him


Writing makes you creative! A designer with great writing skills brings out more creativity in his designs. Keeping a small notepad to make notes when you read, talk or observe something helps you gather ideas for designing. 

You can try the pen and paper magic. Writing things down using a pen and a paper benefits your brain. Writing everything down, whether it’s during a user interview, or you’re conducting research or testing, helps you remember and understand better.

Clarity

A woman standing on a ladder and cleaning the mind with a broom


Having clarity in your writing improves your understanding with the users. It not only helps you in supporting your reasoning but also to answer any sort of objections made on your content. 

It is important that the readers understand what you write. Your writing should be so clear that even a reader who is new to the subject is easily able to understand it. After you are done writing, you can ask a non-designer to give it a read so that you are able to get an idea if the audience will be able to understand your content. 

Leadership

A man talking giving a presentation in front of the audience


Writing makes you a better leader. When you start writing, you research the particular subject.  More and more writing will help you get clearer thoughts and explain your concepts better to your readers and listeners and support your reasoning. 

Conclusion

It is important to write friendly content so that when a user engages with your website he feels like he is engaging with a human rather than computers.

You can always keep trying and find resources to improve your writing skills. Read as much as you can. It is important to explore to keep your thoughts moving and enhance your creativity both as a designer and writer. 

Jun 05 2020
Jun 05

As I'm sure you already know, Drupal 9.0.0 was released yesterday which was the result of thousands of people in the Drupal community coming together to make Drupal even more amazing. The release has a new Drupal 9 landing page and a Drupal 9 video that highlights the journey of Drupal and the Drupal community. We are truly better together.

You are also most certainly aware of the tragic killing of George Floyd as a result of police brutality and the resulting protests throughout the United States and other parts of the world. As an American, it sickens me to see how the Black community is treated in the US. Systemic racism is real and real change is needed urgently. Watching the peaceful protests throughout my country, I feel outrage, sadness, and hope.



Source: WYDAILY

For better or worse, I've been on Twitter a lot over the last couple months, and during the last couple weeks, it's been difficult to reconcile the content in my Twitter feed. Violence and anger and grief from yet another senseless tragedy in the Black community. Excitement and pride and joy from years of hard work on Drupal 9. I've struggled to take pleasure in the Drupal 9 release while watching the heartbreaking events unfold in the news.

I wanted to write a post about how amazing Drupal 9 is and how amazing the Drupal community is. Yet I'm preoccupied with thinking how I can make things better, how I can make the world better. Knowing many in the Drupal community, I am certain I am not alone with these thoughts and feelings. I did some research and have found some reactions from the Drupal community in light of recent events that I would like to highlight.

Drupal leadership

It's always important when you are part of a company, organization, or community that the leadership makes a clear statement on pressing social issues. I was encouraged by Dries' Drupal 9 release announcement that he made this statement:

I have always believed that Drupal is a force for good in the world. People point to our community as one of the largest, most diverse and most supportive Open Source projects in the world. While we make mistakes and can always be better, it's important that we lead by example. That starts with me. I am committing to the community that I will continue to learn more, and fight for equality and justice. I can and will do more. Above all else, it's important to stand in solidarity with Black members of the Drupal community — and the Black community at large.



Source: Dries Buytaert blog post

The Drupal Association (DA) published a Statement of Support and Taking Action that includes a list of encouraged actions for the DA team and the Drupal community at large.



Source: Drupal Association blog post

The Drupal Association values equity, diversity and inclusion, and we recognize we still have work to do to create meaningful change. Here are the ways in which we are encouraging our team to take action. We are sharing in hopes that you will take action, too.

I was also motivated by the Twitter thread from @xjm, the Drupal 8 and 9 core release manager.

[1/8] The powerful will do everything they can to stop us from making real change. Protest now, but also work in your community to protect voting rights. Help people register. Advocate for the right to vote by mail so that disabled and working citizens can vote.



Source: @xjm Twitter thread

These are great examples of calls to action from our Drupal leadership in support of the Black community. So how can the Drupal community help bring forth positive change?

Individual action

At an individual level, some concrete acts are listed above from our Drupal leadership. But it's crucial to hear and amplify the voices of the Black community. Bernice King, daughter of Martin Luther King Jr., has some actionable advice.



Source: Bernice King's Twitter account

And, Barack Obama wrote a thoughtful article on "How to Make this Moment the Turning Point for Real Change".



Source: Barack Obama Medium post

For white people or anyone who's not well educated on racism, there is a lot we can read and watch in the Anti-racism resources compiled by Sarah Sophie Flicker and Alyssa Klein.

To donate, here is a list of 115 Ways to Donate in Support of Black Lives and Communities of Color.

Organizational action

It is vital that businesses and organizations leveraging Drupal make a stand against injustice. I searched the home pages and blog posts from the top 50 Drupal organizations on drupal.org to see what they've been saying about the recent tragic events. I also looked at their team or leadership pages to get a sense of their diversity.

I was surprised and frankly saddened to only find ONE article on the topic.



Source: Four Kitchen's blog post

Todd Ross Nienkerk from Four Kitchens wrote "Our Commitment to Social Justice and Racial Equity". Thank you, Todd, for making a statement, donating to causes for justice, and helping your team with resources and education.



Source: Four Kitchens

I encourage other organizations that benefit from Drupal to make a stand and support the cause for justice.

As for organizational diversity, it was pretty much as expected. Most American and European companies appear to be predominantly white. We do have a fair amount of geographical diversity within the Drupal community, so we do see significant engagement within some non-white regions such as Latin America and India. As organizations, we need to continue to push for inclusivity and diversity because representation matters.

Community action

As a community, we have embraced the Drupal Diversity and Inclusion (DD&I) initiative. And, we have taken some active measures to increase representation within our events and community. But, even our DD&I leadership seems to be lacking in some aspects of diversity as it appears (based on my own personal bias looking at photos) that the team is predominantly white. This is not to dismiss the important work the team has been doing, though everyone knows we can all do better.

Looking to other Open Source communities, I am heartened by the GatsbyJS fundraiser for Black organizations fighting for justice. They will match donations up to $25,000 until June 8, 2020. I would welcome a similar initiative within the Drupal community, perhaps right after the GatsbyJS campaign is done. GatsbyJS has gone further with their support of the protests by postponing Gatsby Days. And some Gatsby team members have written about the topic recently including "My White, Blissful Ignorance" by Jason Bahl.



Source: @GatsbyJS Twitter thread

I do see some positive movement in the Drupal community as well. Heather Rocker, the DA's Executive Director, is looking for training organizations to help underrepresented groups.



Source: Heather Rocker's Twitter account

I also saw Avi Schwab is matching donations up to $1,000 via the #DrupalCaresLocal hashtag. Thank you, Avi!



Source: @ajschwab Twitter account

Drupal for justice

Let's make Drupal stronger by helping make the world a more just place.

If you know of other ways the Drupal community is helping in the fight for justice, let me know and I'll add them to this post.

Apologies, my old website is still on Drupal 6 and looks particularly bad on mobile. I've only started posting here again after many years and I've been very busy reviewing Drupal 9 patches and surviving a pandemic. Please ignore the cobbler's old shoes for now, thanks!

Jun 04 2020
Jun 04

If you’re running Drupal 8, first of all, don’t worry! You still have almost a year and half to upgrade. Drupal 8 (like Drupal 7) will continue to be officially supported until November 2021. While time does fly by quickly, that is plenty of time to plan for your next site upgrade.

Most of the popular modules, if not all, are already ready for use in Drupal 9. And the underlying architecture remains the same. In fact, the latest version of Drupal 8 (8.9) is essentially the same as Drupal 9.0. This is all by design.

When Drupal 8 was released, it was a major rebuild of Drupal, with so many things added, changed or reworked, all in the name of keeping Drupal powerful and relevant for years to come. Those changes had a cost, however. The path to upgrading was (for most) a long and difficult process, often akin to rebuilding your site and starting over.

If you’ve gone through the upgrade to Drupal 8 already, congratulations! You already have a modern CMS that is ready for an easy upgrade to Drupal 9. If you’re still running Drupal 7, you’ll want to read more about the upgrade process on a different post, and decide soon how you’d like to proceed.

Jun 04 2020
Jun 04

Lazy builders were introduced in Drupal 8's render system to solve the problem of pieces of your page that have a low cacheability affecting the cacheability of the whole page. Typical uses of this technique are with entire render arrays which are handed over to a lazy builder.

However, in retrofitting an existing site to make use of caching more effectively, I found that we have a large amount of content that would be cacheable were it not for a single string. Specifically, we have a DIV of the details for a product, but also in that DIV there is the serial number for the user's specific instance of that product.

The whole of this product DIV was output by a Twig template. I could have ripped this up and remade it as a big render array, putting the lazy builder in for the serial number, but this seemed like a lot of work, and would also make our front-end developers unhappy.

It turned out there was another way. The render system deals with placeholders for lazy builders automatically, so you typically will just do:

$build['uncacheable_bit'] = [
  '#lazy_builder' => [
    'my_service:myLazyBuilder',
    [],
  ],
];

but as I learned from a blog post by Borisson, you can make the placeholders yourself put them anywhere in the content and attach the lazy builders to the build array. This is what the render system does when it handles a '#lazy_builder' builder render array item.

One application of this is that you can pass the placeholder as a parameter to a twig template:

// Your placeholder can be anything, but using a hash like the render system
// does prevents accidental replacements.
$placeholder = Crypt::hashBase64('some_data');

$build['my_content'] = [
  '#theme' => 'my_template',
  '#var_1' => $var_1,
  // This is just a regular parameter as far as the Twig template cares, 
  // output with {{lazy_builder_var}} as normal.
  '#lazy_builder_var' => $placeholder,
];

$build['#attached']['placeholders'][$placeholder] = [
  '#lazy_builder' => [
    // The lazy builder callback and parameters.
    'my_service:myLazyBuilder',
    [],
  ],
];

With this approach, the Twig template just needed some minor changes. It doesn't care about the lazy builder; all it sees is the placeholder string which it treats like any other text. The render system finds the placeholder in the '#attached' attribute, and handles the replacement when the rendered template is retrieved from the render cache.

The result is that we're able to cache much more in the render cache, and improve site performance.

Now I just have to figure out the cache tags...

Jun 04 2020
Jun 04

Leading brands, enterprises, and organizations are flocking to advanced and robust content management systems such as Drupal because they realize the need to focus on creating the best digital experience possible for their customers and website visitors.

However, as you already (hopefully) realize, building a website with a great UX is not enough to sustain a steady growth in your website traffic and engagement. You need to continuously audit your website’s performance and effectiveness. 

That is why we developed Drupal Audit - a FREE platform to help you measure and analyze your Drupal website performance.

In light of the fact that Drupal 9 has been released this week; a Drupal site audit is probably on your mind anyway, and Drupal Audit will make your life easier to pinpoint all performance related issues that need to be addressed in preparation for upgrading  your website to Drupal 9 (if you haven't made the upgrade yet).

25 Questions That Guarantee A Successful Launch

Using Drupal Audit you can benchmark and test performance across all key aspects of your Drupal website. In a matter of seconds Drupal Audit will provide you with the following:

Drupal Performance Audit

Drupal Audit will measure metrics such as:

  • First Contentful Paint
  • Speed Index
  • Largest Contentful Paint
  • Time to Interactive
  • Total Blocking Time
  • Cumulative Layout Shift

Drupal Accessibility Audit

All opportunities available for you to improve the accessibility of your Drupal website and user experience for users of assistive technology, like a screen reader:

  • Names and Labels
  • Contrast
  • Navigation

… and many more key accessibility metrics and elements.

Drupal SEO Audit

Drupal Audit will measure your on-site SEO performance and ensure that your Drupal website pages are optimized for search engine results ranking. This audit will cover key issues such as:

  • Content best practices
  • Meta tags
  • Links
  • HTML formats
  • Page indexing related issues
  • HTTP status
  • Data structure

… and much more.
 

All the aforementioned audits cover both desktop and mobile performance.

Enhance Your On-Site SEO Performance

How To Use Drupal Audit?

All you have to do is simply insert your Drupal website URL and hit START AUDIT.

Immediately, the Google Lighthouse powered Drupal Audit platform will give you insights into your Drupal website performance and automatically generate best practices and recommended steps to take to enhance your Drupal website performance.

Note: The Drupal Audit tool has been tailored to consider the specific characteristics of Drupal websites when it comes to best practices - as Google Lighthouse measures against the needs of simpler and lighter websites with less complex requirements.

Need a reliable support partner?

Jun 04 2020
Jun 04
Reading time 6 mins clock

As marketers and content editors, one of your biggest frustrations is not getting content out quick enough, right?

Not through lack of trying - trust me I’ve been there. 

You're trying to get images to sit right on the page, the layout doesn’t ooze awesome user experience but it’s beyond your skills to fix it. Now, we’re stuck in limbo of publishing content quickly but not quite right or waiting goodness knows how long for your development team or agency to fix it. If your internal team or agency don’t run a tight ship when it comes to support services, you’ll really have no idea how long you’ll be waiting.

But what if I told you that there’s a new(ish) kid on the block who can remedy that and help you become self-sufficient?

Drupal. Yes, we know it’s not new but Drupal 9 is.

There’s a mountain of information out there about all the exciting technical advantages which will make developers' lives easier with both Drupal 8 and the newly released Drupal 9. 

But, as the team which spends the most time creating amazing online customer experiences, shouldn’t we be talking about how Drupal 8 and 9 will end your frustrations.

Yes!

So here we go...

Easy Content Editing

When information changes, which it does, updating your content is key to giving your website visitors the best experience. Your team originally spent ages meticulously writing content and then equal amounts of time making it look alluring on the page. 

Now you’re editing content and continually flipping back and forth between edit and preview mode, trying to understand the connection to the rest of your content.

Drupal 8 and 9 means this is a thing of the past. Your content team can edit on-page surrounded by the context of the rest of the page just as your visitors would see it. 
With the introduction of an in-place editor, your content editing team can select any editable element on the front end of your website and edit it directly in place without the need to go anywhere else.

The in-place editor uses a What You See is What You Get (WYSIWYG) experience meaning your content is shown as it will appear as shown in the image below so no need to learn any HTML to get it formatted correctly.

This in-place or inline editing experience has been created with content editor’s in mind and it’s not the only easy way to edit or create content. Whether you’re making a quick change from your mobile before a meeting or rewriting a whole paragraph on the train while commuting, you no longer need to be tied to your desk to update content because the backend of your site is mobile-friendly.

person using phone at train station by Daria Nepriakhina on Unsplash

Content Moderation

How often does your content get stuck in the review cycle because there’s no set workflow or anywhere for you to approve content for publishing?  

In terms of moderation, Drupal has introduced the use of workflows to allow you to keep track of your team’s content flow using ‘states’ and ‘transitions’.

State: States are the different statuses your content can have (draft, published etc). The default states are "Draft", "Published" and "Archived". You can set up new states, such as "To Review" or “Approved” to manage your workflow and content better. Your workflow can be as basic or granular as you need to manage your team and content best.

States on Drupal

Transition: After you set up the states, you can create the actual workflow between them. You decide which direction content moves from state to state for example, from ‘draft’ to ‘ready for review’. 

Transitions on Drupal

Beyond just being able to create workflows and determine the direction in which content can flow, you’re able to choose which level of user can and should move content from one state to another. You wouldn’t want a junior content writer approving content for publication however you may have a state where your team can proof one another’s work on a peer-to-peer level for basic things such as grammar, spelling and fact-checking.

With the use of content moderation, there are times when your content needs approval from other teams or departments in your organisation. The legal team, for example, may want to approve your content message isn’t going to cause any legal issues. For a charity, the fundraising team may want to ensure that the content is on message for their current goals.

Revisions have been around for a long time, however, they haven’t always been used to their full potential. Drupal 8 and onwards gives you better visibility of revisions. Track who changed what and when in your content using revisions across more areas of your website. A well-trained content or web editor team will also be able to log a message to any edits so everyone knows why a change was made.

Drupal keeps a log of all revisions in the system, so you can easily revert to a previous version if and when needed.

Person typing on laptop by Glenn Carstens-Peters on Unsplash

Layout Builder

How much time and budget is spent on your development team or agency fixing page layout issues which seem so simple to just ‘move it over there’.

Well it’s time to refocus your budget back onto core marketing activities because the long-anticipated ‘drag-and-drop’ layout builder is Drupal’s answer to Wix and SquareSpace. 

You can easily and quickly create layouts using drag-and-drop meaning you no longer have to submit a support ticket to your agency or wait for your internal development team to make layout changes in your sites theme that prevent you from publishing your content and creating positive customer experiences.

There are three ways you can use the layout builder:

  1. Layouts for templated content. The creation of "layout templates" that will be used to layout all instances of a specific content type (e.g. blog posts, product pages).
  2. Customisations to templated layouts. Override your layout templates on a case-by-case basis.
  3. Custom pages. The creation of custom, one-off landing pages.
Person Drawing Website Layouts by Avatar of user Davide Baraldi on Unsplash

Digital Asset Manager

Have you found you and your team have ‘favourite’ images that seem to get used over and over again? Are images always saved onto the content author's machine?

Digital Asset Management is becoming increasingly important and Drupal has recognised this. If you don’t already have a Digital Asset Manager elsewhere, this is a great start. With the introduction of collections, you can save files and images as collections that are all related. You can add labels to folders, files and collections for easier sorting and searching.

The file type you can store within Drupal is endless with the ability to add extra file types to your library (although some may need extra modules to work for more complex needs).

5 media types on Drupal 8

Your files can be added either individually or using bulk upload. 

The feature we really love is that when you’re adding media to your library you can set the maximum number of times that media can be embedded in your content. Meaning one image isn’t over used across your site.
 

person talking a photo of sunset by Vitaly Sacred on Unsplash

So, Why Should You Care About Drupal 9?

It’s boring, we know, but understanding why Drupal 9 exists as a major release is important to everyone. So, let’s get it over with…

Until the release of Drupal 9, each new version (Drupal 6, 7, 8 etc.) was considerably different. They boasted new and exciting features that Drupal website owners and developers had never seen before, but... 

Upgrading your website, let’s say from Drupal 7 to Drupal 8, meant a complete rebuild of your website and a full content migration - almost as much work for developers (and cost) as moving from WordPress to Drupal.

Upgrading to Drupal 9 from Drupal 8 will be significantly less effort and costly to everyone’s delight and that’s the future of Drupal.

With little to no new features for marketing or otherwise, Drupal 9 has been released as an opportunity to clean up the code and remove any functionality that is no longer needed for the future, before Drupal 8 is no longer supported in November 2021.

Drupal 9 is not a big deal, it’s the start of a new future for Drupal using a ‘continuous innovation model’.

The big deal about Drupal 9 is that it shouldn't be a big deal.

Dries Buytaert, Founder and Project Lead of Drupal

Dries Buytaert

Founder and Project Lead of Drupal

Plan for the Future

If you’re one of the almost 20,000 UK sites still running on Drupal 7 or below, it’s really time to start planning for the future. Your final hurdle in upgrade fatigue will be Drupal 8. After which, using Drupal’s new model will relieve your development team or agency of needing to rebuild your website each time a major upgrade is required.

Ultimately, it’ll be one of the last times your budget will need to be diverted away from core marketing activities for anything more than a rebrand or redesign which is planned and dictated by you and your organisation.

Looking to upgrade your Drupal website and take advantage of becoming self-sufficient, publishing content quickly and correctly? Contact our team at [email protected] or call 01925 320041

Want to upgrade your website but don’t know where to start? Read Dan’s blog on how upgrading your Drupal website is Easy if it’s done smart.
 

Jun 04 2020
Jun 04

The Drupal CMS has always been at the forefront of ambitious digital experiences, even when these were confined to the web. As a viable open-source equivalent to proprietary platforms such as Sitecore, Drupal has remained the go-to choice for enterprise users throughout its nearly 20 year long lifecycle. 

Drupal has come a long way since its early days. Each major version represented a significant improvement over the previous one, with Drupal 8 introducing many of the most sought-after features while optimizing the experiences of developers, content editors and site builders. 

The just released version 9, then, represents the most significant shift the CMS has seen to date and paves the way for a new outlook on digital experiences. This post will provide an overview of some of the most notable novelties with Drupal 9 and why they’re so groundbreaking for the digital sphere.

First off - Gartner’s abandoning of the Magic Quadrant for WCM

Gartner's DXP Magic Quadrant (Source: Gartner)

Gartner, along with some other notable people in the industry, was one of the first to realize the shift in the collective mindset from web content management to digital experience management. 

To this end, they abandoned their WCM Magic Quadrant in January 2020, prioritizing instead the DXP Magic Quadrant, where the Drupal-based Acquia is positioning itself as a key player

With the release of Drupal 9 and Acquia’s recent acquisitions, this sets the stage for a new era for digital experiences, Acquia is able to position itself as the leading open-source digital experience platform, competing even with established proprietary solutions. 

New front-end and back-end themes

Not wanting to fall behind with the times, users of Drupal have pointed out its outdated front- and back-end themes. To this end, development of the two revamped themes began, with the Claro back-end theme released in late 2019 and the front-end theme, Olivero, planned for 9.1.

The new themes feature a modern, slick look, which assures a good user experience that never comes at the expense of accessibility. Having a reputation as a very accessible CMS, Drupal 9 retains its commitment to accessibility with the two new themes.

Vetted and tested by a huge community of experts

Incredible amounts of organizations and individuals in the Drupal community have during the past months been busy getting everything set for the release of Drupal 9. Updating and removing dependencies began well over a year ago, but since the start of 2020, we’ve seen many initiatives focused exclusively around getting 9 ready for a stable June release. 

Here are only a few of the most notable people and organizations that definitely deserve a shout-out: Gábor Hojtsy, the release coordinator; Matt Glaman, the author of drupal-check; the 1xINTERNET team for their commitment to the Porting Weekend and the release celebration; and many others dedicating their time to the project.

Such thorough vetting and testing logically also guarantees stability and security, in which previous iterations of the CMS already excelled, but which Drupal 9 has prioritized even more strongly. 

API-first

Drupal has committed to being an API-first framework, and version 9 continues with this trend. The REST API allows it to function as a “headless” or “decoupled” CMS, enabling numerous possibilities for integration. 

These integrations can either be with other web frameworks, e.g. e-commerce and/or front-end, or they can even go beyond the web thanks to Drupal’s powerful multichannel capabilities, which version 9 is likely going to further develop and streamline.

Unprecedentedly easy upgrade path

By now, you might be wondering “But where are all the groundbreaking changes you’ve touted?”. Well, this is exactly what’s so groundbreaking about this major release. As Dries Buytaert, Drupal's founder and project lead, has stated: “The big deal about Drupal 9 is … that it should not be a big deal.” 

Drupal 9 capitalizes on Drupal’s existing strengths, while prioritizing a smooth and easy upgrade process focused on backwards compatibility. Users who make sure to keep their Drupal 8 codebases updated to the latest minor version will be delighted by an unprecedentedly easy upgrade. 

Basically, the main goal of the 9.0 release is helping as many users as possible update to the most up-to-date version, while subsequent minor releases will be able to innovate more and deliver new features. 

Open-source digital experience framework

The release of version 9 truly cements Drupal as a leading open-source digital experience framework, combining all the benefits of open-source software with powerful enterprise capabilities.

Due to the rising need for digital experiences, software needs to at once be future-proof and prioritize innovation in order to still be relevant in light of future trends and disruptions. As a framework that’s only grown more and more relevant throughout the 20 years of its existence, Drupal is sure to remain a key tool in the future of digital experience. 

Conclusion

The release of Drupal 9 represents a major milestone in both the framework’s evolution and in digital experience management. We’re very excited to see what this will mean for the project and its community, as well as the digital industry as a whole. 

If you’re on the latest version of Drupal 8, you can update to 9 completely hassle-free by simply removing deprecations. If you’re still on an older version, or even on a different CMS, you can leverage Acquia’s CMS Migrate tool to migrate smoothly to Drupal 9. 

If you have any trouble migrating, or need custom functionality for your new Drupal 9 site, give us a shout out and we can help you tailor Drupal’s powerful features to your specific needs (we've already migrated a website from Drupal 6 to Drupal 9 before yesterday's official release!).

Jun 03 2020
Jun 03

PORTLAND, Ore.  June 3, 2020—Drupal, the most powerful enterprise open source content management system, is launching the latest—and most comprehensive—upgrade to its popular software today.

Drupal 9 comes with even more of the cutting-edge features that Drupal developers and users love. One out of every 30 websites in the world including Lufthansa, the CDC National Prevention Information Network, the European Commission, Médecins Sans Frontières/Doctors Without Borders, NASA, GRAMMYs/Recording Academy and Stanford University trust Drupal as the platform for their ambitious digital experiences.

Drupal 9 - Continuous innovation in technology and user experience

The updated version delivers powerful new features and an enhanced user experience. These features empower Drupal’s vision for the next generation of the web and include:  

  • Dramatically easier tools— a new layout builder, WYSIWYG media management system and content workflow tools make Drupal much easier to use. It enables users to take advantage of Drupal's robust technical architecture more easily than ever before. 
  • Continuous innovation—powerful new features delivered continuously, keeping Drupal at the cutting edge of the web. 
  • Easiest upgrade in a decade—and Drupal’s commitment to easy upgrades in the future means never having to worry about a major replatforming to stay up to date. 

One of the key reasons Drupal has been successful is we have always made big, forward-looking changes,” says Dries Buytaert, founder and project lead of Drupal. “As a result, Drupal is one of very few CMS platforms that has stayed relevant for 20 years." 

One of Drupal’s key users says they depend on Drupal’s easy-to-use interface to keep their content up-to-date—even when their developers aren’t immediately available. 
 

In a case study about how the ACLU uses Drupal, the ACLU team says, "With Drupal's new capabilities to create and administer content, including robust media support ...[and] full layout control, without the aid of developers, ... [Drupal] empowered the ACLU to be more dynamic and responsive to external events." 
 

While this new version makes it easier for non-developers to contribute to dynamic web platforms, it also continues to advance the underlying technology at the forefront of digital experiences—enabling developers to build the next generation of the web.

"Drupal's API-first architecture puts it years ahead of competitors as a decoupled or headless framework,” says Tim Lehnen, chief technology officer for the Drupal Association. “Drupal can serve as the content hub for rich experiences built with the latest technologies, including modern javascript frameworks like React, Angular, or Vue, or even with emerging channels like digital assistants and AR/VR applications." 
 

Buytaert says a key focus was making the process of upgrading as easy as possible for its users. 

"Drupal's innovation has only accelerated since the release of Drupal 8 four years ago,” says Buytaert. “Historically, major upgrades have been costly. With Drupal 9 we wanted to innovate quickly and provide an easy upgrade path from Drupal 8. We did exactly that! The upgrade from Drupal 8 to Drupal 9 is the easiest major upgrade in the last 10-plus years."

Powered by a global community

Drupal is a true open source project, leveraging the expertise of tens of thousands of developers around the world. Drupal has earned a reputation for security, performance, accessibility and scalability that is unparalleled in the CMS ecosystem. Drupal's core strength has always been its ability to manage structured data—written once, and reused anywhere—and the Drupal community has doubled down on this with Drupal 9. 

To upgrade or get started

If you’re ready to experience Drupal, discover how easy it is to build or integrate your digital portfolio by visiting drupal.org/9

Need some help onboarding with Drupal or building a digital experience from scratch? There are many agencies in the Drupal community that would be happy to help.

About Drupal and the Drupal Association

Drupal is the open source content management software used by millions of people and organizations around the world, made possible by a community of 100,000-plus contributors and enabling more than 1.3 million users on Drupal.org. The Drupal Association is the non-profit organization dedicated to accelerating the Drupal software project, fostering the community, and supporting its growth.

### 

For more information contact Heather Rocker,  [email protected]

Jun 03 2020
Jun 03

Most websites, even ones that have a perfect URL structure from the beginning, may need URL redirects sooner or later. URL redirects are small tasks that carry a big value. Since one of our fields of expertise is Drupal website support & maintenance, we often face website redirect tasks.

Today, our team shares their thoughts on what redirects are, in what situations they are needed, how they can help you, and how to redirect a website URL on a Drupal website with the help of the Redirect module. This will also include the simplest answer to the popular question “How to create a 301 redirect?”

What is a website redirect?

URL redirection, also known as URL forwarding, is a technique used on the World Wide Web that takes one website URL and points it to another. When someone visits the original address, they are taken to a new one. A URL redirect tells a user’s browser where to find the content they are looking for.

Temporary and permanent redirects

Web page redirects can be temporary or permanent. They are used to inform search engines whether the page has changed its address forever or this is just a temporary measure. They are associated with the corresponding HTTP status codes — 301 and 302 (the most widely used ones on the whole list of statuses from 301 to 307):

  • 301 – The page has moved permanently.
  • 302 – The page has moved temporarily.

Why redirect a website URL: common scenarios

If a page is no longer available at its old address, a redirect will prevent your visitors from getting a 404 “Not found” error when they visit it (from saved bookmarks, shared links, and so on). Keeping your website clean from broken links helps you reduce the bounce rate and improve session duration, which is very important for SEO.

Redirects are also a great way to inform the search engines that the new address is now official and should “inherit” all the SEO achievements of the old page. According to Moz (the creators of the famous SEO toolset), 301 redirects pass between 90-99% of link equity (ranking power) to the new URL. This means you are not losing any of your previous SEO efforts.

Here are the situations when it may be necessary to redirect a website to another URL. Depending on the situation, this can apply to the entire website or single pages:

  • Moving your site to a new domain (if you have purchased the domain of your dream, if you have to change domains due to intellectual property issues, or in other situations).
  • Forwarding multiple domains to a single one (if you have purchased multiple domains, if users regularly misspell your domain in some common way, or in other situations).
  • Forwarding subdomains to your main domain (for example, if you initially had “blog.mywebsite.com” and now you want to make it “mywebsite.com/blog”).
  • Directing all traffic to a single (“canonical”) URL (if a website uses both a WWW and a non-WWW version).
  • Changing a URL structure due to website redesign.
  • Redirecting duplicate content to the original page to avoid the confusion of search engines and users.
  • Fixing a mistake or a typo in a URL (web addresses need to be both human-readable and SEO-friendly, so sometimes fixing an important issue in them is worth a redirect).
  • Saving a situation, like when a wrong URL has been mistakenly shared with many people (e.g. via a newsletter to thousands of customers).
  • Creating a simple, brief, and catchy URL for print advertising campaigns.

How to redirect a URL with the help of the Redirect Drupal module

Sites built on content management systems (aka CMSs) offer hassle-free ways to redirect a website URL. Drupal is no exception. Of course, this can be done by a developer in the .htaccess file on the server, but there are much more user-friendly tools that offer intuitive interfaces. One of these for Drupal sites is the Redirect module. It has been recently updated by its creators.

The module allows you to easily create manual redirects from one URL to another and maintain a canonical URL for all content. This contributed module comes as a package of three submodules:

  • Redirect. It allows you to redirect a website URL to another one.
  • Redirect 404. It logs 404 errors and allows you to create a redirect for these pages.
  • Redirect domain. It allows you to perform a redirect between different domains.

Redirect Drupal module

By just enabling the main module, you get a simple interface that makes it immediately clear to non-tech savvy users how to do 301 redirect and more. We have also recorded a video tutorial that is waiting for you at the end of the page.

On the Configuration — Search and metadata — Redirect page, we see the page where all your redirects will be stored. You will be able to easily find the necessary ones through filtering (by source, destination, status code, and original language). It’s possible to edit or delete them from this page.

Redirect module page on a Drupal website

We need to hit the “Add redirect” button and then enter the details:

  • the source URL
  • the destination URL
  • the status (from 301 to 307)

The default status is 301, which is recommended, but you can change it on the Settings tab if needed.

Add a URL redirect on a Drupal website

The module has plenty of capabilities that developers love it for (Views API integration, integration with Drupal's page cache for performance optimization, redirect counter, automatic cleanup of inactive redirects, and much more). An important point is the module can team up with the Pathauto module to automatically generate path redirects and make sure the URL changes do not break the existing links.

Need help with your URLs?

Send tasks to experts! We have shared a basic guide on how to redirect a URL to another URL in Drupal. Our Drupal team is always there for you if you need:

  • assistance in installing and configuring the module
  • recommendations from our SEO team on your URL structure
  • more consultations on how to forward or redirect a URL
  • help with website redirects of any complexity
  • and much more

Drop us a line today and let’s make sure your customers and search engines find your pages at the right addresses! We will also be glad to hear from you about any ideas on site optimization, design, or development.

[embedded content]

Jun 03 2020
Jun 03

Composer logoWe recently debuted our brand-new, 7-hour, live-instructor, online Composer Basics for Drupal Developers workshop to alumni of our flagship Drupal Career Online program. We've been gearing up for this launch for well over a year now, teaching select parts of the curriculum as part of Drupal Career Online, at various Drupal events as in-person workshops and presentations, as well as our own experience working with Composer with our clients. 

We believe that the result is the most complete and best-practice-focused Composer training available for Drupal developers today. (And a super-helpful 50-page reference document that comes with the course.) Not only does the workshop cover the absolute basics of Composer, but it also includes in-class examples of converting an existing site to using the new drupal/recommended-project dependencies, as well as how to handle Git code conflicts in composer.lock files.

We are thrilled with the impact the course has had based on our beta-testing of the workshop:

I've attended multiple DrupalEasy workshops and the Composer Basics workshop helps demystify the tool that can seem like a blackbox for so many developers. Mike is a great teacher. He makes sure to thoroughly explain and demo confusing topics so everyone understands the problem and the solution.
- Bo Shipley, May 2020 workshop participant

The material in the Composer Basics handout is thorough and a great standalone resource.
- Micah Burnett, May 2020 workshop participant

Understanding Composer is a necessity when working with modern Drupal, Mike makes everything clear and understandable so you can get out there and make something great.
 - May, 2020 workshop participant

This course will actually enable me to utilize composer in my daily workflow. Erased my fears of the unknown. 
- May, 2020 workshop participant

The first public offering of this workshop will be on Monday, June 15 from 1:30-5pm ET (part 1) and Tuesday, June 16 from 1:30-5pm ET (part 2). The cost is $250, but if you signup for our newsletter (via the form in the page footer below), you'll receive a 25% off promo code. 

The workshop includes the 50+ page PDF of the material. Topics covered in the workshop include:

  • What is a dependency manager?
  • Composer fundamentals
  • Creating a new Composer project
  • Autoloader basics
  • Using Composer with Git
  • Version constraints
  • Troubleshooting updates
  • Deconstructing the drupal/recommended-project template
  • Customizing Drupal scaffolding files.
  • Converting an existing Drupal 8 codebase
  • Dealing with code conflicts in composer.lock
  • Adding dependencies from private repositories
  • Helpful Composer plugins

Interested? Check out all the details and register today! Interested in a private workshop for your development team - contact us to make it happen!

Jun 03 2020
Jun 03

Drupal 9 will be launched today. After so much hard work, collaboration, anticipation and excitement, it is finally here.

Although a lot of discussion is happening around the upgrade and possibilities it brings along, the final product can only be as good as the process itself.

The good and important news is that moving from Drupal 8 to Drupal 9 should be really easy — radically easier than migrating from Drupal 7 to Drupal 8.

As a site owner, here’s what you need to know about the new release and what to take care of to make the process easier without many glitches.

The Drupal 9 Release and Timeline

The goal of Drupal 9 is to make it an easy upgrade as much as feasible from Drupal 8. Unlike most of the previous upgrades, D9 will be different in terms of:

  • Updates of dependencies to versions that stay supported.
  • Removal of our own code that we deprecated with removal before Drupal 9's release.

The new release will be a cleaned-up version of Drupal 8. Built on the same code base with deprecated code removed and third-party dependencies updated, Drupal 9 is not a reinvention of Drupal.

a horizontal table with Drupal versions

The next question is what happens to Drupal 7 and 8, then?

One of the major dependencies of Drupal 8 is on Symfony 3. Since Symfony 3 enters the end of life in November 2021, Drupal 8 support will be lifted around the same time. A long-term-support (LTS) minor release of Drupal 8 will be released alongside Drupal 9 and supported until November 2021.

No new features will be added to Drupal 8 and no new minor releases will be made available of Drupal 8. It will only receive patch releases after which.

Drupal 7 will also stop receiving community support after November 2021.

Data migration features in Drupal core to move from Drupal 7 to Drupal 9 will be active until then since they are required for a stable migration. 

The Upgrade and The Tips

The only caveat is that you need to manage is the "deprecated code". Here’s what you need to take note of, for an easiest upgrade experience to Drupal 9:

drupal 9.0 api

  1. Keep Core Up-to-Date: As mentioned above, Drupal 9 is Drupal 8.9 - deprecated parts plus dependencies updated.

    If your site doesn't use deprecated code that is scheduled for removal in Drupal 9, your upgrade to Drupal 9 will be easy. In fact, it should be as easy as a minor version upgrade (like upgrading from Drupal 8.6 to Drupal 8.7).

  2. Keep Modules Up-to-Date: Although Drupal 9 will not have new features (other than those provided by updated dependencies). While most modules will improve Drupal 9 compatibility, to ensure you don’t lose them in the upgrade, keep them updated.

    The key benefit of Drupal 9 over previous versions is that the platform will be supported with security fixes much later after support is lifted from 8. For contributed modules, the pace of Drupal 9 updates will depend on the module maintainers.

  3. Check Custom Codes for Deprecation: In case of any custom code on the site, you can use the deprecation checking and correction tools and fix issues locally. Tools you can use to check code depreciation:
    1. Drupal Check (read more her about PHP version compatibility check
    2. Rector (Read more about Rector here)

      Further, you can also use an IDE or code editor that understands deprecations (@deprecated annotations particularly) or Drupal 8’s branch of Upgrade Status for full site reporting.

What is Deprecated Code?

Deprecated code is referred to as the functions and API’s which are being replaced with new and better versions. In the journey from Drupal 8 from Drupal 9, you will experience API changes, with the new implementation is already present in core along with older one. We have to replace older code/API usage with the new.

Here is an example of the deprecated function:

* @deprecated in Drupal 8.5.0 and will be removed before Drupal 9.0.0. * Use \Drupal\Core\Messenger\MessengerInterface::addMessage() instead. */ function drupal_set_message($message = NULL, $type = 'status', $repeat = FALSE) { @trigger_error('drupal_set_message() is deprecated in Drupal 8.5.0 and will be removed before Drupal 9.0.0. Use \Drupal\Core\Messenger\MessengerInterface::addMessage() instead. See https://www.drupal.org/node/2774931', E_USER_DEPRECATED); $messenger = \Drupal::messenger(); if (isset($message)) { $messenger->addMessage($message, $type, $repeat); } return $messenger->all(); }

In above example the function drupal_set_message is deprecated and has to be replaced with:

\Drupal\Core\Messenger\MessengerInterface::addMessage()

Ways to Find and Fix Deprecated Code in your Drupal Project

As mentioned above , you can find and fix your deprecated code in the following ways:

  1. Drupal Check: It's a library developed by Matt Glaman. Check the git code here. For installation and usage, you can refer to the readme. 
    In case you want to install using Composer, prepare using composer global require mglaman/drupal-check. You can also read more about the composer check
    1. Get into your project/Drupal root directory
    2. Choose the module you want to check for deprecations
    3. Run drupal-check --help for help items. Here, I am using watchdog_prune module for demonstration.
      run : drupal-check -d watchdog_prune
      The output will be something similar to the image shared below:
      deprecated-code-1-srijan
    4. You will, now, have the report of deprecated code to fix.
    5. Let say it is giving us File src/Form/WatchdogPruneSettings.php containing issue : Call to deprecated function drupal_set_message(). In this case just navigate to the body of function as in this case drupal_set_message()

      You will notice that the the documentation under red box reads that the function is deprecated and what we need to do instead
      Ways to Find and Fix Deprecated Code in your Drupal Project
      Now replace the current code with the recommendation and you are done.

2. Drupal Upgrade Status Module: This module checks the list of projects you have installed and shows their availability for newer versions of Drupal core.
  1. Use the Upgrade Status module form
  2. Download and install module using composer: composer require drupal/upgrade_status
  3. Install the module and navigate to URL using admin user: /admin/reports/upgrade
  4. You can run a complete project/ individual module scan
  5. Fix the deprecated code in the same way as mentioned above.

Wrapping Up

Because Drupal 9 is an extended version of Drupal 8, for site owners, this means that it should be much easier to upgrade. But keeping custom codes and module updated needs to be meticulously planned.

Have questions around Drupal 9 upgrade and how it might impact your site? Experts at Srijan are all ears, connect with us to chalk out the right course to Drupal 9.

Jun 03 2020
Jun 03

Every new version of Drupal has had the headache of the upgrade path - from 5 to 6, from 6 to 7, from 7 to 8. What this often meant was re-building the site in the new version and then doing a migration of the content. This was expensive for clients. With Drupal 9 (and the versions that will follow), this is now a thing of the past.

Drupal 9 is the exact same codebase as the last version of Drupal 8, with just two changes:

  • Updates of dependencies to versions that stay supported
  • Removal of our custom Drupal code that has been marked as deprecated

This means, if your site was running on Drupal 8, and your developers kept it updated to the latest version of Drupal 8, you just need to make sure that any contributed modules and custom code are not using deprecated functions. If that's the case, hey presto - you're website is Drupal 9 ready. I don't think we can underscore how good a feature this is strongly enough.

New Features

But surely there are some new features? No, not in this release - and that's good for now. For Drupal 9, we have the same feature set from Drupal 8. Drupal 8 introduced the idea of new features in each minor version (8.1, 8.2, etc) rather than having to wait for the next major version (Drupal 9). This means Drupal, during the 8.x lifecycle, got lots of new features - media in core, umami magazine profile (for which I am a core maintainer), layout builder, JSONAPI, and more. For Drupal 9.0, there are no new features, though that will change from 9.1. Once we get over this first release, expect new features again every 6 months.

Why Upgrade to Drupal 9?

Drupal 8.9 will be released alongside Drupal 9. It will be the last release of Drupal 8. Although Drupal 8 will receive security updates to patch any security vulnerabilities that are found, it will not receive any new features. Drupal 8 will receive these security patches for about one more year, and then you will need to have your site updated.

If your site is up to date with the current release of Drupal 8, you might as well update immediately if you can. And if you want the new features that are going to be introduced and supported by Drupal core, you need to be using Drupal 9.

Am I Happy?

I'm delighted with this new approach to Drupal. I came to Drupal as a site builder and moved on to being a themer and then frontend developer. I was always terrified of trying to upgrade from 6 to 7 to 8. I'd still be very nervous about writing a migration script - thankfully we have very capable people here at Annertech to do that for me. But with Drupal 9, I have no fears of upgrading, since it's as easy as updating from 8.3 to 8.4. I love the cautiousness of not bringing out any new features between Drupal 8.9 and 9.0. Let's just have the codebase tidied up and let things settle in; then get back to our nice release schedule.

THANKS to everyone who put so many hours into making Drupal 9 possible!

Jun 03 2020
Jun 03

Today is June 3 — that means that Drupal 9 is already released. What can we expect? 

What updates are offered? How can you migrate to Drupal 9 painlessly?

Today DruDesk experts answer those questions and others.

We would like to note that DruDesk switched to a high-efficiency model of cooperation. This means that we complete your tasks twice as fast. If you have additional questions, write to us.

What should you know about Drupal 9?

Do you know when Drupal 9 is coming out? It happens today! As soon as site owners hear about Drupal 9 release, half of them are happy with the update, but the rest are quietly worried. This is because the previous migration from Drupal 7 to Drupal 8 was painful.

However, there is no reason for concern, as we are promised an easy and smooth transition to Drupal 9, provided that you are using the latest version of Drupal 8 and have cleaned your site of deprecated code.

Three major updates in Drupal 9: 

  • Symfony 4 and 5

Drupal 9 uses Symfony 4 and 5 releases. Its main features are less code and files. Another novelty is the automated configuration, which helps developers to work faster.

  • Drupal core

Changes affect Drupal core. The legacy code that is still used in Drupal 8 is deleted from the new version. In Drupal 8, it was needed to support the work of Symfony 2. Drupal 9 has a new version of Symfony 4 or 5, and the code is simplified accordingly.

  • Olivero theme

Whatever else, the website’s visual appeal is important. In Drupal 9, the new front-end theme is Olivero. This is an even more lovable theme than the previous ones, with many new features for editing fonts, colors, and more.

What is Drupal 9?

A perfect Drupal 9 website also uses the Drupal core functionality where possible instead of the contributed alternatives. Drupal 9 is an improved and cleaned up version of Drupal 8. Drupal 9 has no drastic changes. The new version of Drupal is the latest minor version of Drupal 8. The most important nuance is the absence of deprecated code. We hope this helps you understand what Drupal 9 is.

latest minor version of Drupal 8 - the deprecated code = Drupal 9

The use of new modules in Drupal 9 

New useful modules were introduced in the Drupal 8 core. They are built according to the best practices and continue to grow and develop in Drupal 9. Here are some of the most famous ones:

  1. Layout Builder
  2. Content Moderation and Workflows
  3. Media and Media Library

Layout Builder

Drupal 9 uses the Layout Builder that has many capabilities of popular contributed modules such as Paragraph, Panels, Panelizer, Display Suite, etc.

Layout Builder was already in Drupal 8 core and is included in the core of Drupal 9. Its main task is to work with content.

It allows you to understand how to create layouts on an intuitive level. Layout Builder uses a simple drag-and-drop UI. It is also fast, which reduces the time it takes to create landing pages and other layouts.

Content moderation and Workflows

Content moderation and Workflows have already become part of the Drupal 9 core, which is very convenient. They provide the ability to create and manage custom workflows for various types of content for site administrators. Using these two modules, you can create an editorial workflow changes in content states. 

Media and Media Library

These modules allow you to manage various multimedia (ex. audio, video, images, etc).

It is possible to save your media in the Media Library and reuse it in your content.

How to prepare your site for Drupal 9?

  1. To make your migration easy, update the core of your Drupal 8 site to the latest available version.
  2. To make the transition take less time, upgrade your modules to the latest version of Drupal 8.
  3. To ensure that there are no problems during the transition, check all available custom code for compatibility with Drupal 9.
  4. To find the answer to the question of how to install Drupal 9, сonsult Drupal experts at DruDesk. This helps you to identify all the nuances that you might have missed.

Important dates of Drupal 2020-2021

Important dates of Drupal 2020-2021

What to do if your site is on Drupal 8

If your business website is on Drupal 8, then in order to switch to Drupal 9 you should just upgrade to the latest available version, clean your site from deprecated code and wait for a new release.

What to do if your site is on Drupal 7

If your site is still working on Drupal 7, in order to be able to switch to Drupal 9 in the future, you first need to upgrade to Drupal 8. Switching from Drupal 7 to Drupal 8 is not so easy, still, it is a necessary step, as Drupal 7 support is EOL.

Attention to all site owners on Drupal 6! 

Drupal.org has ceased to maintain and support the core of Drupal 6. This means that you need to update your site because otherwise you risk the security of your site and your productive work.

DruDesk will help to migrate your site to Drupal 9

If you ever asked yourself why Drupal 9? We have an answer! Drupal 9 release opens up even more prospects for your site and gives you even more benefits.

Better control and a smoother transition are just a few of the benefits you get.

The DruDesk agency tries to put everything in order and prepare you for today's Drupal 9 release!

In addition, we would like to tell you that we have switched to a new highly effective model of cooperation, which gives you even more advantages. You will receive your projects twice as fast due to the fact that we share your tasks at the stage of their receipt.

If you need a free consultation on migration to Drupal or if you have additional questions, just write to Drupal support services at DruDesk.

Jun 03 2020
Jun 03
Employees of OpenSense Labs posing for the camera


It’s not just another day. June 3, 2020 marks the 4th year anniversary of OpenSense Labs. If it wasn’t for the unprecedented situation caused by Covid-19 pandemic all over the globe, the OpenSense Labs Team would have headed out for a luncheon and taken part in some exhilarating and adventurous activities.

It’s the times like this that make us come out better and stronger. The OpenSense Labs Team has always found a way to stay together, help each other out, work collaboratively and bear the fruits each day. Even though the Covid-19 pandemic has made us stay indoors, we have kept on marching ahead. We have always believed: Wherever We Are, We Are One.

A small customised workstation at our homes beside the window is not that bad either. As we sit down, reach our hand out, lift a corner of the curtain with our fingers and white light floods the desk, hope for the return to normalcy becomes firmer. As we move into our 5th year, our resolve to get bigger and weather headwinds along the way becomes more strong.

Humble beginnings

It feels powerful to put the experience down in words. It’s like trapping it in a jar and it can never fully leave you. For Vid (CEO, OpenSense Labs), the humble beginnings of the organisation is a reminder of all the hard work that went into it. It’s something that drives him to keep moving forward.

 a laptop placed on the table against the backdrop of mountains and trees


It was the time when he was on a break and contemplating the future roadmap of his professional life. What better place than the open hillsides and deep woods to start the foundation work of a new startup! Working alone against the lovely, idyllic, and picturesque backdrop can be inspiring. The wings of the rushing wind seem to be bearing you onward. The voices of the air are singing to you.

At a place like this, with thrilling chlorine-blue sky stretched taut and featureless like silk, woods all green and golden, hills looking glorious in the flashing sunlight, Vid drew the definitive blueprint for an organisation that would go on to become one of the best Drupal agencies in the global marketplace. Today, he proudly looks at OpenSense Labs’ invaluable contributions made to the development and promotion of Drupal. Vid still remembers the days that went into the planning of an organisation of this scale. They will linger long upon the retina of his memory.

The first office

two people sitting on the chairs and working on the laptopFirst day in the office in 2016

The birth of a refreshing idea accompanied itself with the task of setting up an office premise. But, how much of workspace would three people require to start the proceedings? Well, a small room with a table and chairs for three would suffice. So began the journey of OpenSense Labs and it saw significant growth in a short period of time. Soon, it was time to move to the bigger office.

Open-source innovation with Drupal

Employees of OpenSense Labs posing for the cameraFirst year anniversary in 2017

By the time, we celebrated our first anniversary, our team had already grown in number and we had moved to a bigger workspace. Today, into our 5th year, we now have 50+ talented individuals helping the organisation move by leaps and bounds. From Drupal development to unique staff augmentation offerings, Drupal Commerce to web performance optimisation, web personalisation to Drupal 8 upgradeDrupal 8 migration to support and maintenance, we have made the foray into everything Drupal. We utilised our Drupal expertise and various open-source software projects, yielded great results with our open-source thinking, and triumphantly carried out small to large scale projects.

Blue background, Drupal written on top


Our fourth year anniversary also coincides with the launch of Drupal 9. We are looking forward to providing ambitious digital experiences with an all-new Drupal.

Building an amazing organisational culture

Photos of Elon Musk, Quadro Nikola, linus torvalds on the wall


Envisage yourself looking at the faces of Linus Torvalds or Elon Musk or Quadro Nikola while trying to give your best in the project you are working on. That’s exactly what you get here at OpenSense Labs’ office. Posters of these influential persons give you enough motivation to pour in everything that you have got and give your best shot.

We always strive for creating a company culture that embraces and promotes mentorship. When new guys join the team, a designated mentor makes sure to look radiantly pleased to hear their questions. They survey their thoughts that seem to be shuttling through all the coils inside their brain like fast, frantic centipedes. It’s almost like opening their skull, unspooling their brains and sifting through it, trying to catch and pin down their thoughts. We feel it’s important for senior pros to understand the newbies’ minds and make them feel comfortable and do their best.

The friendly and positive environment makes you feel at ease. There is a strong sense of tranquillity felt in the office premises. Even a time-sensitive project, that can sometimes be a high-pressure job, can be dealt with easily.

And, being a part of the OpenSense Labs family makes you want to celebrate your birthdays in the office. There is always someone who would throw cakes on your face. Someone would open a bottle of wine (with a crest of white spilling over the lip of the bottle) and pour a glass for you.

We make sure that you always get an ample amount of opportunities to learn new things and try newer avenues. When opportunities do knock on the door, everyone makes sure that they sweep them into the palm of their hand, close their fist around them and pocket them. For instance, whenever a DrupalCon or a DrupalCamp is held in India or anywhere else in the world, we encourage everyone to present a session in such national and international conferences.

Collage with three images where people are posing for the camera, identity cards in closeup and a man with a chart paper can be seenOpenSense Labs at global conferences. From left to right: DrupalCamp Goa 2019; DrupalCon Amsterdam 2019; DrupalCamp London 2019

Annual retreats are something that we look forward to every year. Everyone seems to be in a jolly mood during the bus journey. Different playlists being flipped through and finding one everyone on the bus seems to be enjoying. Music bleating from the speakers at night while everyone takes a quick nap preparing themselves for the exciting day that lies ahead.

Employees of OpenSense Labs posing for the cameraFirst annual retreat

As you reach your destination, the sky dims into a cooler blue and silver clouds lie on the rim of the horizon. You look forward to dancing all night under the night sky. The bonfire illuminates the features of jubilant individuals in the darkness. As the sun rises again, you can’t wait to play a match of cricket. It’s even more wonderful to witness light rains. You cherish the moments when grey stone darkens to black and rain moves over the grass and whispers on the slick roof tiles.

number of individuals forming a circle(a)drone shot of people playing cricket in a ground(b)

Visuals from the recent annual retreat in February 2020

We have always believed that the employees are the pillars of strength for any organisation. So, we do everything we can to contribute to the happiness of our employees for the extraordinary contributions that they make towards the organisation’s growth.

Post-Covid-19, the world hasn’t been the same. With the people world over trying to stay connected and bond over digital platforms, we too have kept ourselves connected through virtual bonding sessions. As a matter of fact, we have played virtual games even before the Covid-19 pandemic. So, it hasn’t been difficult to organise online activities and interact with our colleagues. The kind of camaraderie that we share with each other is phenomenal. Which is why our pre-Covid-19 and post-Covid-19 work atmosphere has only changed on the map. Our Delhi office remains vacant. The Team has got distributed and has been working remotely since the outbreak of this pandemic. Nevertheless, our success rate hasn’t gone down a bit.

India map, austria map, germany map, and sri lanka mapOpenSense Labs Team, distributed within and outside India, working from home since the outbreak of Covid-19 

Thank you

If not for the hard work of each and every individual of the OpenSense Labs’s Team, we wouldn’t have reached all the milestones and come this far. The launch of Drupal 9 on the fourth year anniversary of OpenSense Labs means one thing: It’s the beginning of great things to follow. We will keep prioritising digital innovation, build remarkable websites and web apps with Drupal 9, and keep getting better at everything that we do.

Jun 03 2020
Jun 03

With today’s release of Drupal 9, we thought it would be helpful to look at why this release will be a major milestone for the project.

At Palantir, we’ve been working with Drupal since version 4.7. Personally, I started evaluating the platform with Drupal 4.5. Since then, I have been an active contributor, module developer, and even core subsystem maintainer. I even maintain one module that I originally wrote for Drupal 5.

When previous major versions of Drupal core were released, the upgrade process was, to put it mildly, complicated. Drupal never followed a backward-compatibility policy, preferring to move forward with each release. In theory, this meant a lighter code base and less legacy “cruft” to deal with. In practice, it meant major system rewrites as part of each release. 

In past releases, those changes have included such elements as the FormAPI; multiple rewrites of the menu system; the introduction of the database abstraction layer; putting configurable data fields into core; adding Symfony and the use of services; using Twig for the theme layer. The list goes on.

For site maintainers and module authors, a new major core release essentially meant rewriting large parts of your code base. That would inevitably lead to a lag period after the release, as module maintainers worked to update their code.

On top of that, the rearchitecture of the core system meant underlying changes to data structures, so updating a site wasn’t just about the code. Updates meant modifying the database because of changing content type definitions. Or replacing deprecated modules and techniques with entirely new ones. For these reasons, moving to a new version of Drupal often meant a complete rebuild and migration rather than a software upgrade.

In the Drupal 8 release cycle, leading up to the release of Drupal 9, all of that changed. The project moved to:

  • Scheduled releases every 6 months
  • Planned deprecations of APIs and code-level elements
  • Automated testing and tools for updating existing code

Now, with Drupal 9, we are finally in a position to perform a software update rather than a system rebuild. Tools like Upgrade Status and Rector -- which I have written about previously -- give site and module maintainers tools to audit their code and make the changes more easily. As a result, you can make your sites Drupal 9 compatible while you are still running Drupal 8.8 or 8.9. 

And that provides a level of confidence that we haven’t had before. Instead of advising clients to perform major upgrades every five years or so, we are now in position to support ongoing, incremental improvements. With confidence in the underlying, enterprise-level architecture, we can shift our energy from compatibility to creativity. Drupal 9 makes it easier to focus on the business needs of the entire organization, instead of the technology that powers it.

Jun 03 2020
Jun 03

Today, Drupal 9 will be released and we are throwing a celebration party at 1xINTERNET!

On a day like this, we should take this opportunity and embrace what the Drupal community has achieved, it's important for the future of Drupal and then of course it's important to have fun!

So please join our celebration party today on GOOGLE MEET from 16-18pm CET


Check our celebration video

Celebrate Drupal 9  ( built in Drupal 9 of course ) was created for the launch and shows so nicely the great energy in the Drupal community. 

Christoph, our co - founder sat down at the piano and created a karaoke version of the famous Hallelujah song, encouraging people to take part and sing it with him. Allison Manley reacted quickly and here below you can see the results here!

And by the way! It’s not too late to take part! 

We at 1xINTERNET also created a celebration video, where you can see the majority of our employees, based all over the world!  

[embedded content]

Jun 03 2020
Jun 03

The day has come for Drupal 9 to launch. Hurrah! But what does this actually mean for you and your website?

In 2015, the last most recent major release of Drupal was launched: Drupal 8. The launch of Drupal 8 saw fundamental architectural changes, which meant that upgrades from older versions meant a complete rebuild of your website and a full content migration. 

The launch of Drupal 8 however, was a little different. As part of this rebuild, came Drupal’s continuous innovation model. 

Drupal’s continuous innovation model

The continuous innovation model enables frequent releases of new features, API additions and an easy upgrade path. As a result there are no longer any big architecture changes when upgrading from Drupal 8 to 9. There is no migration needed, and no need to build a new site, unless you want to.

Although Drupal has always had a wealth of new features and functionality being built and released by the community, the release model lacked the direction and quality control that a world leading CMS should provide. The Drupal 8 release model allowed significant, backwards-compatible improvements to be released in smaller, more frequent releases. So, rather than waiting years for new features, users get sizable advances in functionality with every minor release - about every 6 months, with patches and security updates and bug fixes released every 2-3 weeks. For example, Drupal's media and asset management tools needed improvement. As of Drupal 8.4, the contributed "media" module was vastly improved and then introduced in to Drupal core. In each minor version update since, these tools have been improved further, and now media and asset management is easy 'straight out of the box'.

So what does this mean for Drupal 9?

It means that this time, to upgrade from one major version - Drupal 8, to the newest - Drupal 9, does not mean a complete rebuild of your website and a full content migration. 

However, there is still some work to be done to get your website ready to upgrade. While it doesn’t need to be done straight away - Drupal 7 and 8 will both reach end-of-life in November 2021 - you should be preparing your roadmap now. 

To help with this, we’ve created a handy guide - Everything you need to know about Drupal 9. This will answer all your Drupal 9 questions, and give you the information you need to plot out your roadmap with our Drupal 9 Readiness Audit.

Jun 03 2020
Jun 03
Jun 03, 2020 Drupal

In 2014 we were proud to release OpenLucius 1.0 on Drupal 7. Since that time a lot has happened in the (Drupal) world as well as with our agency.

We had to drop support in 2018 unfortunately, but we always had the intention to build a new version; that would encapsulate all learnings from the past. Early 2020 we were finally able to start developing the new version in Drupal 8; first release is now available in Drupal 9.

What is OpenLucius

OpenLucius aims to be a lean and fast social, culture building, productivity platform; ready to use after installation. The goal is to be easy-to-use software that helps your people to:

  • Communicate better;
  • Manage knowledge;
  • Build culture;
  • Get projects done;
  • Easily sharing and managing (large) files and folders;
  • ..and much more to come.

Goal is also to facilitate an optimal developer -and site builder experience for building add-on modules and easy management / updates.

Out-of-the box functionality

Currently (May 2020) these core functions are working directly after installation of the OpenLucius Drupal distribution:

End-user guide

For all end-user functions check out the product pages.

Try it instantly

If you'd like to try it this instant, please visit the product website and hit the 'Try now' button.

Updates and maintenance for Drupal developers and site builders: OpenLucius 1 (D7) vs OpenLucius 2 (D9)

Install profiles did have quite a bad reputation as it comes to maintaining it. Indeed, it was relatively hard back in the days. But maintaining an install profile in Drupal 9 is much more easy than in Drupal 7, which is one of the main reasons we were exited to build OpenLucius 2.0:

  • Major Drupal upgrades (D8->D9, D9->D10, etc) are not complex migration projects anymore, if coding done right. Since Drupal 8 most important thing is to rewrite deprecated code, read more on preparing for Drupal 9. With help of a good IDE and tools on linked page, it's relatively easy.
  • OpenLucius 2 has no module dependencies, other than core. The Drupal 7 version depended heavily on contrib modules, which made it hard to maintain and impossible to upgrade without that complex migration project.
  • It's fully Composer based. In comparison with the Drupal 7 way of maintaining distributions, Composer based management is a great relief.
  • No more Drupal 7 Features, but Drupal 9 core configuration management. Also self explanatory I guess.

Core customisation and contrib integration

  • Just like Drupal core, we put as much code as healthy possible into Services, so developers can override those, which makes OpenLucius core customisation relatively easy.
  • We'll build API functions / hooks where needed, so contrib / 3rd party modules can integrate. Right now we already have a few hooks in place; more on this in upcoming articles.

Installation

You can install and manage the code with Composer:

composer create-project lucius-digital/openlucius-project:2.0.0-alpha1 MY_PROJECT_FOLDER

Code hosting

Currently (May 2020) the code is hosted on Github here and here. When possible we'd like to host it on Drupal.org, but right now we get compatibility issues via Composer when the install profile is hosted on d.o. When Drupal 9 stable is released we will probably host it on d.o.

Install manual

Please check out the complete install guide for:

  • Installing the OpenLucius distribution in 3 easy steps;
  • (optional) Using the Docker environment;
  • (optional) Using Drupal core's 'quick-start';
  • (optional) Installing the Node.js / Socket.io package.

Project content

The project package facilitates:

  • The OpenLucius installation profile;
  • Optionally, a ready-made Docker environment;
  • Optionally, a Node.js / Socket.io package for real-time goodies like the chat.

Project page on Drupal.org

The project information above is also written on the OpenLucius project page on Drupal.org.

Let's talk

So, we're very exited about this release and would love to hear your feedback, please let us know your developer-, support- or feature requests in the OpenLucius issue tracker on Drupal.org, or leave a comment below. We're looking forward to next releases and keep bringing the good stuff!

Jun 03 2020
Jun 03

Today, we're excited to celebrate the launch of the most stable and mature version of Drupal to date. Drupal 9 is the culmination of the work of thousands of contributors around the globe, collaborating to create an innovative platform that's designed for everyone to use.

What's really exciting about Drupal 9 is that it represents the work of 4 and a half years of steady work since Drupal 8 was released. Rather than a single cycle of new features added all at once, features have been released steadily since Drupal 8.0. And now all those features are already tested, stable, and ready-to-use.

What Has Changed Since Drupal 8?

Since November, 2015, there have been 8 feature releases for Drupal 8 that progressively and steadily satisfy more and more requirements for ambitious web projects. Features like Media and Layout Builder have been fully integrated into an already rich content model. This really takes Drupal to the next level compared to other options in the CMS ecosystem and means that Drupal can adapt to the digital information design needed by each individual project.

For those who upgrade to Drupal 9, continuous improvements will continue to be added in the same way. This first release of Drupal 9 represents an upgrade to the underlying technology, but there's no radical change to how Drupal works. Upgrading is important because it means that you can keep benefiting from the innovation, while staying secure and stable.

Why Should I Use Drupal 9?

In broad strokes, there are 3 main reasons to use Drupal 9:

Drupal 9 Enables Innovation

Drupal is open source, but it's also open in that it doesn't lock you into one set of technology solutions. It can adapt to your marketing tools of choice, the devices you want to push data to, and the future use cases that are coming down the road. By simply having a strong content architecture, Drupal sites are easier to extend and build on. Features will continue to be added via regular feature releases (Drupal 9.1, 9.2, etc) so you'll benefit from improvements that are added as the web evolves.

Drupal 9 Prioritizes Ease-of-Use

The thing that I'm most excited about in Drupal 9 is how much easier it's going to be for content editors to use. Layout Builder provides drag-and-drop page building. The Claro theme provides a more accessible and streamlined admin interface. Content Moderation provides workflows that are actually adapted to content editors' needs. And that's what's great about Drupal's its flexibility empowers you to create an experience that's just right for your content editors. Ease-of-use and content editors experience is at the top of the list for Drupal 9 feature releases. Expect to see continuous improvement to the experience of using Drupal.

Drupal 9 is Mature

Drupal 9 isn't a risky proposition or bleeding edge. It's been tried and tested by not just a small set of proprietary users, but a global community of users including countless government and healthcare organizations. It's built on a solid technology stack that's been tested and optimized for use cases where security, performance, and accessibility are of the utmost priority. Its multilingual capabilities are truly built into the core, not an afterthought as with so many other content management systems.

Open source development means that features are built and tested from the perspective of many. Our community truly takes pride in the fact that Drupal is secure, fast, and accessible. These aspects of Drupal are not an afterthought, but part of the core values of the community that are reflected in the software. It's in our culture to care about our users, and that culture stays with us in Drupal 9.

Dive into Drupal 9!

So since today is launch day, you have some homework to do:

When Drupal 9.1 is released, you'll start seeing new features added and you won't want to miss out on the train to the future, so get started upgrading today.

If you need help with your upgrade, we'd love to hear from you. And if you want to learn how to run an upgrade yourself, Evolving Web will be scheduling our first Drupal 9 Training soon. Subscribe to our Learn Drupal Newsletter to find out as soon as it's announced.

Jun 03 2020
Jun 03

For our team at the Drupal Association, the events of the past week have once again emphasized the severity and violence of racism that communities experience in the United States and across the world every day.

Amidst the COVID-19 pandemic, where black and brown people are disproportionately affected, seeing racial turmoil unfold is particularly painful and difficult to witness. We stand with people across the globe in condemning racism, racist behavior and all abuses of power. We grieve for the black community, which has endured another unspeakable tragedy in a long history of injustice.

Drupal is global in scale, reach and opportunity.  It takes many contributions, from many diverse contributors to thrive. Drupal is about standing up for what could be and for promoting hope through access.  As such, our community adheres to a set of values and principles. Of particular importance is our value to “treat each other with dignity and respect” emphasizing that we do not tolerate intolerance toward others.  It is time to live our values out loud seeking first to understand, then to be understood. 

The Drupal Association values equity, diversity and inclusion, and we recognize we still have work to do to create meaningful change.  Here are the ways in which we are encouraging our team to take action.  We are sharing in hopes that you will take action, too.

If you have resources to share or organizations to highlight, please post them on social media using the hashtag #DrupalBetterTogether so that we may compile a comprehensive list for our community.

In the coming weeks and months, you will learn more about the programs we are putting into place to take action.  Our Drupal Community is truly Better Together, and together we will accelerate our ability to affect positive change.  Now is the time to raise our voices, not to silence them.

Jun 02 2020
Jun 02

The long-anticipated drop of Drupal 9 has arrived. This marks an exciting step in the evolution of Drupal. A migration from Drupal 8 to Drupal 9 is not as complex and cumbersome as previous version releases. Drupal 8 to Drupal 9 will be an upgrade that is more akin to a point release.

If you are not prepared to upgrade to Drupal 9 immediately, you are not alone.

Sign up for a free migration consultation and explore your options for a path forward. 

Both Drupal 7 and Drupal 8 are not slated for end-of-life status until November of 2021, but now is a time to begin planning for a migration and understand what that will entail. To help in that process, we created a Drupal 9 Upgrade Planning Template for migrating from Drupal 8 to Drupal 9.

spreadsheet screenshot for a Drupal 9 migration

The upgrade plan involves the following steps:

Install Upgrade Status or Drupal Check

Installing the Upgrade Status module or the Drupal Check utility is the essential migration planning starting point. The former provides a report in the Drupal user interface to give you a list of what deprecated code you still have. The latter works on the command line. Run the report on your site to see where you stand. It is recommended that you run this check on a lower environment than production if possible.
 

Check Drupal Core and Your Environment

Running Upgrade Status should give you a report that looks like this:

Drupal 9 migration planning

We’ve created an example version of the Drupal 9 Upgrade Planning spreadsheet and added it to our plan:

Drupal 9 Upgrade Planner spreadsheet

 

Upgrading to Drupal 8.9

If you have upgraded your site to the latest version of Drupal 8, you will already have the latest Drupal 9 features. 


New features have been added incrementally to Drupal 8. A key step in upgrading to Drupal 9 is the removal of deprecated functions.

Drupal 9 deprecated code list
 

Check Your Custom Projects

Your custom modules, themes and libraries are the domain that is most under your control. Running the Upgrade Status module will give you a report that looks something like this:
 

Drupal 9 Upgrade Planner spreadsheet

In our example the “My Site Custom” module has 1 warning and 1 error

When we take a look we see that we need to change the name of a function.

Drupal 9 Migration planning

We’ve added this to our Drupal 9 Upgrade Planner spreadsheet.

Drupal 9 migration spreadsheet

Check Your Contributed Projects

Your “Contributed Projects” are modules, themes, and libraries that are created and maintained by the community.

For upgrading to Drupal 9, this is where things get more difficult. Not every Drupal 8 contributed project will be ready for Drupal 9 on day one. Your course of action will depend on your constraints. 

In our example, we get the following report for “Contributed Projects:”
 

Drupal 8 Migration planning

The report reveals that we have 9 projects that contain errors and 23 that have warnings. I’ve added these to Drupal 9 Upgrade Planner sheet.

Drupal 9 migration spreadsheet
 

Address Compatibility Issues of Contributed Modules

To get a better understanding of where contributed modules that produce errors or warnings are in terms of their Drupal 9 compatibility, you can check the module page. If there is not a notice about Drupal 9, there should be an issue in the issue queue. For example, this test project is using “Environment Indicator” version 3.7. A search of the Issue Queue () reveals an issue: “Drupal 9 Deprecated Code Report“ that has a patch that is “Reviewed and Tested by the Community.”

The amount of work to put toward a contributed project (“Low Estimate” and “High Estimate”) and when you would hope to have it upgraded (“Delivery Date”) are up to you.

For Environment Indicator, the Drupal 9 code has been reviewed and needs to be accepted or rejected by the maintenance team.

The actions to take are:

  • Add an additional review of the patch to help get it accepted
  • Apply the current patch to the current codebase
  • Wait for the next stable release

For this example we’ve estimated a couple of hours to update the project during the next stable release.

In Conclusion

Upgrading from Drupal 8 to Drupal 9 will be a lot easier than any previous upgrade. For our example project we have the following estimates:

Drupal 9 migration spreadsheet
 

We can reduce that estimated delivery date by contributing to the upgrade of some of the contributed modules we are using. Promet Source has contributed to a number of “Drupal 9 Upgrade” issues and encourage others to do the same.


We’re Here to Help

At Promet Source, we are passionate about helping clients to optimize their Drupal environments, whether that means the relatively simple shift from D8 to D9, or a migration from an earlier version. While there are still 18 months before the decommissioning of Drupal 7 and 8, keep in mind that waiting until the last minute to do so might be akin to reaching out to an accountant on April 14 concerning the previous year’s tax filing. Take steps now to ensure that thorough focus and attention can be devoted to the migration of your site.

Our team of Drupal 9 migration experts leverages best practices and proven processes for efficiently migrating websites, applications, and content to Drupal 9 -- whether from a previous version of Drupal, another CMS, or a home-grown system. Contact us today to schedule your FREE Drupal 9 migration consultation.  

 

Still on Drupal 7?

You are in good company. We will be addressing that migration process in a blog post later this month.

Feel free to contact us in the meantime for a FREE migration consultation
 

Jun 02 2020
Jun 02

The Webform module provides all the features expected from an enterprise proprietary form builder combined with the flexibility and openness of Drupal...now available on any website, webpage, and application

The Webform for Drupal 8 is built upon Drupal's Form API (FAPI); the building, validating, and submission handling of a form relies on Drupal's backend code. Drupal, and most content management systems, are moving toward a decoupled approach where the backend content authoring tool is separate from the front-end presentation layer. Until now, there was no easy way to decouple a webform from Drupal's presentation layer.

Decoupled Drupal and sharing Webforms

A decoupled approach for the Webform module means that Drupal would handle the backend form builder and the submission processing. In contrast, the user-facing input form would be rendered using a front-end framework like Angular, React, and Vue.js. In the Drupal community, people are experimenting with decoupling webforms by exposing webform elements using a JSON schema or REST API, and then rendering the input form using Gatsby with React. The biggest limitation of this approach is recreating 80+ webforms elements with complex business logic as React native components. For me, this feels like an overwhelming challenge; it requires rebuilding Drupal's Form API and the Webform module's presentation layer from scratch. Stepping back from this challenge/problem, the goal which everyone is working towards is being about to use a webform outside of a Drupal website.

People want to embed a Drupal webform within a non-Drupal website or application.

Embedding a Webform using an iFrame

A widespread solution to embedding external content within another website is to use an Inline Frame element (<iframe>).

"The HTML Inline Frame element (<iframe>) represents a nested browsing context, embedding another HTML page into the current one."

-- https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe 

In the webforms specific use case, an iframe allows a webform to be nested in any HTML page. With this approach in mind, I started to research how best to embed content using an iframe.

Initially, I assumed that because a webform's height can dynamically change via conditional logic and Ajax, the iframe would require scrolling, then I discovered the IFrame-Resizer library. The iFrame resizer enables the automatic resizing of the height and width of cross-domain iFrames to fit their contained content. The iFrame-Resizer library made it so easy to embed a webform using an iframe that I bought David J. Bradshaw a cup of coffee to show my appreciation for contributing a fantastic library to the open-source community.

How to share and embed a webform

I think it is time to show you how to share and embed a webform on any website, webpage, and application.

The new Webform Share sub-module is available in the latest release of Webform 8.x-5.x (for Drupal 8) and Webform 6.x (for Drupal 8 and 9).

Download the Webform module

Who sponsored this feature?

Memorial Sloan Kettering Cancer Center (MSKCC) has been my primary client for the past 20 years. Without MSKCC's commitment to Drupal and their early adoption of Drupal 8, I would most likely not be maintaining the Webform for Drupal 8. Most of my work on the Webform module is done during my free time. Occasionally, MSKCC will need a Webform-related enhancement that can be done using billable hours. In the case of "sharing webforms", MSKCC, wanted to share screening forms with their partner and affiliated websites.

I am very fortunate to have an ongoing relationship with an institution like MSKCC. MSKCC appreciates the value that Drupal provides and the work that I am doing within the Drupal community.

If you want to sponsor a feature, please read my blog post and create a ticket in the Webform module's issue queue.

Backing the Webform module

Open Collective is providing us, Drupal, and Open Source, with a platform to experiment and improve Open Source sustainability. If you appreciate and value what you are getting from the Webform module, please consider becoming a backer of the Webform module's Open Collective.

Almost done…

We just sent you an email. Please click the link in the email to confirm your subscription!

OK

Jun 02 2020
Jun 02

Images play an important part in media and advertising. They can be very effective in creating a mood or feeling and are great at emotionally connecting with people. Websites are no exception. However, not all users are able to see the images on a website or may need accommodations to do so. In a hyper visual world, where images and visual cues like colour are used to represent a brand, elicit emotion in consumers and create strong psychological cues, it can be easy to forget that not every client can see. This is why it's important to ensure that the thoughts and messages those visual cues communicate are still being broadcast to users who cannot see or have poor vision.

One important way to do this is to make sure the semantic text of the website communicates the same tone and evokes the same message that the graphics and visual cues do. A second, equally important way is to ensure that any messages contained in the images are clearly communicated to users who are visually impaired. 

Not All Users Have the Same Needs

Users who are visually impaired do not all have the same needs. Some users might be able to see the images but cannot make out the different colours due to colour blindness. They need images with enough contrast to distinguish the different parts of the image without relying on colour. This is especially true for graphs and charts, so be sure to distinguish the components using patterns or hashing, in addition to colour. Another reason to consider contrast within your images is that you want them to be clear if printed in black and white. There is nothing worse than a logo that becomes illegible every time it's printed out in black and white. 

Other users with poor vision are able to see and distinguish colours but need to zoom in to read the content. They need images with a high enough resolution that don't become pixelated or distorted when enlarged. This also helps ensure your website still looks good when displayed through a projector. 

Lastly, some users cannot see images at all and need to access websites through a screen-reader. They rely on alternative (alt) text to tell them what the images represent. Describing images with alt text isn't always straightforward, so let's look at how to do this effectively. 

How to Use Alt Text Effectively 

Alt text allows users who cannot see and use a screen-reader to absorb the information that images provide. Even your company logo in the top-left corner should have an alt text to signal to users where they are. Since the alt text is going to be read aloud by a screen reader, be as succinct as possible and avoid numbers or symbols. A common mistake is to forget that the screen reader will already indicate that something is an image, so just write 'duck playing soccer' instead of  'image of a duck playing soccer.' There's a general guideline that each alt text should be less than 140 characters, so save the extra info for a caption, or a link to another site. 

Alt text is also widely used by search engines (think Google Image search), so writing thoughtful descriptions will not only help accessibility, but will also drive traffic to your site. Just don't be tempted to pump your alt texts with a ton of keywords as site visitors using screen readers (and Google too) will be annoyed. 

Generally, there are different types of images, each requiring a different alt text approach.

1. Functional Images

alt="search this page"
Functional images perform an action, such as opening a link. They should have alternative text that describes the action that happens when the user clicks that link. For example, "Search this page" for a magnifying glass that indicates a search function. Often, a brand logo is used as a functional image that returns users to the home page. In this case, the alternative text should indicate where the logo links to and can include the brand name as well: "Evolving Web Home."

2. Informative Images

alt="Families love camping at The Eager Beaver's Dam Good Campsite"
Informative images convey short information or concepts that can usually be expressed in a short phrase, such as "Young children playing baseball at City Park." Sometimes, an image is used more to convey a feeling or concept. For example, a picture of an all-smiling family camping at a campground can have alternative text such as "Families love camping at The Eager Beaver's Dam Good Campsite."

3. Complex Images

Bar graph and pie chart
Complex images, such as graphs or diagrams, need to have alternative text that conveys the data or same information. In this case, it's best to provide a full-text alternative to the data contained in the graph. Also, for users who have trouble distinguishing colour, always be sure to indicate different parts of a graph or chart using distinctions besides colour, such as hashing. For further explanations on how to describe different types of complex images, The Diagram Centre is a great resource. 

4. Images Containing Text

alt="Lorem Ipsum"Images containing text should include the text included in the image in their alternative text. However, other than the logo, as a general rule avoid embedding text in images or using images as text. 

5. Decorative Images

<img src="decorative-image.jpg" />
Decorative images are the final type of image. These images serve no purpose other than to just look nice. They are the one exception to always having alternative text to your images and should have no alternative text. 

If you want further details on how to write alt text, this blog breaks it down pretty well. 

One Minute Summary

It might seem complicated at first, but images are one of the easier website components to make accessible. The key is to have appropriate alt text. As a quick recap, for the images themselves, make sure all images have a high enough contrast so they can be interpreted without colour and are zoomable. Next, use alt text to label them appropriately. Images that do an action should indicate the action in the alt text whereas those that simply demonstrate something should describe what they show. Images which are purely decorative should have no alt text. 

Follow these tips and everyone will be able to enjoy your site. And if you need more guidance, join our upcoming Web Accessibility training

Jun 02 2020
Jun 02

End of life (EOL) software is a very real problem. Whether your business is using ecommerce and customer relationship management systems across multiple platforms or relying on basic scheduling and accounting software, you will at some point reach a technological expiry date.

When a system reaches end of life, the creator/owner of the software/technology no longer delivers support services for the product. That can include technical support, hardware or software upgrades, bug fixes, security patches, or feature development. In short, the system gets abandoned by its owner. 

Software becoming obsolete can cause all sorts of problems. Here are five risks to your business in running EOL software:

1. Security

End of life technology receives no security updates. No bug fixes. No patches. No monitoring. Your technology is dead in the eyes of the creator. That means your security is completely compromised, not only for the platform that is EOL, but also potentially for any others that connect to it.

At minimum, your system can be accessed and your content or records edited, stolen, or deleted. If you have any user data, financial data, or sensitive information, you could have a major problem. The monetary and reputational cost could kill your business.

A survey of 2,600 CIOs across the U.S. found that the number one concern was keeping systems and information secure. If you take no action on EOL systems, you are essentially condemning yourself to failure in that regard. 

2. Maintenance

Just because the software maker is no longer supporting the software doesn't mean you have no options for supporting it going forward. There are agencies that specialize in supporting older technology. But that support doesn’t come cheap, and integrations into other systems require even more time-consuming and expensive workarounds. 

As a general rule, maintaining EOL software is complex and expensive. Is it really worth not moving due to fear of change?

3. Liability

If you hold people's information and data, you are responsible and liable for it. Using systems that are not properly supported to keep that data secure means you can be prosecuted for not complying with government or industry regulations. Fines, shutdowns, and even jail time are potential outcomes from not acting responsibly with the information you have been entrusted with. 

4. Reliability

If you were a taxi driver, would you willingly drive an old car that is no longer maintained and has sporadic issues? Of course not. That’s because your livelihood relies on the economics of your vehicle. 

But that is what you are doing if you continue with EOL software. Old software is less reliable and more prone to failure. Even if you are able to find people who will work on it for you, it's going to cost a lot more money, because it takes much more time and expertise. 

And if it connects to other systems, be prepared for much more testing time to ensure that all the variables across all systems are working properly. Because there's no guarantee that they will.

5. Cost

EOL software costs more, whether it’s through lost/stolen data, updating and maintaining with third parties, legal liabilities, or lost revenue from downtime or issues. 

The sticker price on a new system can sometimes seem large. But the security gained from having well maintained and supported systems is critical. 

One side benefit from moving from EOL software is the opportunity to review your company's entire technology stack/architecture. We often see that when going through the cost and process of moving systems: Other changes are made to improve workflows and processes. These often result in net savings for the business. So not only do they spend less, they eliminate their security risks and improve workflows.

If you have software moving towards EOL, it's essential to look at not only replacing the single system, but also assessing your whole technology landscape for opportunities to make larger improvements.

Conclusion

Ultimately, EOL technology is costly to your business in multiple ways. Most technology providers give lots of notice when one of their products is going to be unsupported. That gives you time to assess your options and determine the path you should take. 

In some cases, it's migrating to a new version or equivalent product. In others, it’s reorganizing your company's whole technology structure and moving away from a system that was holding you back. 

To determine if your system has reached EOL and plan for your next move, check out our End of Life Playbook.

Download the End of Life Playbook (PDF)

Jun 02 2020
Jun 02

End of life (EOL) software is a very real problem. Whether your business is using ecommerce and customer relationship management systems across multiple platforms or relying on basic scheduling and accounting software, you will at some point reach a technological expiry date.

What are the risks in running end of life software?

  1. Compromised Security

  2. Lack of Reliability Kills Innovation

  3. Higher Operational Costs

Acro Media has developed a 6 step action plan for handling software end of life. View it here >>

When a system reaches end of life, the creator/owner of the software/technology no longer delivers support services for the product. That can include technical support, hardware or software upgrades, bug fixes, security patches, or feature development. In short, the system gets abandoned by its owner. 

Software becoming obsolete can cause all sorts of problems. Here are a few of the  risks to your business in running EOL software:

1. Compromised Security

If you hold people's information and data, you are responsible and liable for it.

End of life technology receives no security updates. No bug fixes. No patches. No monitoring. Your technology is dead in the eyes of the creator. That means your security is completely compromised, not only for the platform that is EOL, but also potentially for any others that connect to it.

At minimum, your system can be accessed and your content or records edited, stolen, or deleted. If you have any user data, financial data, or sensitive information, you could have a major problem. The monetary and reputational cost could kill your business.

A survey of 2,600 CIOs across the U.S. found that the number one concern was keeping systems and information secure. By being proactive and not letting your systems reach their end of life, your company is better positioned to ensure that your data, and your customer’s information remains secure.

2. Lack of Reliability

If you were a taxi driver, would you willingly drive an old car that is no longer maintained and has sporadic issues? Of course not. That’s because your livelihood relies on the economics of your vehicle. 

But that is what you are doing if you continue with EOL software. Old software is less reliable and more prone to failure. 

Maintaining EOL software is complex and expensive, and integrations into other systems require even more time-consuming and expensive workarounds. 

Regular updates, bug fixes and support in general goes away at EOL, which makes system maintenance much more difficult. Instead of spending your resources on new tools or building better customer experiences, you are stuck paying top dollar for fixes and updates no longer covered by the software creator.

Which brings us to our final point...

3. Higher Operational Costs

EOL software costs more, whether it’s through lost/stolen data, updating and maintaining with third parties, legal liabilities, or lost revenue from downtime or issues. 

The sticker price on a new system can sometimes seem large and prohibitive from a business point of view. But, consider the consequences of a security breach, or a major bug. The peace of mind  that comes with having a fully secure and supported system that won’t arbitrarily go offline is worth its weight in gold.

Another benefit from moving away from EOL software is the opportunity to review your company's entire technology stack/architecture. If you have software moving towards EOL, it's essential to look at not only replacing the single system, but also assessing your whole technology landscape for opportunities to make larger improvements.

Conclusion

Ultimately, EOL technology is costly to your business in multiple ways. Most technology providers give lots of notice when one of their products is going to be unsupported. That gives you time to assess your options and determine the path you should take. 

To help you assess your options download our 6 step action plan for handling software end of life.

Download the End of Life Playbook (PDF)

Editor’s Note: This article was originally published on June 2, 2020 and has been updated for freshness, accuracy and comprehensiveness.
Jun 02 2020
Jun 02

Blocks are an integral part of any Drupal website. They are chunks of content that can be placed in various regions and can be easily moved around the web page. Blocks can contain simple text, forms, or some complex logic.
The Block module is now a core module in Drupal 8 that can be enabled. Sometimes installing other core or contributed modules can make blocks available. Although these blocks can be modified to suit the layout, complete flexibility and customization can be only achieved with Custom blocks.
We can create a custom block programmatically or via the Drupal Interface. Here, we will be creating a block programmatically and enabling it through the admin interface.

Programmatically creating a block in Drupal 8 – A brief tutorial

How to Create a Custom Block in Drupal 8?

Let us get started with creating a custom block in Drupal 8 in a few simple steps -


1. Create a module

To create a custom block, it is necessary to create a “.info.yml” file in modules/custom directory. Here a custom directory does not exist. You will need to create it. Create a directory named “custom” under the module directory. And under “modules/custom” create a directory called “block_example”. This directory name will be the name of the module created.
Inside this folder that you just created, create a “<module name>.info.yml” file. Here it will be block_example.info.yml as the module name is block_example. Within this file, enter the following contents:
 

Create a custom block module


After creating the folder and file with the above content, go to the dashboard and enable the module you just created. The name of the module here is Block Example.

example block

2. Create a Drupal Block Class

Now to define the logic for the block, we must define the Drupal block class. We need to follow PSR-4 standard code for custom blocks. The php class of the block is placed under modules/custom/block_example/src/Plugin/Block directory. Create this folder structure and create a class named ExampleBlock.php under the Block directory.
This file should contain:

  • Annotation metadata - This will help to identify the Block created. To know more about Annotation check Annotations-based plugins.
  • Annotation contains:
      The “id” which is a unique, machine readable ID for the custom block created.
      The “admin_label” defines the human readable name of the custom block which is displayed in the admin interface.          
Example custom block

The ExampleBlock extends Blockbase class which will provide generic block configuration form, block settings, and handling of user defined block visibility settings.

Example Block extends Block base

Here we are displaying a markup in the block.

3. Enable the Block to display the content

  • After saving the file to enable the block, go to admin > Structure > Block layout.
  • Click on Place block under the region the block should be displayed. Here the block is placed in ‘Sidebar second’.
  • After clicking on Place block, search for the custom block you just created.
     
Place block
  • Click on Place block for the block you want to display. The configuration window opens where you can set the configuration as per requirement.
save custom block

Here the block is displayed for every user's front page. After the configuration is changed as per the requirement, click on Save block and come back to the site.

save custom block

The Drupal 8 custom block created is now visible in the region where the block is placed.

4.Methods used in the class created for custom blocks

  • build() : This method will render a render-able array. In this example a simple markup is returned. Even the complex contents like forms and views can also be returned.
  • blockAccess() :  This method defines a custom user access logic.
methods of custom block

                       • The AccessResult class is called here. 
                       • The method allowedIfHasPermission() checks if the current user has thepermission to view this content or not.
 

  • blockForm() : This method allows to define a block configuration form. 
custom block in drupal 8 module
  • blockSubmit() : This method is used to save the configuration defined in the previous method blockForm(). custom block in drupal 8
  • blockValidate() : This method validates the configuration form of the block. custom block in drupal 8
Jun 02 2020
Jun 02

During content creation, it is not uncommon to refer to external content, from simple documents or web pages to multimedia or specific content such as tweets or posts from other platforms.

Links are one of the pillars of the web, but sometimes you want something more integrated. If you want to refer to a tweet, why not embed it in our content? A very common case is a Youtube or Vimeo video so that it can be played without leaving the page. Another case can be to visualize a Scribd's PDF file.

Embedding contents with oEmbed

To achieve this there are Drupal modules specific to each case, or generic but focused on one area, such as those that integrate video services. Another strategy is to use something like oEmbed. oEmbed is a format that allows you to describe URL representations that can be embedded in other web pages. That is, it is a way by which a provider (YouTube, Twitter, Scribd, Flickr, etc) can describe to a consumer (our Drupal website, for example) how to display a provider's resource.

Or let's look at a practical example. This article has been tweeted by the Twitter Metadrop user. This tweet has a URL. Well, using oEmbed is enough to use that URL to get this result:

(Ooops, demo effect , tweet is not displaying...)

Fantastic! Obviously, the article has been tweeted and then quickly edited to add the tweet's URL, circular references were never easy!

URL Embed module

Embedding content using oEmbed requires the Drupal site to support this format. But we are lucky since the Drupal's Media Initiative has created the URL Embed module. The module integrates oEmbed and allows it to be used in CKEditor fields in a very simple way through a simple dialogue in CKEditor itself.

Diálogo de inserción de URL del módulo URL Embed.

Embeding a URL in this article on a new autoreference.

The list of supported providers is long, and includes providers of video, documents, photos, and many other things I honestly don't know about.

Let's do another test. How about a Vimeo video?

[embedded content]

Demostración del módulo GA Push.

¡Wonderful!

A Flickr's album?

Drupal Camp Madrid 2017

Great!

A SlideShare's document?

Security considerations

There's a delicate matter.  Through oEmbed, we receive HTML data from external sources that are displayed on our website. Potentially, this can create Cross-Site Scripting problems: if we insert a malicious JavaSript code, it will have access to our domain's cookies, for example. To mitigate this problem oEmbed suggests displaying the external data on a different domain using an iframe. Unfortunately, URL Embed does not have this possibility. Does this mean that this module opens a security hole? Not exactly. The point is that we must trust the provider. For example, it is not probable that a known service as YouTube to return malicious code in its oEmbed response, just like other services such as Vimeo, Flickr and so on (although not impossible, of course). But less well-known services, and therefore less subject to scrutiny, are more likely to return code that is not entirely secure, either intentionally or unintentionally. If we allow oEmbed responses from any provider we'll probably face some security problems in the future.

Therefore, it is enough to know the security implications and act with the head, as it usually happens in real life.

Conclussion

URL Embed is a good module even though it is still alpha. Today it has almost 2,300 installations and in our tests it has not failed. It is true that it is looking for maintainers and that it would love some contribution, but it is good enough to be used, always taking into account the security considerations.

Jun 02 2020
Jun 02

Agiledrop is highlighting active Drupal community members through a series of interviews. Now you get a chance to learn more about the people behind Drupal projects.

We spoke with Darren Fisher, digital transformation consultant, designer and front-end developer at the UK company Pivale. Read on to find out how Darren transitioned from working in the print industry to web design and development, and what are the things he most loves about Drupal. 

1. Please tell us a little about yourself. How do you participate in the Drupal community and what do you do professionally?

I am a digital transformation consultant, a digital designer and a front-end developer who occasionally dips into some back-end development when required. Each year I attend our local DrupalCamp in London and I’ve also attended several European DrupalCons over the years.

2. When did you first come across Drupal? What convinced you to stay, the software or the community, and why?

I was working as a graphic designer in the print industry and had bounced between a few different jobs but it was obvious that the print industry was in decline and I became more aware on a daily basis that this probably wasn’t going to be a long and successful career. 

My brother had been working as a Drupal Developer for around 6 years or so and had started his own Drupal agency and was looking to expand their design and front-end capabilities. 

He plucked me from my existing job art-working for holiday brochures and showed me the digital ropes and I’ve been with him ever since. I joined his company two weeks before DrupalCon Amsterdam in 2014 which he took me to and that was my baptism of fire!!

3. What impact has Drupal made on you? Is there a particular moment you remember?

Drupal has allowed me to cross over from the print industry and build professional websites for businesses with very little ramp-up time. I began by simply designing as I always had done in graphics packages such as InDesign, Illustrator and Photoshop and gradually learned site-building and theming. 

As the years have passed I’ve become more comfortable with diving into PHP and developing custom modules and doing more complex preprocess work for the front end. 

Drupal allowed me to build great websites from the get-go - launching my first client project within months of being introduced and as I’ve expanded my knowledge moving forward it has continued to support my development. Having a solid framework to work in and a good mentor has meant I could produce good quality work whilst growing as a professional.

4. How do you explain what Drupal is to other, non-Drupal people?

Drupal is simply a CMS - like WordPress but much more powerful, scalable and customizable and of course more secure. People often know WordPress so that’s the easiest comparison to make. I often describe the features of the CMS aspect of Drupal as that is what most non-technical people will be able to identify with.

5. How did you see Drupal evolving over the years? What do you think the future will bring?

Drupal has come on leaps and bounds since I came on board in 2014. Drupal 6 was on its way out and Drupal 7 was at its peak usage with Drupal 8 being merely on the horizon. 

I absolutely love Drupal 8 - especially being predominantly a front-end developer as the introduction of the Twig templating language allowed me to do a much better job of producing quality and scalable front ends - especially since the arrival of technology like Pattern Lab

I’m loving the fact that major content migrations between versions are now a thing of the past with the iterative update path and I can’t wait to upgrade all our clients to Drupal 9 without breaking the bank or indeed my soul!!

6. What are some of the contributions to open source code or to the community that you are most proud of?

I tend not to get too involved in the open-source aspect as I’m usually up to my eyeballs in client work but one way I often try to contribute is by writing blog articles to share discoveries I’ve made whilst working on complex client projects.

7. Is there an initiative or a project in Drupal space that you would like to promote or highlight?

I’m excited to see what the results of the front-end initiatives will be for both the new front and back-end themes.

8. Is there anything else that excites you beyond Drupal? Either a new technology or a personal endeavor. 

We’re working more and more with Vue.js and that excites us greatly. We’ve built a custom application for a space agency with Vue as well as dashboards for our multisite offering which helps developers see an overall picture of what is happening across multiple websites and we’re also building our new website with Vue.

As Drupal moves closer towards being a decoupled framework I’m excited to see how we can blend these two technologies together!

Jun 01 2020
Jun 01

As you might have heard, Drupal 9 is being released this Wednesday. There is a lot to celebrate, you’ll find evidence of Drupal 9 celebrations as teams prepare to upgrade to the new version of our favorite content management system. However, there is no distinct Drupal 9 logo to go with this release. Instead, a new evergreen logo will be used to represent all versions of the Drupal project and software. And there’s a good reason for that.

The Original Drupal "Logo"

To provide some context, when I first used Drupal 12 years ago, Drupal had a single recognizable branding element: the famous Druplicon. Not a true logo, the Drop icon is a well-loved community symbol: a character that has been adapted a thousand different ways in typical open-source fashion, just like Drupal itself. If you’ve ever attended a Drupal event, you’ve seen variations on this original drop. Although loved by Drupalers, it’s a bit of a curiosity to outsiders and probably too grass-roots for marketers and digital directors trying to select a solution for their next corporate website.

Druplicons A selection of Druplicons from druplicon.org

The Drupal Wordmark

When Drupal 7 was released, a word mark came along around the same time. As Drupal gained wide adoption by large organizations, the wordmark provided consistency and an easily recognizable symbol of the Drupal project, used by insiders and outsiders alike.

Drupal word mark stickers

The Drupal 8 Logo

When Drupal 8 was released, a stylish drop emerged to represent this new version of the software. With the cut-out of an 8 inside a drop, the logo is simpler and sleeker than the Druplicon. We used it in pitch decks and product comparisons, and having a more mature logo allowed us to visually represent the modernization in the underlying technology of Drupal 8.

The Drupal Evergreen Logo

If you, like me, tend to have a dozen or so Drupal.org tabs open at a time, then you’ve already seen the new Drupal evergreen logo. Our friend the Druplicon has morphed into a sleeker droplet. The observant among you will recognize its origins in the DrupalCon brand. The drop shape is the same, stripped of the hexagonal treatment, and  showing the light Drupal blue color.

And that slight shift in branding is just like Drupal 9 itself. Drupal 9 is an upgrade of the underlying technology (Symfony and its related libraries), so that Drupal can keep innovating. It’s a big deal that migrating to Drupal 9 is no big deal.

Drupal 9.0 is a huge improvement on Drupal 8.0, so much effort has been put into carefully scheduling and releasing feature after feature over the last 4 years. Each feature releases since Drupal 8 came out has progressively made Drupal more powerful and more mature. And for those who upgrade to Drupal 9, features like a new admin UI, a new default theme, and other continuous improvements will continue to be added. Just like a logo that is tweaked until it’s right, it’s a platform that keeps innovating and improving. The Drop is always moving.

Drupal Logos

A Community Effort

Like everything else, the creation of the Drupal Evergreen Logo was a community effort. Huge thanks to Sixeleven for creating the logo (generously donating their time during the peak of Italy's COVID crisis). Thanks to Gábor Hotsjy for pushing the project ahead along with all things Drupal 9, and to the Drupal Association for making it happen. Let me know if you want to get involved in the Promote Drupal Initiative to help with similar projects in the future!

Show Me the Logo!

You can download the new logo, the wordmark, and the Druplicon from the Drupal Media Kit and take a look at Drupal’s Brand Book and marketing materials from the Promote Drupal initiative.

Jun 01 2020
Jun 01

Part 1 | Part 2 | Part 3

Decoupled Drupal has been a hot topic in the Drupal community for several years now, and there are now many projects implementing decoupled Drupal architectures, as well as a bevy of content (including my own articles on the subject). Nowadays, decoupled Drupal practitioners can now benefit from the first-ever comprehensive book about decoupled Drupal as well as a yearly decoupled Drupal conference. Presently, especially with the JSON:API module now available as part of Drupal core, getting started with decoupled Drupal has never been more accessible to more developers.

Nevertheless, there are still hidden areas of decoupled Drupal that have seldom seen much attention in the Drupal community for a variety of reasons. Some of these contributed Drupal modules have been around for quite some time and can help to shorten the amount of time you spend implementing a decoupled Drupal architecture, whether it comes down to a differing API specification or extending existing functionality.

Recently, your correspondent (Preston So, Editor in Chief at Tag1 Consulting and author of Decoupled Drupal in Practice) delivered a DrupalCon Seattle session about some of these lesser-known parts of the decoupled Drupal ecosystem. In this multi-part blog series, we embark on a tour through some of these exciting areas and dive into how these projects can accelerate your builds. In this second installment, we cover how you can leverage the RELAXed Web Services module for own purposes and how you can extend existing features in the JSON:API module now incorporated into core.

Working with RELAXed Web Services

Before we proceed, be sure to read the first installment in this series for a quick introduction to decoupled Drupal and a taxonomy of the architecture involved. The first installment in this blog series also introduces RELAXed Web Services and how to install and configure the module. From this point forward, it is presupposed that you have a working Drupal 8 site with RELAXed Web Services installed and configured.

To verify that RELAXed Web Services is working properly, we can issue the following GET request against the /relaxed endpoint (or whatever we have configured the URL in the previous installment of this blog series). The Drupal server should respond with a 200 response code and the following response body:

    {
      "couchdb": "Welcome",
      "uuid": "02286a1b231b68d89624d281cdfc0404",
      "vendor": {
        "name": "Drupal",
        "version": "8.5.6",
      },
      "version": "8.5.6"
    }

Retrieving data with RELAXed Web Services

The following table describes all of the GET requests that you can issue against a variety of resources provided by RELAXed Web Services.

RELAXed Web Services response

The screenshot below demonstrates a sample RELAXed Web Services response to a GET request targeted to retrieve a single Drupal entity.

RELAXed Web Services response

Creating entities with RELAXed Web Services

To create documents, which in RELAXed Web Services parlance are equivalent to Drupal entities, you can issue a POST request to the /relaxed/live endpoint (or prefixed with the custom API root you have configured) with the following request body. The server will respond with a 201 Created response code.


    {
      "@context": {
        "_id": "@id",
        "@language": "en"
      },
      "@type": "node",
        "_id": "b6cea743-ba86-49b0-81ac-03ec728f91c4",
        "en": {
          "@context": {
            "@language": "en"
          },
        "langcode": [{ "value": "en" }],
        "type": [{ "target_id": "article" }],
        "title": [{ "value": "REST and RELAXation" }],
        "body": [
          {
            "value": "This article brought to you by a request to RELAXed Web
    Services!"
          }
        ]
      }
    }


Because a full description of RELAXed Web Services is well beyond the scope of this survey blog series, this section provided just a taste of some of the ways in which RELAXed Web Services differs from some of the other API approaches available in the decoupled Drupal ecosystem, including Drupal 8's native core REST and HAL (Hypertext Application Language).

Nonetheless, for developers looking for RESTful solutions that are more flexible than core REST and better-suited to offline solutions than JSON:API in many cases, RELAXed Web Services provides a powerful RESTful alternative. For more information about RELAXed Web Services and information about modifying and deleting individual documents remotely in Drupal, please consult Chapters 8 and 13 of my book Decoupled Drupal in Practice.

Extending JSON:API with Extras and Defaults

Oftentimes, when using modules like JSON:API, which is now available as part of Drupal 8 core for developers to leverage, we need to override the preconfigured defaults that accompany the module upon installation. Luckily, there are two modules available in Drupal's contributed ecosystem that can make this process much easier, especially given the fact that JSON:API aims to work out of the box as a zero-configuration module.

The JSON:API Extras module provides interfaces to override default settings and configure new ones that the resulting API should follow in lieu of what comes off the shelf in the JSON:API module. Some of the features contained in the module include capabilities such as enabling and disabling individual resources from the API altogether, aliasing resource names and paths, disabling individual fields within entity responses, aliasing constituent field names, and modifying field output through field enhancers in Drupal.

You can install both modules easily with Composer. JSON:API Defaults, which we cover later in this section, is available as a submodule of JSON:API Extras.

    # Install JSON:API Extras.
    $ composer require drupal/jsonapi_extras
    $ drush en -y jsonapi_extras

    # Install JSON:API Defaults.
    $ drush en -y jsonapi_extras jsonapi_defaults

In the following image, you can see how we can override certain preconfigured settings in JSON:API such as disabling the resource altogether, changing the name of the resource type, and overriding the resource path that follows the /jsonapi prefix.

Add JSON:API resource

In the image below, field customization is displayed in JSON:API Extras, a feature that allows you to alias fields and perform other actions that permit you to customize the response output in a more granular way. As you can see, one of the most compelling motivations for JSON:API Extras on your own implementation is the notion of full customization of JSON:API's output not only at the resource level but at the field level as well.

Field customization

JSON:API Defaults

Formerly an entirely separate module maintained by Martin Kolar (mkolar), JSON:API Defaults allows you to set default includes and filters for resources in JSON:API. JSON:API Defaults is particularly useful when consumers prefer issuing slimmer requests without the parameters required to yield a response that includes relationships in the payload. In other words, you can issue a request without parameters and receive a response having predetermined defaults such as includes.

Though a full discussion of JSON:API Defaults is outside the scope of this rapid-fire survey of the lesser-known parts of the decoupled Drupal ecosystem, I highly encourage you to check out Chapter 23 in my book Decoupled Drupal in Practice, which engages in an in-depth discussion of JSON:API Extras and JSON:API Defaults.

Running Drupal remotely

Sometimes, merely interacting with Drupal content through APIs in decoupled Drupal is insufficient for the use cases and requirements that our customers demand. Deeper functionality in Drupal is often required remotely for consumer applications to access, particularly actions such as performing a cache registry rebuild or running a cron job. But these do not necessarily fit neatly into the normal API-driven approaches for Drupal entities, because they are not part of the RESTful paradigms in which Drupal generally operates out of the box.

In decoupled Drupal and other software ecosystems, remote procedure calls (RPCs) are calls that execute a procedure on another system, written as if they were local actions, without direct code written against that other system. In short, in the decoupled Drupal context, they are a convenient way for consumer applications to perform tasks remotely without their developers needing to understand the nuts and bolts of the upstream system. In the next installment of this blog series, we'll cover Drupal's RPC approach for decoupled Drupal and how you can leverage it for a variety of tasks you need in your client.

Conclusion

In this blog post, we surveyed several of the major API-first solutions available for decoupled Drupal aficionados that have not received as much attention as of late, including RELAXed Web Services and supplementary modules that provide additional features like JSON:API Extras and JSON:API Defaults. Over the course of this post, we covered how to retrieve entities using RELAXed Web Services and how you can customize your JSON:API resources and fields to your heart's content.

In the following installment of this multi-part blog series, we dive into JSON-RPC, the RPC provider for decoupled Drupal and discuss how to perform certain tasks using the JSON-RPC module. In addition, we'll cover derived schemas and API documentation, two of the most important concepts in the emerging API-first landscape that is beginning to gain significant attention in the headless CMS community.

Special thanks to Michael Meyers for his feedback during the writing process.

Part 1 | Part 2 | Part 3

Photo by Stefan Steinbauer on Unsplash

Jun 01 2020
Jun 01

Drupal 8's Layout Builder allows content editors and site builders to easily and quickly create visual layouts for displaying content. Users can customize how content is arranged on a single page, or across types of content, or even create custom landing pages with an easy to use drag-and-drop interface. Our recently contributed module - The Layout Builder Asset Injector module is definitely not a replacement for theming, but it provides site administrators with a quick and easy approach. The Layout Builder Asset Injector module allows site builders to add CSS and JS to the layout builder blocks. 

| Benefits 

  • It allows you to inject CSS and JS within the layout builder blocks without the need to add it in the codebase.

  • Append unique CSS and scripts specific to layout builder blocks

  • It provides content editors with basic knowledge of CSS and JS to style their individual layout builder blocks and add short JS scripts to modify the behaviour.

  • Instead of adding CSS and JS on a page level, this module allows you to inject them on an individual block.

| CSS Injector

CSS Injector allows administrators to inject CSS into the page output based on configurable rules. It's useful for adding simple CSS tweaks without modifying a site's official theme.

| JS  Injector

JS Injector allows administrators to inject JS into the page output based on configurable rules. It's useful for adding simple JS tweaks without modifying a site's official theme.

Note: Block class will be appended automatically to each CSS.

For example when we add a CSS as given below:

h1.node__title {

  background-color:red;

}

It will automatically append the class of the block for which CSS is added once saved.

.block-field-blocknodepagebody h2.node__title{

   background-color:red;

}

 

Layout Builder Asset Injector Drupal module

| How does it work? 

  • Enable the Layout Builder Asset module

  • After you enable the module, enable the layout option from the manage display section as shown below:

Layout Builder Asset Injector Drupal module

Layout Builder Asset Injector Drupal module

Layout Builder Asset Injector Drupal module

To understand Layout Builder in detail refer  https://www.drupal.org/docs/8/core/modules/layout-builder

  • You can add your styling and scripts under the CSS and JS fields respectively

  • To make the styling and scripts specific to a block, add classes under the Classes text field. This class should be unique so as to reflect scripts and styling specific to a block.

  • On adding the CSS and JS and saving the configuration, it will automatically prefix the CSS with a custom class added.

Note: You don't need to add it manually.

Layout Builder Asset Injector Drupal module

Layout Builder Asset Injector Drupal module

 https://www.youtube.com/watch?v=3Ogya_66GDU&feature=youtu.be

| Implementing the Layout Builder asset injector module 

Click here for the steps to install the Layout Builder asset injector module - https://www.drupal.org/docs/8/extending-drupal-8/installing-drupal-8-modules

[embedded content]

| Developer support

Kishor Kolekar: https://www.drupal.org/u/kishor_kolekar

Harshal Pradhan: https://www.drupal.org/u/hash6

Abhishek Mazumdar: https://www.drupal.org/u/abhisekmazumdar

Hardik Patel: https://www.drupal.org/u/hardik_patel_12

Naresh Bavaskar: https://www.drupal.org/u/naresh_bavaskar

| Module download link 

https://www.drupal.org/project/layout_builder_asset

| Alternative module links 

https://www.drupal.org/project/asset_injector

https://www.drupal.org/project/layout_builder_styles

Jun 01 2020
Jun 01

While trying to build a form, I found that it would be useful to have a one-click/touch option to clear text field values instead of selecting all the text and removing it. Even though this appears like a small issue, solving this would make users life easy! This was the driving force behind creating the Clear Field Values module for Drupal 8. The Clear Field Values module provides a way to clear data in the text field values with a single click/touch.

| Clear Field Values module

This module adds a button to clear text field values in one click/touch and provides two options at present, one is a simple cross button and the other is using font awesome icons.

| Benefits 

  • Helps clear the entire input field without having to delete the whole text manually 

  • Clears a pre-suggested input present in the input field, that the user does not require.

| Implementing the Clear Field Values module

Follow these steps to configure the Clear Field: 

  1. Go to /admin/config/clear-field/settings steps

  2. Enable Clear Field by selecting the checkbox 

  3. Next, select the type of Button:

    1. Simple X 

    2. Fontawesome for all generic fields

  4. You can then add the text and tooltip which you need to add along with icon or keep it empty if not required.

  5. Add classes for the text field elements where you need the cross button to be visible.

Step 1 : Move to  Settings page /admin/config/clear-field/settings 

Step 2: Enable Clear Field Checkbox

Select Type of Button

  1. Text along with X for all

Selecting the above option would add X(cross) with text beside the text field

  1. Font Awesome for all fields generic

Enable FontAwesome module https://www.drupal.org/project/fontawesome and you can add the cross button

Default values for the text of the icon and tooltip are Clear Field & Clear field value which can be overridden.

Default values for the Classes are form-text form-email separated by a space.

For a custom-form add custom classes defined under element’s attributes under Classes field.

[embedded content]

| Developer support

This module is supported by 

  1. Harshal Pradhan https://www.drupal.org/u/hash6

  2. Kiran Kadam https://www.drupal.org/u/kirankadam911

| Module download links

https://www.drupal.org/project/clear_field

https://www.drupal.org/project/clear_field/releases/8.x-1.x-dev

Do send in your feedback around this module! We would love to hear from you. 
 

Reference: https://www.geeksforgeeks.org/html-clearing-the-input-field/

Pages

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