Planet Drupal

Syndicate content - aggregated feeds in category Planet Drupal
Updated: 59 min 38 sec ago

Don't Panic: A blog about Drupal: Automatic image compression in Drupal

Tue, 02/11/2020 - 14:00

"A picture is worth more than a thousand words". True, but a large picture will make your webpage slower, which will affect your SEO in a negative way. And eat away at your servers space, megabyte after megabyte.

There are several ways to remedy such a behaviour, but one way is to use image compression services to save space. With online services or programs on your computer you can remove unnecessary information and compress images with sometimes up to 80% gain.

Here I'm going to show you how to integrate the TinyPNG service in your Drupal installation which automatically compresses your images.


There are many different services on the internet, but one of the best I have found is TinyPNG - and it's supereasy to implement on your Drupal site.

It's also super easy to see if you can benefit from using their service. If you visit their Page Analyzer and enter your site url, you will be presented with statistics. If you are over 25% savings, I would suggest you start using a compression service.

Step 1: Installing the Drupal module

By using composer to install the module and the TinyPNG library, it's super easy to get started.


composer require drupal/tinypng

in your terminal. Composer downloads the module, places it in the correct folder and downloads its dependency - TinyPNG PHP Library - and places it in the vendor folder.


Head into your Drupal website and click Extend in the menu. Scroll down (or filter) to TinyPNG and activate the module. 

Step 2: Getting an API key

API Key? What's that? Well, to make TinyPNG accept the requests from your website to the service you need an API key. It's a way of saying "howdy, can I get some service". It's also a way for TinyPNG to track how many images you get compressed per month. Don't worry, you get 500 for free every month, so unless you upload more that that, you're in the clear

If you should send more than 500 requests then you won't get access to the service until next month - or if you pay for the service. 

For normal use, 500 requests should be enough.

Getting an API key couldn't be simpler. Just visit the developer section of and enter your name and email. 

You get an email with a link. Click it, and - boom! - you're in. On the page you can see your API key and also a counter that lets you know how many requests TinyPNG has processed using your unique API key.

Step 3: Make the magic work in Drupal

Click the Configuration link in Drupal's menu and look under Media. There you find TinyPNG Settings. Click it.

Now it's time to copy the API code you got from the TinyPNG service. Paste it into the field on the settings page and hit Save configuration.

Step 4: Choose your compression method

The module facilitates two different kinds of image compression: on upload or via Drupal's own Image Styles - or both. I myself use the uploading kind since I then know that I won't reach the monthly limit through the API. If I would use the image style version, then I could reach - and pass - the limit in a fast way since I manage a site with a lot of images. Sure, I don't need to use the image action on every single Image style I have in Drupal, but I sure would be tempted to do so. 

If you choose to use the TinyPNG API whn uploading you get two options under Integration method: Download and Upload. They are the same, the only thing to remember is to use Upload on your local installation and Download on your live server. The help text says it all: "The download method requires that your site is hosted in a server accessible through the internet. The upload method is required on localhost." Though, personally, the names could be better. But anyway, it does the job.

Step 5: Save some megabytes

Well, actually there isn't a step 5. After installing the module with its dependencies, entering your API key there isn't much more. Just sit back, relax and watch the images shrink when uploading and/or showing them to the users making their experience on your website faster and better.

Some numbers

Here is also a comparison before and after using TinyPNG.

Type   Before compression   After compression   Saved, %Image 1, PNG   1.1 Mb   267 Kb   75%Image 2, PNG   1.1 Mb   287 Kb   75%Image 3, PNG   1.2 Mb   269 Kb   77%Image 4, PNG   985.7 Kb   274.0 Kb   72%Image 5, PNG   5.6 Mb   1.5 Mb   73%Image 6, JPG   3.5 Mb   524 Kb   84%Image 7, JPG   197 Kb   104 Kb   47%

1xINTERNET blog: How-to: Obtain User Consent Prior to Loading Videos

Tue, 02/11/2020 - 11:52
How-to: Obtain User Consent Prior to Loading Videos Diego Costa 11. February 2020


Displaying videos from YouTube and Vimeo on websites is a common practice used by many companies to create more engaging experiences for their visitors. While it is important to offer customers a great experience, it is also imperative to make sure your site visitors understand what's happening as they interact with your site.

We have developed a visually engaging solution for this. In this blog post we show the solution we have created with screenshots, code snippets, and live examples.

Web Wash: Managing Media Assets using Core Media in Drupal 8

Tue, 02/11/2020 - 11:21

A lot of media functionality has been added into Drupal core over the last few releases. First, we got the Media module in 8.5 which offers fieldable media types. Then we got the Media Library module which offers a popup where users can select media assets. Now for Drupal 8.8 and above you have the ability to embed media assets directly into the editor.

There are three important parts when it comes to media functionality. You need the following:

  • Store media assets (media types)
  • Reuse media assets (media library)
  • Embed media assets

As of Drupal 8.8+,  the above-mentioned functionality is all supported in Drupal core without installing any extra modules.

This functionality could be achieved before Drupal 8.8 by using Media entity, Entity embed and Entity browser. But required a fair bit of site-building and configuring. However, now all you need to do is install Media and “Media Library” and you’re good to go.

In this tutorial, you’ll learn how to create and manage assets, using the Media field and Media library. Then we look at how to embed assets directly in the editor. We finish things off by creating a custom media type to manage Instagram posts.

Specbee: CSV Import to Migrate Drupal 7 to 8 - A complete guide

Tue, 02/11/2020 - 10:31
CSV Import to Migrate Drupal 7 to 8 - A complete guide Maithri Shetty 11 Feb, 2020 Top 10 best practices for designing a perfect UX for your mobile app

A Drupal 7 to 8 migration is anything but boring because there are so many ways to perform a migration! Depending on the complexity of the project, we can choose a technique that suits it best. The one we are going to discuss in this blog is to migrate content and configuration from Drupal 7 to Drupal 8 using a CSV import method.

Drupal provides various modules for importing data from different sources like JSON, XML and CSV. Drupal 8 core migration API system offers a whole suite of APIs that can essentially handle any kind of a migration from a previous version of Drupal to Drupal 8. 

Some prep Work before the Drupal 7 to 8 migration

In order to migrate from Drupal 7 to Drupal 8 using CSV import, we will need these modules.

Drupal 7 Modules -

  • Views Data export: This module needs to be installed in our Drupal 7 site. The Views Data export module helps in exporting the data in CSV format.

  • Views Password Field: This module helps to migrate passwords which will send passwords in hashed format. 

Drupal 8 Modules -

  • Migrate – The Drupal 8 Migrate module helps in extracting data from various sources to Drupa 8.

  • Migrate Plus – This Drupal 8 module will help in manipulating the imported source data

  • Migrate Drupal – This module offers support in migrating content and configurations to Drupal 8.

  • Migrate source CSV – This module offers a source plugin that can migrate entities and content to Drupal 8 from .csv files.

  • Migrate Tools – This Drupal 8 module helps by offering UI tools/Drush commands to manage migrations.

  • Configuration Development Module – This module helps in importing configuration files to Drupal 8.

Let the Drupal 8 migration begin!

First, we need to create a custom module for our Drupal 8 migration. Let’s name this module as test_migrate. And we know that after creating a custom module we need to create the info.yml file.

Above screenshot shows keys that are required for info.yml.

Once the info.yml file is created, we need to create a migration group for the migration. This migration group needs to be created in the path: test_migration > config > install. Name of the group should be migrate_plus.migration_group.test_migration.yml.

Above screenshot shows the folder structure to create a migration group.

Inside the migrate_plus.migration_group.test_migration.yml file, we need to write id, label and description for the migration group which is shown in the screenshot below.

After creating the migration group, we need to install this group in our info.yml file. 

Now, we are going to write a migration script for the Users, Taxonomy term, Paragraphs, Content types. Note that you are migrating in the same order since there will be a link between these entities. For example, content will be created by a particular user - so we first need to migrate users and after that taxonomy, content type.

Now let’s write a script in yaml file for user migration. So, in order to write user migration, we need user yaml file with the name migrate_plus.migration.test_migration_users.yml and script for migration is shown below.

These are the keys required for migration here source csv file which we need to be migrated. Csv files should be placed in the path assets > csv > user.csv. Users.csv is also shown below.

Path - It indicates the path for the csv file.

header_row_count - This will give row count which is the header of a particular column.

Keys - which should be unique for every row.

Process - In this we are mapping csv files to fields.

Above image shows the mapping between fields and csv. Here, the name is the machine name of the user name field and title is the csv column title. If we have multiple data for a single field, then we use delimiters. Users may have multiple roles in that case we write like shown in the above image.

Images are migrated by writing custom plugin. Custom plugin can be written in the path src > plugin > migrate > process. In the above picture you can see that the user_image_import_process is a custom plugin written to migrate user images.

Inside UserImportProcess.php we are writing the function which will copy the image and save it to the destination. Script is shown in the image below.

In order to identify where images should be saved we will write one more function ImageImportprocess. In that function we will mention the machine name of the image.

In the users info.yml file there is a destination section which will indicate where the migrated data is to be stored and which is an entity. This is marked in the image below.

After creating code for users, we need to write yaml for taxonomy terms. Note that if you have only title field in your taxonomy then you do not need to write a separate yaml file. If you have multiple fields in taxonomy term, then you need to write a separate yaml file. In taxonomy terms we will have tid as key since tid will be unique for each term.

After this we will migrate paragraphs. For that we need to create a separate yaml file. The code to migrate is shown in the below image.

Lastly, lets migrate the content type. The yaml file for the content type is shown in the code below.


label: 'Migrate Content type data from the csv file'

migration_group: test_migration

source:id: test_migration_content

 plugin: csv

 # Full path to the file.

 path: 'modules/custom/test_migrate/assets/csv/content.csv'

 header_row_count: 1


   - nid


 # Adding the mapping between the fields and the csv columns.

 title: title

 promote: promoted_to_front_page

 sticky: sticky

 field_display_name: display_name

 field_marketing_tagline: marketing_tagline


   plugin: entity_lookup

   source: Taxonomy

   entity_type: taxonomy_term

   bundle_key: vid

   bundle: taxonomy

   value_key: name

 body/value: body


   plugin: default_value

   default_value: "full_html"


   - plugin: explode

     delimiter: "|"

     source: fcid

   - plugin: skip_on_empty

     method: process

   - plugin: migration_lookup

     migration: test_migration_paragraphs

     no_stub: true

   - plugin: iterator


       target_id: '0'

       target_revision_id: '1'


 plugin: 'entity:node'

 default_bundle: content



   - test_migration_paragraph

   - test_migration_taxonomy

dependencies: { }

After writing all the yaml files the migration will contain the below installs.

Once you finish all these steps, go to your site and install your custom module.

Next, go to your project in terminal and run this “drush ms” command to check migration status as shown in the below image.

To migrate use command drush mim migration-id . We can see the migration ID in the above image.

Once done, if you check the migration status you can see the number of migrated items.

Now you can observe that all the content is migrated. If there is any error in the data migration, the process will terminate at that particular instance. Check the issue with that content and then once again you can restart the migration.

Things to Remember

  • If the migration is terminated in between the process, the status of migration will display as “importing”. In order to change the status to idle you need to run the command drush mrs migration-id. Next, run command drush mim migration-id

  • If you want rollback the migrated content, then run the command drush mr migration-id

  • If you have changed anything in the code after starting the migration process, then make sure you run the command drush cdi test_migration. This command will help you to reflect the changes while migrating. Once done, do a thorough check on your site to see if all the content is migrated.

Migrating content from Drupal 7 to 8 using this CSV import method is one of the many ways of a Drupal 8 migration. If you need assistance in migrating any of your Drupal projects to Drupal 8, contact our expert Drupal developers now.

Drupal Planet Shefali ShettyApr 05, 2017 Subscribe For Our Newsletter And Stay Updated Subscribe

Leave us a Comment

  Shefali ShettyApr 05, 2017 Recent Posts Image CSV Import to Migrate Drupal 7 to 8 - A complete guide Image Configuring the Drupal 8 Metatag Module Image Implementing Google Directions Module in Drupal 8 – A quick guide Want to extract the maximum out of Drupal? Contact us TALK TO US Featured Success Stories

Know more about our technology driven approach to recreate the content management workflow for [24]


Find out how we transformed the digital image of world’s largest healthcare provider, an attribute that defined their global presence in the medical world.


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


OpenSense Labs: We’re heading to Florida DrupalCamp 2020

Tue, 02/11/2020 - 07:10
We’re heading to Florida DrupalCamp 2020 Jayati Tue, 02/11/2020 - 11:40

Florida Drupalcamp 2020 is the event that celebrates open-source software and brings together a worldwide community of Drupal users, developers, marketers and content specialists to a spot. The brightest of minds share their expertise, level up their skills, and make new friends in the community every year. 

This year, OpenSense Labs is a Silver Sponsor for Florida Drupalcamp 2020! To be held from 21-23 February 2020, the event will provide for a platform where developers, designers, and marketers gather to explore the most ambitious and cutting edge case studies.

Catch us here!

If you're going to be around during the camp, do not miss out on these sessions: 

Session 1: Centralised content distribution and syndication demystified. Why and how? Saturday, February 22 | 2:15 pm - 3:00 pm

A central content repository allows the content editors to edit content directly from the backend of one site. Using the publisher site, organizations can publish, reuse, and syndicate content across a variety of subscriber sites and publishing channels.

The session will stress the importance of having a centralized reporting to boost the editorial teams’ productivity & article publication pace.

At the end of the session the attendees would be able to take away the following:

  • Centralized Content Distribution Architecture.
  • Real-time content syndication by setting up publisher and subscriber sites.
  • Configuring content schema between publisher and subscriber sites.
  • Minimizing Failures during data transmission.
  • Choosing the right infrastructure for content distribution.
Session 2: Architecting a Highly Scalable, Voice-Enabled and Platform Agnostic Federated Search  Sunday, February 23 | 9:30 am - 10:15 am

Vidhatanand will be sharing how we have built an enterprise search over the traditional by tinkering with robust Apache Solr and Drupal 8, leveraging portability using Java Script and with a diverse range of CMSs, thereby increasing efficiency by 40%.  

He will walk you through the complex architecture of federated search and challenges amidst architecting a microservice. You will be equipped with the know-how of:

  • Enhancing website search experience retaining a blend of useful and accurate results.
  • Expanding inter-site searchability decreasing the bounce rate and latency.
  • Increasing data discovery and interoperability of information by cross-functional support to a plethora of platforms. 
See you there!

Taking this great opportunity to be a part of Florida DrupalCamp 2020 we can’t wait to connect with you about the amazing things our team has to offer. Come stop by and say hello to get your hands on some cool Drupal swag!

When: 21-23rd February 2020 

Where: Florida Technical College, 12900 Challenger Parkway, Orlando, Florida 32826

blog banner blog image drupal camp Drupal florida Blog Type Articles Is it a good read ? On

Community Working Group posts: Mental Health First Aid Training at DrupalCon Minneapolis

Tue, 02/11/2020 - 01:22

The Drupal Community Working Group (CWG) is pleased to announce that registration is now open for a full-day Mental Health First Aid workshop on Sunday, May 17, 2020 (the day before DrupalCon Minneapolis begins) in Bloomington, Minnesota. 

The workshop will be held "field trip" style; it will be held off-site, at the Health Counseling Services facility in Bloomington, Minnesota, from 8:30am-5pm. Transportation will be provided to and from a location near the Minneapolis Convention Center (the site of DrupalCon) to the workshop. Following the workshop, attendees are invited to (optionally) attend a pay-on-your-own group dinner to decompress and discuss the day's workshop.

The CWG believes that these types of proactive workshops will help improve our community's mental health literacy and awareness, as well as making it easier for us to have open, honest, and respectful conversations and potentially spotting signs of when community members are in need of assistance.

The Drupal Association is generously sponsoring the workshop by providing funding to help defer the cost of the workshop as well as providing transportation. 

From the Mental Health First Aid website:

Mental Health First Aid is a course that gives people the skills to help someone who is developing a mental health problem or experiencing a mental health crisis. The evidence behind the program demonstrates that it does build mental health literacy, helping the public identify, understand, and respond to signs of mental illness.

Mental Health First Aiders learn a single 5-step action plan known as ALGEE, which includes assessing risk, respectfully listening to and supporting the individual in crisis, and identifying appropriate professional help and other support. Participants are also introduced to risk factors and warning signs for mental health or substance use problems, engage in experiential activities that build understanding of the impact of illness on individuals and families, and learn about evidence-supported treatment and self-help strategies.

Over the past few years, the CWG has organized proactive community health events, including on-going Code of Conduct contact training, as well as previous DrupalCon North America trainings on leadership, teamwork, and communications. 

In order for the workshop to proceed, we need at least ten community members to register by April 1, 2020 at

When registering:

  • Choose the "Pay now" option (do not select the "Bill my organization" option.
  • Use the coupon code: MHFA30 to receive $30 off the regular price.
  • For the "Name of organization", "Name of site", "Supervisor's name", and "Supervisor's phone" fields, feel free to use "not applicable".

Jacob Rockowitz: Webform module now supports variants, which can be used for A/B tests, segmentation, and personalization

Mon, 02/10/2020 - 21:40


To perform A/B testing, segmentation, and the personalization of a webform, a site builder needs to create a variant of the form that can be triggered based on certain contexts, which can be as simple as a custom URL.

A webform variant might alter a form's labels, descriptions, and even its confirmation page. A webform variant could be used to create an A/B test to confirm if a tweak or improvement to a form's user experience increases the rate at which the user completes a form. A basic A/B test would randomly load two variants, allow a defined number of users to complete the form, and then review the results to determine which variant had the highest completion rate. The most successful variant can then be permanently applied to the webform.

A webform variant can also be used to create a personalized webform based on a user's demographics. For example, webform's available inputs, labels, and even options could be altered based on a user's gender, age, locale, employer, etc. Even subtle tweaks can improve a form's user experience - for example, removing inappropriate disease options or inputs based on a user's gender can simplify an appointment request form.


Right now, the one out-of-box solution is to create multiple instances of a webform and route users to the appropriate webform. The biggest issue with having multiple webforms is that, in doing so, it collects two different datasets. Ideally, all submission data should go into the same results table to be analyzed with just the user experience changing. You can also use conditional logic to tweak hide/show elements and disable/enable certain behaviors.

Both approaches have limitations and lack some organization. For A/B testing, it is possible to alter a form via JavaScript. Still, this approach is limited to front-end tweaks - for example, you can't change an element's server-side conditional logic using...Read More

Mediacurrent: Cloudflare Workers to Extend Drupal

Mon, 02/10/2020 - 17:21

Drupal provides a rich ecosystem of tools and features to turn your content system into an effective and performant platform. But it's not the only technology you want to rely on to reach your audience. Integrating with third-party systems can provide high-value experiences, such as:

  • External search technologies like Solr and ElasticSearch are fast, flexible and scalable to satisfy even the largest workloads
  • Messaging services like SendGrid or Twilio can manage delivery and tracking for important notifications

Another technology that websites depend on to be fast and reliable is a content-delivery network, or CDN. These systems help manage user traffic and deliver content as fast as possible while limiting how much work is required of the servers that actually host your website. 

Cloudflare CDN

Cloudflare is one of the big names in the CDN world and they're showing that their global network can do much more with the introduction of Cloudflare Workers. This is a new feature using the V8 engine that is also used by Chromium and Node.js. 

Workers operate on Cloudflare's network to process every inbound request. While many integrations, like Solr search, affect the user experience after reaching the site, Workers kick in before the user reaches the site. Similar to cloud services that are marketed as "serverless," Cloudflare takes care of managing the deployment and workload concerns.

Rather than running on an individual’s machine (e.g a browser application or on a centralized server), Workers functions run on Cloudflare’s Edge Network - a growing global network of thousands of machines distributed across hundreds of locations. Each of these machines hosts an instance of the Workers runtime, and each of those runtimes is capable of running thousands of user-defined apps.

- Source: Cloudflare Workers - How it Works

Written in Javascript, Workers can be created and edited in the Cloudflare web console or through CLI tools. There is also a very handy selection of templates to get started:

What does this mean if you're operating a Drupal site? Workers provide a new outlet to expand the functionality of your application, help replace or simplify existing features, or get access to tools that are otherwise limited to large-scale hosting plans. In some cases, a Worker can replace a module that you need to install and maintain -- or even build yourself. In other cases, using Workers can help reduce the load on your application database, by handling redirects for example. Workers also expand on Cloudflare's security benefits, by blocking malicious traffic before it reaches your application server.

Use Cases A/B testing

A/B testing, or split testing, is one common way to compare two different pages, to measure the effectiveness of the content or design. Users to a specific URL are shown version A or version B, based on random assignment or a cookie assigned to certain users. Cloudflare Workers provide an easy-to-use template to get this working on your site.

Use this instead of a Drupal module: A/B Test JS

Bulk Redirects

The Redirect module provides a great way for editors to manage redirects from one URL to another. Workers can accomplish the same thing with even more flexibility. Managing these redirects at the edge also can save the load on your application server. For a site migration, this can be especially useful to route traffic between the new application and the old one.

Use this instead of a Drupal module: Redirect

Respond to Requests based on Geolocation or IP

For marketing or commerce needs, it's more effective to know something about a user when they first reach the site. Where is the user located in the world? Is the visitor using the organization's internal IP address? By knowing this kind of information, you can make smart decisions about how to route the request or what language to show the user. Workers have access to the incoming request in order to manage these choices, by setting a cookie or routing to different versions of the application. For sites with a global audience and varying needs, this type of flexibility is critical.

Use this with Drupal's Multilingual features. 

Prepopulate a Contextual Filter

The Views module is the lifeblood of any dynamic Drupal site, and integrating with contextual filters helps manage the complex mix of content and taxonomies. What's better than showing these filters in a dropdown? Anticipating the user's needs and prepopulating the contextual filter. Similar to above, we can make certain assumptions about our user based on their geolocation, for example, and set a cookie that is read by Views. This kind of efficiency can improve the user experience and make it easier for visitors to accomplish their task on the site.

Use this with Drupal module: Views Extras

Sanitize Query String for Email Campaigns, etc.

Email marketing campaigns rely on specialized URL parameters to track which visitors reach your landing pages. Some of these parameters are useful to Drupal, to provide a custom experience to the user. But when these URLs become unwieldy and very long, the user may be confused or suspicious. Using a Worker, we can read the query parameters and respond accordingly -- maybe to send a confirmation message to a logging service. Then the user is directed to a simplified URL without all the extra parameters. Similarly, these types of rules can help detect malicious requests and block them from reaching the site.

Use this with email campaigns.


Building web applications can be complicated, more so today than ever before. Users have high expectations when they visit our sites. Adding a tool like Cloudflare Workers should make that process easier to manage and maintain. Whether a site is running Drupal or some other technology (or both!), Workers may help deliver the kind of rich experiences that users are looking for.

Evolving Web: Growing the Drupal Community in 2020

Mon, 02/10/2020 - 15:05

Growing the community is the implicit goal of every Drupal meetup and event I attend. It's a constant topic of conversation at Drupal event organizing meetings, agency roundtables, and panels about recruitment and selling Drupal. Last year, I created a presentation for DrupalCamp Atlanta called "Growing the Drupal Community". Since then, it's been my hallway track conversation of choice, and everyone I talk to seems onboard with the goal of growing Drupal. As part of my role on the Drupal Association board, I'm chairing the Community & Governance Committee. We've been having lots of conversations about facilitating community growth, and I wanted to share some of what I've been thinking.

Our Target Audiences

By definition, if we want to grow Drupal, that means talking to people outside the Drupal-sphere. So who would we be targeting?  

  • Decision makers selecting a technology (Marketing/Communications and IT)
  • Developers and technologists curious about Drupal
  • Drupal users who aren't active in the community
  • Users who inherit a Drupal project
  • Agencies who are using Drupal for the first time
  • People looking to switch careers  

These are who I think of when I think of growing the community. It's important to remember that we're not just talking to developers or decision makers, but people from a wide range of backgrounds. The Drupal community is made up of designers, project managers, developers, translators, content and accessibility experts, and folks with other roles or who do Drupal as one of their many responsibilities.

One Step Closer to Engagement

Growing the Drupal community means bringing our audiences one step closer to participating in the community. That could mean different things for different people depending on what type of user they are and where they're at in their "Drupal Journey." Here are some tasks early on in this journey that we should make easier:

Try it Out
  • Install Drupal
  • Try out a demo
  • Watch a video about how Drupal works
First Contact
  • Attend a first Drupal event
  • Attend Global Training Days 
  • Make an account on and/or Drupal Slack
  • Talk to another Drupal user in the community
  • Join a Drupal user group on 
Stay Informed
  • Join a mailing list to learn more about Drupal
  • Read a case study or download promo material
  • Watch a video from a Drupal event
  • Search for help on or Drupal StackExchange  

Later in the journey, we hope to take users beyond feeling like "Newbies." We want them to use Drupal successfully, become members of the Drupal Association, make contributions, and become Drupal ambassadors. But arguably, the steps above are more important for growing the community.

What does this mean for is the home of the Drupal project and it should help move users further along their journey to being part of the community. It's a big ask. is also a place for the existing community to communicate and collaborate, and it's a complex website with a lot of moving pieces.   

That being said, here are some key places we could focus on to build community engagement:  

  • Community page: At DrupalCon Amsterdam, I conducted a UX feedback session and collected some feedback about the Community page. One audience member said "I feel like this is structured in a way that people who are very familiar with the community would think about it, rather than from the point of view of someone who is new to the community." I think repositioning this page for newcomers and focusing on local events (camps, meetups, and local training days), joining the Drupal Slack, local associations, and getting started using Drupal would be a big improvement.
  • is still a useful community organizing tool for some topics and groups, but many of its features have effectively been replaced by, confusing many new users who stumble across abandoned groups on the website. When a user stumbles across a group, clearly pointing them to the place where they can find upcoming events and the most relevant content would be really helpful.
  • The Evaluator Guide is a valuable tool for developers trying out Drupal for the first time. I think adding in an evaluator guide for different audiences (especially decision makers) is essential to creating a smooth and welcoming onboarding experience.
How You Can Help
  • Spread the success stories of Drupal in your local communities and networks, especially to those outside the Drupal community. Post those stories on LinkedIn, attend events outside the Drupal-sphere. And look for ways to promote Drupal in outlets where non-Drupal folks hang out.
  • Volunteer with the Promote Drupal initiative 
  • Be active in your local Drupal community
  • Welcome newcomers on Slack,, and at the Drupal events you attend 
  • Look for opportunities to hire and train those outside the Drupal community  

Let me know your thoughts and what you think of the ideas above. I'd love to start a conversation.

+ more awesome articles by Evolving Web

Srijan Technologies: 7 Tips to Keep SEO Intact When Migrating to Drupal 8

Mon, 02/10/2020 - 14:00

Drupal, one of the prominent WCMS in the world, delivers its services to giants like AL-Jazeera, URRWA, and Georgetown University. Having an impressive network of committed developers, it makes up as a robust, flexible, scalable, and highly secure WCMS for small and big businesses alike. Migrating to Drupal 8 can prove a nice pull for enterprises if they are looking to enhance their workflow efficiency, however, the move must be undertaken with utmost care.

DrupalEasy: DrupalEasy Podcast 223 - New format - Leslie Glynn, Mauricio Dinarte

Mon, 02/10/2020 - 01:50

Direct .mp3 file download.

We debut a new podcast format, and talk with Leslie Glynn about the Aaron Winborn Award and Mauricio Dinarte about Drupal 8 migrations.

URLs mentioned DrupalEasy News Sponsors Subscribe

Subscribe to our podcast on iTunes, Google Play or Miro. Listen to our podcast on Stitcher.

If you'd like to leave us a voicemail, call 321-396-2340. Please keep in mind that we might play your voicemail during one of our future podcasts. Feel free to call in with suggestions, rants, questions, or corrections. If you'd rather just send us an email, please use our contact page.

1xINTERNET blog: 1x2020 Digital Trends

Sun, 02/09/2020 - 09:58
1x2020 Digital Trends Baddý Sonja Breidert 09. February 2020 Welcome to 2020! At 1xINTERNET we are really looking forward to an exciting year ahead.  One of the benefits of working with a variety of amazing clients, from different industries is that we can see firsthand where companies are investing their time and energy when it comes to their digital strategy. In this blogpost we share what digital trends we see for the year 2020 and where our focus will be.

Srijan Technologies: Performance Optimization for Drupal Websites- Intermediate Level

Sun, 02/09/2020 - 06:41

With performance being a continuous bottleneck for enterprises trying to deliver an exceptional digital experience to customers and please search engines, this blog will serve as a sight to the sore eyes. 

Jungle Ran: Customize Acquia Dev Desktop

Sat, 02/08/2020 - 19:32
Why Acquica Dev Desktop 2?

So if we could get Acquica Dev Desktop working as what we expected, it would be a good alternative for Drupal devs who use macOS.

Jungle Ran: Build a valid RSS feed for Planet Drupal

Sat, 02/08/2020 - 17:18

Since joining Planet Drupal in 2016, no seriously new blog posts for a long time. Last year, my personal site was rebuilt with Drupal 8 again. And a few months ago, I found my feed was removed from Planet Drupal. Recently, I wanted to join in it again. The first task is to make a valid RSS. This is the background.

Suggestions from How to get your feed to the Planet

BADCamp News: Jump into BADCamp: Sponsorships, Hotels, and Trainings, Oh My!

Sat, 02/08/2020 - 00:51
Jump into BADCamp: Sponsorships, Hotels, and Trainings, Oh My! Fri, 02/07/2020 - 12:00 vclewis Fri, 02/07/2020 - 15:51 We hope to see you in Berkeley October 14th - 17th, 2020, for this year’s BADCamp! If you’re ready to get a jumpstart on community participation, we’ve got some ideas to get the BADCamp vibes going: Drupal Planet Geography in web page performance

Fri, 02/07/2020 - 22:44

New year, new possibilities, as we say in Norway. Which is why I have relaunched my blog using Gatsby.js. I could write a blog post about that, but I am not going to do that today. There is a lot of tutorials on how to set that up (one of my personal favorites is this one from Lullabot), and there is even an official page in the Gatsby.js documentation.

I could probably write many blog posts about different aspects I tweaked and looked at in the migration, but one field I feel is not often talked about is geography and performance.

With regards to servers, many (at least basic) Drupal sites are probably geographically limited by the actual server that is supposed to serve the web requests, and the location of this particular server. With a static site, made for example with Gatsby.js, you can deploy it to a Content Delivery Network (CDN) and have the same static html files on servers all around the world. This could mean that a website visitor from Tokyo to your static site could get a response from a server in Tokyo. The traditional Drupal site however might be on a server in Ireland, and then a visitor from Tokyo would quite often have to send their request all around the world to get responses.

This idea is not very new. In fact, there are several providers that let's you deploy your static site on their CDN (more or less) for free. They will then serve your static HTML from different parts of the world, depending on the visitor. What a world to live in. But instead of comparing their service and the user experience of deploying, I decided to compare them by which ones were being performant from all parts of the world. A geographic performance cup if you like.

The competitors in the cup are:

  • Zeit Now
  • Netlify
  • S3 with Cloudfront (a service from Amazon Web Services - AWS)

Instead of doing a very long analysis, so let's just start with the results.

The fastest service is S3 with Cloudfront. S3 is a static file storage, and Cloudfront is the CDN service from Amazon.

In the same way I could write many things about my migration to Gatsby, I could also speculate and write many things about this result. Instead I want to just show some animated gifs about interesting aspects of the different geography results for the providers. I am going to do them in reverse order, best result last.

Fourth place:

Third place: Netlify:

Then, slightly behind on second place, Zeit Now:

Lastly, the winner, here is AWS S3 with Cloudfront:

Conclusions and reflections

The numbers are one thing, but let's talk a bit about their significance. The tests were performed from AWS datacenters, and the 2 services scoring highest is either an AWS service (S3/Cloudfront), or uses AWS for their service (Zeit Now). Meaning the actual numbers does not necessarily mean that Netlify is 144% slower than S3/Cloudfront. It also does not mean I think any of these services have been proven to be better or worse than others.

I think it means that now that we are able to serve static HTML pages for our blogs or websites in a somewhat dynamic way, we can make the performance more democratic and less unfair. I don't want to discriminate readers of my blog based on their location (or anything else for that matter). Performance matters, but performance also differs from different parts of the world.

I guess what I am trying to say is: Let's make the world a better place by thinking about everyone that lives there, no matter where they live. So I will finish this post with an animated gif about just that. The world. blog: What’s new on - January 2020

Fri, 02/07/2020 - 22:21

Read our Roadmap to understand how this work falls into priorities set by the Drupal Association with direction and collaboration from the Board and community.

Project News Get Ready for Drupal 9

Are you wondering what it will take to upgrade to Drupal 9? Good news - it's going to be easier than any other major version upgrade in Drupal's history.

The upgrade to Drupal 9 is just like any other Drupal upgrade, except that the new codebase has updated key dependencies Drupal relies on and removed deprecated code. As long as all the modules and custom code you use don't rely on deprecated code - you should be good to go.

As it turns out, many contributed or even custom modules only need a one-line change to be ready for Drupal 9. You can use these community created tools to check the status of your modules: the upgrade status module, or the Drupal Check command line tool. In many cases, you may just need to remove some deprecated code in favor of the more modern implementations. Drupal Rector can provide you with automated fixes for many of these deprecations. 

Still getting to grips with Composer?

If you're still getting to grips with using Composer after the changes in Drupal's 8.8.0 release, don't worry - there's help to be found. The community has extensively documented the different scenarios a site owner may find themselves in with this update.

If you've previously used one of the community created templates to manage your site to composer, there are instructions to migrating to the officially supported method.

If you've never used Composer at all - you're in luck - with 8.8.0 and beyond everything you need is already in place. Update Packaging updates

As mentioned in our December update, we've been making major improvements to the packaging pipeline, to support packaging Drupal using Composer create project. We reached a major milestone at DrupalCamp New Jersey, allowing our packaging pipeline to properly support the Composer create project command when generating tar and zip files, and paving the way for enhancements to the core subtree splits.

Updating this pipeline is critical for ongoing releases of Drupal, and is part of paving the way for the Drupal 9 alpha release. We want to thank Acquia for donating time to help us get this work ready.

Preparing for contrib Semver

Per our roadmap for supporting Semver for contributed projects on, we have updated the way contrib version numbers are stored, making existing version numbers parseable when we convert to full semver. We also collaborated with core contributors at DrupalCamp New Jersey to identify and resolve a number of other related issues. now has an example project which uses semantic versioning, which we are using as the testbed for this support, and to prove out any additional UI changes that we want to make before rolling this out to all other contributed projects.

Want to learn more about Semantic Versioning and how to use it properly within your projects? can walk you through it.

More accessible formatting for the DrupalCon program schedule

It's almost time for the DrupalCon Minneapolis program to be published! To prepare for this launch, we've made updates to the program schedule to improve accessibility and readability for attendees.

In particular these updates have focused on line weights, spacing, and other formatting changes that should improve readability. With the accepted sessions being announced soon,  we're excited to see what you think!

Better social event submission tools for DrupalCon events

Some of the best parts of DrupalCon are the social events that take place around it. They're a chance for the community to celebrate and build camaraderie, and an established tradition. We've made updates to the social event submission process to make getting your event listed easier than ever. 

Join the Drupal Community in person! 

By the way… have you registered for DrupalCon yet?

DrupalCon is the best place to come together with other members of the Drupal community in person. It's also the central meeting point for all of facets of the Drupal business ecosystem, so if you are end-user looking for training or a vendor to support your Drupal deployment - there's no better place to be than DrupalCon.

DrupalCon Minneapolis is going to be here any day now - so get your tickets before prices go up!

Can't make it to Minneapolis? Join us at DrupalCon Barcelona 2020 in September.


As always, we’d like to say thanks to all the volunteers who work with us, and to the Drupal Association Supporters, who make it possible for us to work on these projects. In particular, we want to thank:

If you would like to support our work as an individual or an organization, consider becoming a member of the Drupal Association.
Follow us on Twitter for regular updates: @drupal_org, @drupal_infra

DrupalCon News: Plan your stay at a DrupalCon partner hotel

Fri, 02/07/2020 - 22:04

The handful of hotels we have selected in Minneapolis each offer an ideal hub — connecting you to a rewarding DrupalCon community experience. This year, choose from multiple Hiltons, a Hyatt, a Holiday Inn and more as part of our special DrupalCon attendee offerings. Why is staying at a DrupalCon partner hotel great for you and the community? Read on:

Droptica: Creating Custom Drush 9 Commands in Drupal 8

Fri, 02/07/2020 - 06:35
In Drupal 8.4.X and later releases, Drush 9 is the only supported and recommended version. One of the key changes introduced in this version is a new model of writing custom Drush commands. From now on, .inc files are obsolete and you will no longer use them for your commands, which are now classes based on AnnotatedCommand format. The underlying structure of a module containing your custom Drush command will look as follows: ​