Nov 20 2018
Nov 20

By shane

Tue, 2018-11-20 00:27


Video of Drupal 8 FlexSlider Module - Daily Dose of Drupal Episode 220

Daily Dose of Drupal Episode #220

Share with Others

The Drupal 8 Flex Slider Module allows you to use the Flex Slider library to build out slideshows on your Drupal website. This video covers how to get Flexslider to integrate with Drupal views as well as Drupal fields.

Nov 19 2018
Nov 19

Wow. What a year. I traveled to 15 camps this year for session recording (well, that includes MidCamp, which I also organize). In addition, I shipped equipment to Pacific Northwest Drupal Summit and Baltimore Drupal Camp. And finally, I provided direct support to DrupalCamp Ottawa, which chose to purchase equipment rather than chance customs delays. 

Oh, and let’s not forget the highlight of it all: receiving the Aaron Winborn award at DrupalCon in recognition of my contribution.

Since I am occasionally asked where people can find the videos I record, below is a recap of this year’s activity, with links to all the camp playlists.

Sessions recorded by me*: 559

Sessions recorded with equipment I shipped: 45

2018 capture rate: 96.12%

*That brings me to the asterisk from above. The phrase “captured by me” has new meaning this year as I have started recruiting assistance at some camps. Specifically GovCon and BADCamp, because they both are more than one person can rightly handle, and having said that, I honestly have no idea how I soloed both events in the past. Special shout out to Gergely Csonka of Cheppers, Lee Walker and Bo Shipley of Drupal Camp Chattanooga, and fellow MidCamp organizer Avi Schwab for helping me out. 

I have started compiling a list of folks that have either expressed interest in the equipment I use or directly helping me. My goal for 2019 is to transition into more of a mentoring role so we can record even more camps, and more importantly, camps overseas. Because if you look at the above list, I have fairly extensive coverage of North American events, but nowhere else. If you want to help, shoot me an email at [email protected].

Grand total of Drupal talks captured to date: 1,279

Finally, if you want to check out my equipment list or instructions, head over to GitHub. And if you wish to support my efforts, chip in at GoFundMe.

Thanks for an amazing year! See you soon.

Nov 19 2018
Nov 19

This script only runs when you commit to master.

You can fork this script here:

# GitLab CI script for Drupal 8 websites.
# @see
# @see
# This script deploys a Drupal 8 site on each commit on the master-branch.
# Preparation:
# Save $SSH_PRIVATE_KEY first in GitLab CI variables.
  GIT_ROOT: "/var/www/my-website/"
  SSH_LOGIN: "ssh -p22 -oStrictHostKeyChecking=no [email protected]"
  DRUSH: "drush"
  COMPOSER: "composer"
# @see
- 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )'
- eval $(ssh-agent -s)
- echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add - > /dev/null
- mkdir -p ~/.ssh
- chmod 700 ~/.ssh
  when: always
  - master
  - $SSH_LOGIN "cd $GIT_ROOT && git fetch --tags"
  - $SSH_LOGIN "cd $GIT_ROOT && git pull"
  # Never blindly run composer update on the server:
  - $SSH_LOGIN "cd $GIT_ROOT && $COMPOSER install"
  # Updates must be run before configuration is imported
  - $SSH_LOGIN "cd $GIT_ROOT && $DRUSH updatedb -y"
  - $SSH_LOGIN "cd $GIT_ROOT && $DRUSH config-import -y"
  # (Additional) sanitizing tasks.
  #- $SSH_LOGIN "cd $GIT_ROOT && $DRUSH locale:check"
  #- $SSH_LOGIN "cd $GIT_ROOT; $DRUSH locale:update"
  - $SSH_LOGIN "cd $GIT_ROOT && $DRUSH core-cron"
  # You should consider fine-grained cache invalidation
  # @see
  - $SSH_LOGIN "cd $GIT_ROOT && $DRUSH cache-rebuild -y"

What is happening???


GIT_ROOT variable: this is the folder where the Drupal website is installed on the hosting-server.
SSH_LOGIN variable is used as SSH login string.
-p22 is the ssh-portnumber (22 is default).
-oStrictHostKeyChecking=no disables the ‘trust this host’ question by default visible the first time one creates an ssh connection to a server.

Before script


Basically, it assures that the SSH-agent and SSH_PRIVATE_KEY are available to the GitLab-CI runner.

Nov 19 2018
Nov 19

Delicious. Sweet. Yummy. You may taste the jam and say these words or just the thought of jars containing jam stacked together may propel you to blurt out these words. Talking about the stack, in the technological space, we no longer talk about operating systems, specific web servers, backend programming languages or databases. In the web development arena, we think of different sorts of development stacks like the LAMP stack, the MEAN stack etc. And there is a new kid in the block called JAMstack which is not about specific technologies but a new way of building websites and apps.

Jars stacked together consisting an image of a tree on them and a red cloth over the lid.

What is the concept behind JAMstack?

To build a web development project with the JAMstack, three integral criteria should be met namely:

  • JavaScript: It governs the dynamic programming during the request/response cycle running completely on the client (e.g. Vue.js, React.js etc.)
  • APIs: Abstraction of all the server-side processes or database actions into reusable APIs is done which are accessed over HTTPS with JS (e.g. Twilio, Stripe)
  • Markup: By leveraging a site generator for content sites or a build tool for web apps, templated markup must be prebuilt at deploy time (e.g. Gatsby.js, Webpack).

Benefits of JAMstack

  • High performance: When it comes to reducing the time to first byte, pre-built files served over Content Delivery Network (CDN) enhances web performance. You do not have to wait for the pages to build on the fly as JAMstack allows you to generate them at deploy time.
Graphical representation showing uneven lines in purple and grey colours to explain time to first byteA high TTFB penalizes the Speed Index of a page
Source: DareBoost Blog
  • Robust Security: Abstraction of server-side processes into microservice APIs minimises the security threats. Also, the domain expertise of specialist third-party services can be utilised.
  • Better Scalability: CDNs are a great way of ensuring scalability when your deployment amounts to a stack of files that can be served anywhere.
  • Great developer experience: More targeted development and debugging can be done by the developers with loose coupling and separation of controls. Moreover, the need to administer a separate stack for content and marketing goes away with the expanding selection of CMS options for site generators.

Best practices

  • The entire site must be served on CDN. Rather than living on a single server, JAMstack projects can be distributed as they do not rely on server-side code.
  • Atomic deploys should be employed. This ensures that no alterations go live until all the changed files have been uploaded.
  • Governance of instant cache purges by CDN ensures that when a deploy goes live it really goes live.
  • Everything should dwell in Git. This minimises contributor friction and streamlines staging and testing workflows.
  • Utilise modern build tools like Babel, PostCSS, Webpack etc.
  • Automate markup builds. This is because JAMstack markup is prebuilt and content alterations won’t go live unless and until you run another build.

How is JAMstack different from other development stacks?

Three columns with headings LAMP, MEAN and JAM stack with icons below representing different technologiesSource: Memory Leak’s blog | Medium

Jamstack is an alternative to the LAMP (Linux, Apache, MySQL, PHP) and MEAN (MongoDB, Express.js, Angular and Node.js) stacks.

LAMP is used to build dynamic websites and web apps. In this, pages are reconstructed from a database on request instead of being held as flat documents ready for delivery. It is easy to add content and modify them. However, JAMstack delivers content at a much faster speed.

MEAN and LAMP are more similar to each other and are very different from JAMstack.

MEAN is also designed for building dynamic websites and apps. All the MEAN components are written in JavaScripts. The key difference is that MEAN still assembles pages from databases on request like LAMP. MEAN and LAMP are more similar to each other and are very different from JAMstack.

Two columns with the heading LAMP workflow and JAM workflow and bullet points below themSource: Memory Leak’s blog | Medium

Implementing JAMstack and Drupal together

Web development projects that rely on a tight coupling between client and server is not built with the JAMstack. This comprises of a site built with a server-side CMS like Drupal, a monolithic server-run web app relying on backend language and a single page app that is using isomorphic rendering for creating views on the server at runtime. So, how can Drupal and JAMstack work together?

[embedded content]

In a session held at Bay Area Drupal Camp 2018, a demonstration showed a method of integration of Gatsby with Drupal. Gatsby is one of the leading JAMstack based static page generators. The demo showed that Gatsby is not a replacement for Drupal and Drupal would still control the content, site structure and how content is created. Whereas Gatsby would be governing little things like the public facing site.

Gatsby is not a replacement for Drupal and Drupal would still control the content

It talked about ‘Gatsby Drupal Kit’ which is under development stages that can help jumpstart Gatsby-Drupal integrations. It is designed to work with a minimal Drupal install as a jumping off point and provide a structure that can be elongated to a larger and complex site.

The demonstration focused on a base Drupal 8 site connected with Gatsby and the best practices for making Gatsby work for real sites in production. The emphasis was also on the sane patterns for translating Drupal’s structure into Gatsby components, templates, and pages.


Once you have fully understood the specific risks and put in place appropriate workflows, the JAMstack exhibits its share of opportunities. Creating a static site takes time and needs an architecture involving orchestration of several solutions. Today, it may seem intricate but so was your first dynamic site involving choosing a host, master FTP, juggling the web server logs and so on. With experience, JAMstack users would be more and more adept in leveraging its full potential.

OpenSense Labs has been making the digital transformation dreams come true for its partners with a suite of services.

Contact us at [email protected] to leverage JAMstack for Drupal sites.

Nov 19 2018
Nov 19

Video of Drupal 8 Configuration Read-only Module - Daily Dose of Drupal Episode 219

The Drupal 8 Configuration Read-only module allows you to lock down some of your environments to prevent users from making configuration changes. This lets you use the Drupal 8 configuration management system to push up all your changes, while preventing you from changing any settings, content types, views, or any other configuration on your production website.

Nov 18 2018
Nov 18

The third major version of simple_sitemap has been seven months in the making. The module has been rewritten from the ground up and now features a more reliable generation process, a significantly more versatile API and many new functionalities.

Major new features

Ability to create any type of sitemap via plugins

The 8.x-3.x release allows not only to customize the URL generation through URL generator plugins as 2.x did, but also creating custom sitemap types that mix and match a sitemap generator along with several URL generators to create any type of sitemap.

This 3-plugin system coupled with the new concept of sitemap variants makes it possible to run several types of sitemaps on a single Drupal instance. Now e.g a Google news sitemap can coexist with your hreflang sitemap.

A sitemap variant can but does not need to be coupled to entity types/bundles. When creating a sitemap generator, one can define where the content source is located and what to do with it upon sitemap generation/deletion.

Ability to create sitemap variants of various sitemap types via UI

In 3.x links form a specific entity bundle can be indexed in a specific sitemap variant with its own URL. This means, that apart from /sitemap.xml, there can be e.g

  • /products/sitemap.xml,
  • /files/sitemap.xml or
  • /news/sitemap.xml.

All of these can be completely different sitemap types linking to Drupal entities, external resources. or both. They could also be indexing other sitemaps. The name, label and weight of each variant can also be set in the UI.

Sitemap statusNo more out of memory/time errors

While the 2.x version of the Simple XML sitemap module has been appreciated for its simple generation process, that process sometimes failed because of timeouts and memory limits on huge sites in limited environments.

In order to address that, the generation process has now been streamlined to using a single queue regardless of whether batch generation is being used, or backend (cron/drush) processes. Setting a time limit on the cron generation and limiting the amount of links per sitemap allows for hundreds of thousands of entities/elements being indexed hopefully without memory errors.

If a problem occurs, the module resumes the generation process by picking up the last indexed element. Another thing the new version does better is making the old sitemap version accessible during its regeneration. This way there is never a time where bots cannot index stuff.

Other improvements

There are many more improvements compared to 2.x. You can see the list of changes on the module's release page.

Upgrade path

It was a challenge to do all of the above while still maintaining a smooth upgrade process, but it was worth it. The module upgrades fine from any of the 2.x versions.

To upgrade the module via composer, $ composer require 'drupal/simple_sitemap:^3.0' can be used. Afterwards, just visit /update.php, or run $ drush updb to update the module's storage.

Please bear in mind, that the module's API has undergone several changes, so if you are calling it in your code, the method calls may need some adjustment. Check out the code documentation and the readme file.

Should you upgrade?

A small portion of the 35k+ sites that are using this module have been rocking the 3.x development version and helping out by reporting issues. All of the bugs have been ironed out leaving a clean bug queue. I believe the 3.x branch to be stable and given its robustness, its enhancements and the smooth upgrade path, I encourage the rest of you to upgrade to the most recent release.

I invite you to watch this space for a more in-depth technical tutorial on how to programmatically create sitemap types. Also feel free to leave a comment below!

Nov 17 2018
Nov 17

This blog post contains a written transcript of my NEDCamp 2018 keynote, Real World DevOps, edited to match the style of this blog. Accompanying resources: presentation slides, video (coming soon).

Jeff Geerling at NEDCamp 2018 - New England Drupal Camp

I'm Jeff Geerling; you probably know that because my name appears in huge letters at the top of every page on this site, including the post you're reading right now. I currently work at Acquia as a Senior Technical Architect, building hosting infrastructure projects using some buzzword-worthy tech like Kubernetes, AWS, and Cloud.

I also maintain Drupal VM, the most popular local development environment for the Drupal open source CMS. And I run two SaaS products with hundreds of happy customers, Hosted Apache Solr and Server, both of which have had over 99.99% uptime since their inception for a combined 15 years. I also write (and continuously update) a best-selling book on Ansible, Ansible for DevOps, and a companion book about Kubernetes. Finally, I maintain a large ecosystem of Ansible roles and automation projects on GitHub which have amassed over 17,000 stars and 8,000 forks.

Oh, I also have three children under the age of six, have a strong passion for photography (see my Flickr), maintain four Drupal websites for local non-profit organizations, and love spending time with my wife.

You might be thinking: this guy probably never spends time with his family.

And, if you're speaking of this weekend, sadly, you'd be correct—because I'm here in Rhode Island with all of you!

But on a typical weeknight, I'm headed upstairs around 5-6 p.m., spend time with my family for dinner, after-meal activities, prayers, and bedtime. And on weekends, it's fairly rare I'll need to do any work. We go to the zoo, we go on family trips, we go to museums, and we generally spend the entire weekend growing together as a family.

Some nights, after the kids are settled in bed, I'll spend an hour or two jumping through issue queues, updating a section of my book—or, as is the case right now, writing this blog post.

How do I do it?

CNCF Cloud Native Landscape

Well I apply complex self-healing, highly-scalable DevOps architectures to all my projects using all the tools shown in this diagram! I'm kidding, that would be insane. But have you seen this graphic before? It's the Cloud Native Landscape, published by the Cloud Native Computing Foundation.

The reason I show this picture is because I expect everyone reading this to memorize all these tools so you know how to implement DevOps by next week.

Just kidding again! Some people think the mastery of some tools in this diagram means they're doing 'DevOps'. To be honest, you might be practicing DevOps better than someone who integrates fifty of these tools using nothing but Apache and Drupal—neither of which are listed in this infographic!

What is DevOps?

The framework I use is what I call 'Real World DevOps'. But before I get into my definition, I think it's important we understand what the buzzword 'DevOps' means, according to our industry:

Azure DevOps

Microsoft, apparently, packaged up DevOps and sells it as part of Azure's cloud services. So you can put a price on it, apparently, get a purchase order, and have it! Right?


And I see a lot of DevOps people talk about how Docker transformed their developers into amazing coding ninjas who can deploy their code a thousand times faster. So Docker is part of DevOps, right?

There is no cloud sticker

And to do DevOps, you have to be in the cloud, because that's where all DevOps happens, right?

Agile Alliance

And DevOps requires you to strictly follow Agile methodologies, like sprints, kanban, scrums, pair programming, and pointing poker, right?

Well, let's go a little further, and see what some big-wigs in the industry have to say:

"People working together to build, deliver, and run resilient software at the speed of their particular business."

So it sounds like there's a people component, and some sort of correlation between speed and DevOps.

Okay, how about Atlassian?

DevOps "help[s] development and operations teams be more efficient, innovate faster, and deliver higher value"

So it sounds like it's all about making teams better. Okay...

"Rapid IT service delivery through the adoption of agile, lean practices in the context of a system-oriented approach"

(Oh... that's funny, this quote is also in one of O'Reilly's books on DevOps, in a post from Ensono, and in basically every cookie-cutter Medium post about DevOps.)

In Gartner's case, they seem to focus strongly on methodology and service delivery—but that's probably because their bread and butter is reviewing products which purportedly help people track methodology and service delivery! It's interesting (and telling) there's no mention about people or teams!

But what do I say about DevOps?

But what about me? I just claimed to practice DevOps in my work—heck, my book has the word DevOps in the title! Surely I can't just be shilling for the buzzword profit multiplier by throwing the word 'DevOps' in my book title... right?

Ansible for DevOps - is Jeff Geerling just riding the wave of the buzzword?

Well, to be honest, I did use the word to increase visibility a bit. Why else do you think my second book has the word 'Kubernetes' in it!?

But my definition of DevOps is a bit simpler:

Jeff Geerling's DevOps Definition - Making people happier while making apps better

"Making people happier while making apps better."
—Jeff Geerling (Photo above by Kevin Thull)

I think this captures the essence of real world, non-cargo-cult DevOps, and that's because it contains the two most important elements:

Making people happier

DevOps is primarily about people: every team, no matter the size, has to figure out a way to work together to make users happy, and not burn out in the process. And what are some of the things I see in teams that are implementing DevOps successfully?

  • Reduced friction between Operations/sysadmins, Developers, Project Management, InfoSec, and QA. People don't feel like it's 'us against them', or 'we will loop them in after we finish our part'. Instead, everyone talks, everyone has open communication lines in email or Slack, and requirements and testing are built up throughout the life of the project.
  • Reduced burnout, because soul-sucking problems and frustrating communications blockades are almost non-existent.
  • Frequent code deploys, and almost always in the middle of the workday—and this also feeds back into reduced burnout, because nobody's pulling all-nighters fixing a bad deploy and wrangling sleepy developers to implement hotfixes.
  • Stable teams that stay together and grow into a real team, not just a 'project team'; note that this can sometimes be impossible (e.g. in some agency models), but it does make it easier to iteratively improve if you're working with the same people for a long period of time.
  • There are no heroes! Nobody has to be a rockstar ninja, working through the weekend getting a release ready, because DevOps processes emphasize stability, enabling a better work-life balance for everyone on the team.

How many times have you seen an email praising the heroic efforts of the developer who fixed some last-minute major issues in a huge new feature that were discovered in final user acceptance testing? This should not be seen as a heroic deed—rather it should be seen as a tragic failure. Not a failure of the developer, but as a failure of the system that enabled this to happen in the first place!

DevOps is about making people happier.

Making apps better

Devops is also about apps: you can't afford to develop at a glacial pace in the modern world, and when you make changes, you should be confident they'll work. Some of the things I see in the apps that are built with a DevOps mentality include:

  • Continuous delivery: a project's master (or production) code branch is always deployable, and passes all automated tests—and there are automated tests, at least covering happy paths.
  • Thorough monitoring: teams know when deployments affect performance. They know whether their users are having a slow or poor experience. They get alerts when systems are impaired but not down.
  • Problems are fixed as they occur. Bugfixes and maintenance are part of the regular workflow, and project planning gives equal importance to these issues as it does features.
  • Features are delivered frequently, and usually in small increments. Branches or unmerged pull requests rarely last more than a few days, and never more than a sprint.

Small but frequent deployments are one of the most important ways to make your apps better, because it also makes it easier to fix things as problems occur. Instead of dropping an emergent bug into a backlog, and letting it fester for weeks or months before someone tries to figure out how to reproduce the bug, DevOps-empowered teams 'swarm' the bug, and prevent similar bugs from ever happening again by adding a new test, correcting their process, or improving their monitoring.

DevOps is about making apps better.

DevOps Prerequisites

So we know that DevOps is about people and apps, and we know some of the traits of a team that's doing DevOps well, but are there some fundamental tools or processes essential to making DevOps work? Looking around online, I've found most DevOps articles mention these prerequisites:

  • Automation
  • CI/CD
  • Monitoring
  • Collaboration

I tend to agree that these four traits are essential to implementing DevOps well. But I think we can distill the list even further—and in some cases, some prerequisites might not be as important as the others.

I think the list should be a lot simpler. To do DevOps right, it should be:

  • Easy to make changes
  • Easy to fix and prevent problems (and prevent them from happening again)

Easy to make changes

I'm just wondering: have you ever timed how long it takes for a developer completely new to your project to get up and running? From getting access to your project codebase and being able to make a change to it locally? If not, it might be a good idea to find out. Or just try deleting your local environment and codebase entirely, and starting from scratch. It should be very quick.

If it's not easy and fast to start working on your project locally, it's hard to make changes.

Once you've made some changes, how do you know you won't break any existing functionality on your site? Do you have behavioral testing that you can easily run, and doesn't take very long to run, and doesn't require hours of setup work or a dedicated QA team? Do you have visual regression tests which verify that the code you just changed won't completely break the home page of your site?

If you can't be sure your changes won't break things, it's scary to make changes.

Once you deploy changes to production, how hard is it to revert back if you find out the changes did break something badly? Have you practiced your rollback procedure? Do you even have a process for rollbacks? Have you tested your backups and have confidence you could restore your production system to a known good state if you totally mess it up?

If you can't back out of broken changes, it's scary to make changes.

The easier and less stressful it is to make changes, the more willing you'll be to make them, and the more often you'll make them. Not only that, with more confidence in your disaster recovery and testing, you'll also be more confident and less stressed.

"High performers deployed code 30x more frequently, and the time required to go from “code committed” to “successfully running in production” was 200x faster."
—The DevOps Handbook

While you might not be deploying code 300 times a day, you'll be happy to deploy code whenever you want, in the middle of the workday, if you can make changes easy.

Easy to fix and prevent problems

Making changes has to be easy, otherwise it's hard to fix and prevent problems. But that's not all that's required.

Are developers able to deploy their changes to production? Or is there a long, drawn out process to get a change deployed to production? If you can build the confidence that at least the home page still loads before the code is deployed, then you'll be more likely to make small but frequent changes—which are a lot easier to fix than huge batches of changes!

Developers should be able to deploy to production after their code passes tests.

Once you deploy code, how do you know if it's helping or hurting your site's performance? Do you have detailed metrics for things like average end-user page load times (Application Performance Monitoring, or APM), CPU usage, memory usage, and logs? Without these metrics you can't make informed decisions about what's broken, or whether a particular problem is fixed.

Detailed system metrics and logging is essential to fix and prevent problems.

When something goes wrong, does everyone duck and cover, finding ways to avoid being blamed for the incident? Or does everyone come together to figure out what went wrong, why it went wrong, and how to prevent it from happening in the future? It's important that people realize when something goes wrong, it's rarely the fault of the person who wrote the code or pressed the 'go' button—it's the fault of the process. Better tests, better requirements, more thorough reviews would prevent most issues from ever happening.

'Blameless postmortems' prevent the same failure from happening twice while keeping people happy.

DevOps Tools

But what about tools?

"It's a poor craftsman that blames his tools."
—An old saying

Earlier in this post I mentioned that you could be doing DevOps even if you don't use any of the tools in the Cloud Native Landscape. That may be true, but you should also avoid falling into the trap of having one of these:

Golden hammer driving a screw into a board

A golden hammer is a tool that someone loves so much, they use it for purposes for which it isn't intended. Sometimes it can work... but the results and experience are not as good as you'd get if you used the right tool for the job. I really like this quote I found on a Hacker News post:

"Part of being an expert craftsman is having the experience and skills to select excellent tools, and the experience and skills to drive those excellent tools to produce excellent results."
jerf, HN commenter

So a good DevOps practitioner knows when it's worth spending the time learning how to use a new tool, and when to stick with the tools they know.

So now that we know something about DevOps, here's a project for you: build some infrastructure for a low-profile Drupal blog-style site for a budget-conscious client with around 10,000 visitors a day. Most of the traffic comes from Google searches, and there is little authenticated traffic. What would you build?

Complex Drupal hosting architecture in AWS VPC with Kubernetes

Wow! That looks great! And it uses like 20 CNL projects, so it's definitely DevOps, right?

Great idea, terrible execution.

Simple Drupal hosting architecture with a LAMP server and CloudFlare

Just because you know how to produce excellent results with excellent tools doesn't mean you always have to use the 'best' and most powerful tools. You should also know when to use a simple hammer to nail in a few nails! This second architecture is better for this client, because it will cost less, be easier to maintain long-term, and won't require a full-time development team maintaining the infrastructure!

Jeff Geerling holding a golden hammer

So know yourself. Learn and use new tools, but don't become an architecturenaut, always dreaming up and trying to build over-engineered solutions to simple problems!

That being said, not all the tools you'll need appear in the Cloud Native Landscape. Some of the tools I have in my toolbelt include:


I don't know how many times I've had to invoke YAGNI. That is, "You Ain't Gonna Need It!" It's great that you aspire to have your site get as much traffic as Facebook. But that doesn't mean you should architect it like Facebook does. Don't build fancy, complex automations and flexible architectures until you really need them. It saves you money, time, and sometimes it can even save a project from going completely off the rails!

Much like the gold plating on the hammer I was holding earlier, extra features that you don't need are a waste of resources, and may actually make your project worse off.

Andon board

In researching motivations behind some Agile practices, I came across an interesting book about lean manufacturing, The Machine that Changed the World. A lot of the ideas you may hear and even groan about in Agile methodology, and even DevOps, come from the idea of lean manufacturing.

One of the more interesting ideas is the andon board, a set of displays visible to every single worker in Toyota's manufacturing plant. If there's ever a problem or blockage, it is displayed on that board, and workers are encouraged to 'swarm the problem' until it is fixed—even if it's in a different part of the plant. The key is understanding that problems should not be swept aside to be dealt with when you have more time. Instead, everyone on the team must be proactive in fixing the problem before it causes a plant-wide failure to produce.

Time to Drupal

I did a blog post after DrupalCon last year discussing how different local Drupal development environments have dramatically different results in my measurement of "Time to Drupal". That is, from not having it downloaded on your computer, to having a functional Drupal environment you can play around with, how long does it take?

If it takes you more than 10 minutes to bring up your local environment, you should consider ways to make that process much faster. Unless you have a multi-gigabyte database that's absolutely essential for all development work (and this should be an exceedingly rare scenario), there's no excuse to spend hours or days onboarding a new developer, or setting up a new computer when your old one dies!

Dev to Prod

Similarly, how long does it take, once a feature or bugfix has been deployed somewhere and approved, for it to be deployed to production? Does this process take more than a day? Why? Are you trying to batch multiple changes together into one larger deployment?

The DevOps Handbook has some good advice about this:

"one of the best predictors of short lead times was small batch sizes of work"
—The DevOps Handbook

And wouldn't you know, there's a lean term along this theme: Takt time, or the average amount of time it takes between delivering units of work.

If you batch a bunch of deployments together instead of delivering them to production as they're ready, you'll have a large Takt time, and this means you can't quickly deliver value to your end users. You want to reduce that time by speeding up your process for getting working code to production.


Those tools might not be the tools you were thinking I'd mention, like DevShop, Drupal VM, Lando, Docker, or Composer. But in my mind, if you want to implement DevOps in the real world, those tools might be helpful as implementation details, but you should spend more time thinking about real world DevOps tools: better process, better communication, and better relationships.

If you do that, you will truly end up making people happier while making apps better.

Thank you.

Resources mentioned in the presentation

Nov 17 2018
Nov 17

Book: Local Web Development with DDEV ExplainedIt's no secret that I'm a fan of Drud Technology's DDEV-Local web development tool. I selected it as my local development tool of choice for both my clients and my Drupal Career Online students after an exhaustive search. I've been teaching monthly 2-hour online workshops getting folks up-and-running with DDEV, and I've taught numerous full day "Getting started with DDEV" workshops at various Drupal events around the United States.

Since I've been writing, testing, and refining curriculum related to DDEV for well over a year now, it made sense to take everything I've learned and put it in a format that makes it available to even more folks looking to easily adopt a professional local development environment. I'm super-happy to announce that the book is now available for purchase on at a price designed to get it into as many hands as possible - just $5.99 for a digital copy and $9.99 for the dead tree edition.

This first book, Local Web Development with DDEV Explained, is the result of a partnership wtih Steve Burge and the rest of the fine folks at OSTraining, which is the publisher. They've allowed me to retain full control of the book while at the same time tapping into OSTraining's extensive experience in publishing and marketing books related to open source content management systems. 

The book covers the full range of topics related to local web development and DDEV. Topics covered include:

  • Why a professional local development environment is important.
  • What a professional local development workflow looks like.
  • Installing DDEV on Mac OS X, Windows 10, and Ubuntu.
  • Step-by-step example of starting a new Drupal 8 project with Composer and DDEV.
  • Step-by-step example of getting an existing Drupal project up-and-running with DDEV.
  • Adding a Solr container.
  • Common workflows using DDEV.
  • Extending DDEV with hooks.
  • Using Xdebug with DDEV and PhpStorm.

The bulk of the book's content is straight from my training curriculum, so you can be sure that it is tried-and-true, and, as always, reflects only best practices. My goal is always to teach the right way to accomplish a task - no hacks or shortcuts.

My goal is to update the book several times per year, with a list of topics for the first revision already growing. I'll be starting on it in the next few days! By purchasing a digital copy, you'll automatically get updates to the book as they're released. 

Nov 17 2018
Nov 17

A quick overview of some things happening with Drupal’s Layout Initiative from the perspective of component-based theming, a theme development approach that has been gaining popularity in the past few years.

Layouts in core

The Layout API and the Layout Discovery module were added in Drupal 8.3 as an experimental subsystem, and they were stabilized in Drupal 8.4.

Layouts have been an important tool in component-based theming as they can be used to map data to component templates. Layouts can be used with well-established contrib modules like Display Suite and Panels, and the UI Patterns module can expose its patterns as layouts.

Field Layout

An experimental Field Layout module was also added in Drupal 8.3. Field Layout provides a simple UI for arranging rows of entity fields into regions of a single layout, in a very similar way to Display Suite. Field Layout was planned to be stabilized in Drupal 8.5, but it continues to be an experimental module.

Layout Builder

An experimental Layout Builder module was added in Drupal 8.5. Layout Builder provides a UI with a visual preview and it supports using multiple layouts together, placing blocks in layout regions and creating layouts for individual pieces of content. It is powerful and unique and a huge step forward in capabilities offered by core. Layout Builder is currently planned to be stabilized in Drupal 8.7.

Field Layout might be removed from core

Layout Builder has essentially deprecated much of what Field Layout provides, and uses a completely different technical approach. Layout Builder does not currently support form displays, however. As Field Layout is still experimental, it has been proposed that Field Layout should be removed from core after moving its form display capabilities to core’s Field UI.

An alternative non-visual UI has been proposed for Layout Builder

Drupal’s values and principles include building software that everyone can use. Core changes must pass through a series of ‘gates’ to ensure their quality is up to standards, and one of them is accessibility.

Modern UIs can be challenging to build in an accessible way, as the WordPress community has sadly discovered recently. Layout Builder is no exception, and it might prove difficult to pass Drupal’s accessibility gate in time to stabilize Layout Builder in Drupal 8.7. Because of this it has been proposed that Layout Builder provide an alternative accessible UI without a visual preview, not unlike Field Layout or the block admin UI.

Component-based theming use cases

Both aforementioned types of UIs are useful from a component-based theming perspective. However, a simple non-visual UI can be a better option in many cases. Layout definitions for components might include regions for adding things that are not displayed, for example.

Such a case can be found in my old blog post about using UI Patterns. The Code component described in that blog post defines a layout region for adding the code language. Instead of displaying the value, the component uses it as a part of a CSS class name.

Another example might be a component that defines a layout region for an image and a region for text, which the component then displays over the image. Such visually overlapping regions would be unnecessarily hard to implement perfectly in a UI with a visual preview, when a simple non-visual UI could just as well be used.

Now is a good time to get involved in the discussion

Personally I think it would be really great to have an alternative simple UI without a visual preview for layouts in core. If you would like to express your opinion on this, or can think of further use cases for such a UI, now is a good time to get involved in the related issues on

On experimental modules

This case is a good reminder that experimental core modules should only be used for experimentation, not in production. An experimental module might be removed instead of being stabilized.

Thank you

Finally, I want to thank everyone involved in the Layout and Media Initiatives! Your work is very impressive and keeps making Drupal core better and more capable for component-based theming.

Nov 16 2018
Nov 16

Take content authoring one step further with the new User Profiles feature. Site administrators can now limit what users with specific Drupal roles get to see in the Glazed Builder Interface. Profiles give you total control over who has access to specific Glazed Builder elements, Drupal blocks, views display and CKEditor buttons. We made profiles into configuration entities, therefore they are also exportable in both Drupal 8 and Drupal 7 - this could be achieved by using the feature module. 
To set up a new Glazed Builder Profile go to Configuration>Content Authoring on your Drupal administration panel and select Glazed Builder.  By clicking "+Add Glazed Builder Profile" button  we are now able to configure a new User Profile based on: Roles, Glazed elements, Drupal blocks, Views, CKEditor buttons (inline & modal editing).

Help Center: New Documentation

Nov 16 2018
Nov 16

From the vantage point of a school, some of the features that prove its greatness are a library with a superabundance of books, science laboratory with advanced scientific instruments, projection room with 3D technology and so on. Today, where almost everything is happening through the internet, the education sector is not left far behind. E-learning platforms have taken the world by storm with its unprecedented provisions of online learning. And E-learning platforms need great features as well to be able to disseminate knowledge across multiple channels efficaciously.

Written equations on brown wooden board

A lot of significant features can spring up in your mind that you think should be in an e-learning platform. It can be tons of courses on a plenitude of subjects for the learners. Or it can be digital certifications that can be provided for a successful completion of a course. Drupal comes with some amazing set of modules for enabling essential features of an e-learning platform. Let’s look at some of the important features and see how Drupal has the answer for that.


Modern learners are infatuated with the notion of getting a top-quality education and love to choose from an extensive list of courses on an e-learning platform. Some of the Drupal modules that can be helpful in creating courses include:

Course module lets you build e-learning courses with any number of tracked requirements for completion. It allows any content type to be used as an e-learning course comprising of graded or ungraded course subjects. It offers course object API for defining learning objects that can be added to a workflow.

For assigning and mapping credit types to learner profiles and courses, Course Credit module is useful. On successful completion of an activity, online learners will be able to receive or claim credit for which they are eligible. 

To expose Course module as a Course object, Course relationships module is effective which allows parent courses to include sub-courses. It can grant access to sub-courses by enrolling into or purchasing a parent course.


Through online tests and quizzes, an instructor can track the progress of students and analyse the effectiveness of the curriculum. Simultaneously, it paves the way for the students to track their own progress and improve their skills accordingly.

Quiz module allows you to build graded analytics in Drupal where a quiz is given as a series of questions and the answers are, then, stored in the database. During or after the quiz, the scores and results are displayed. Administrators can also provide automatic or manual feedback. This module can be leveraged as an object in a larger Learning Management System (LMS) or a supplemental classroom activity.


Skills and certification tracking is one of the important features of an e-learning platform.

Certificate module helps in creating and awarding PDF certificates with the help of tokenised HTML templates. It provides the interface for governing custom certificate templates and mappings and allows integration with Wysiwig for rich certificates.

Open badges, which are digital images used to recognise an individual’s skills and achievements, can be created with Drupal. Open digital badging module helps in providing a Mozilla OBI compliant badge empowered by the learning system.

To create badges earned by students on their successful completion of a course or a class, Opigno Mozilla Open Badges App module lets you integrate Opigno LMS with Mozilla Open Badges. In this, badges will be exhibited in the user profile and can be automatically synchronised with Mozilla Backpack.

Social learning/ Message boards

E-learning platforms should allow students to learn from one another.

Modules like Opigno Messaging and Opigno Forum, which are related to Opigno LMS distribution, govern the private messaging feature to let users share messages between them. It allows you to select a list of recipients and start a discussion thread with the selected users. It is worth noting that these modules are not covered by Drupal’s security advisory policy.

Social Login and Social Share modules eliminate the need of creating a username and password by allowing you to log in using the social network sites and helps in sharing the content with your network.

Consistent instructor presence

The role of the instructor is significant in e-learning as he or she is instrumental in encouraging and inspiring the students.

Opigno instructor-led training module helps in implementing instructor-led training (ILT) entity. It can be added to learning paths in combination with online modules and virtual classrooms. ILT sessions let you register attendance of users and provide them with a grade. These sessions can be made mandatory in the learning path and are automatically added to the user’s calendar. Also, note that this module is not covered by Drupal’s security advisory policy.

A well-designed LMS

A streamlined and a well-designed LMS means that it should be easy to navigate, well-organised, and must contain high-quality content.

The LTI Tool Provider module allows a Drupal site to act as a Learning Tools Interoperability (LTI) Tool in any LMS that supports the LTI standard. LTI compliant LMSs include Angel, Blackboard Learn, Moodle, and Sakai. Please note that this module is not covered by Drupal’s security advisory policy.

Kaltura module helps in integrating the Kaltura video platform capabilities into Drupal thereby allowing you to instantly enrich your Drupal site with video, audio, and images.

Chamilo integration module allows integration of Drupal with Chamilo LMS by offering ways to see Chamilo resources into Drupal blocks.

Would love to have a starter kit for building the LMS? Open LMS distribution, which is developed and actively maintained by OpenSense Labs, is a learning management system based on Drupal 8 that comes with robust features.

Open LMS offers numerous kinds of content type like textual study material, video lectures, documents that can be utilised as a course material for students. Also, it lets you add H5P, HTML5 based interactive video content type, to the course.

Moreover, it provides a quiz and subjective test functionality, assignment functionality powered by Webforms, and calendar functionality to schedule courses. Please note that Open LMS is not covered by Drupal’s security advisory policy.


E-learning platforms have changed the landscape of education. And Drupal as an open source software and a robust content store helps in innovatively build an efficient e-learning platform.

Some of the significant features have been discussed in this blog post that is fulfilled by Drupal’s incredible set of modules. OpenSense Labs has been powering digital experience dreams of its partners with its expertise in Drupal development.

Contact us at [email protected] to build a great e-learning platform with Drupal.

Nov 16 2018
Nov 16
google webfonts

Although Drupal has reputation for being a developers' platform, lots of user rely on Drupal's admin area for key tasks.

For typography in Drupal sites, the best way to change your site's fonts via the admin is a module called @font-your-face

The @font-your-face module allows you to work with webfonts like Google Fonts or Font Squirrel. It also provides the ability to work with paid font services like Typekit or

In this tutorial, you’ll learn how to configure and use this module in Drupal 8.

Step #1. Enable the required module

  • Download and install the @font-your-face module from
  • Enable the @font-your-face module.
  • Enable the integrations you need. In this example, I'll enable the Google Fonts submodule.

font your face module

You have to check the @font-your-face settings in order to import the fonts of each one of the enabled submodules.

  • Click Appearance > @font-your-face > Settings
  • Click the "Import all fonts" button. The process will take about 5-10 minutes to complete, depending on the speed of your internet connection.

Drupal webfonts import

  • Click "Save configuration" after the Import process has finished.

Drupal webfonts save configurations

Step #2. Create a Font Display

In order to create a font display, you have to browse and enable your desired fonts.

  • Click Appearance > @font-your-face > Browse (This is a View, you can edit it if you want).
  • Select and enable the fonts you want to use in your site.
  • On top of the page is an exposed filter. You can search the fonts by name or specifying other criteria like the weight of the font or its classification.

Drupal webfonts font selector

  • Make a search for two or three fonts with different filter settings and enable them. Every enabled font will get a green background.

Drupal webfonts disable fonts

  • Click Font display and then click the blue "Add Font display" button.

Drupal webfonts add font display

  • Add a proper label to the Font display.
  • Choose the font.
  • Choose a preset selector, for example All Headers (h1, h2, h3, h4, h5, h6).
  • Choose the theme you want to add this particular font display.
  • Click "Save".

Drupal webfonts webfont display settings

  • Repeat the process with other fonts and Preset selectors.
  • If you want to choose another selector not included in the Select list options, choose other and type the selector in the text box.

Drupal webfonts selectors font display

  • Please take notice that the cascading nature of CSS will apply depending on the order you create the Font displays. The last one will take precedence over the others.

several font displays

  • After creating all necessary Font displays, you can either create some content or take a look at your already existing content.
  • The default Bartik fonts have changed and now match the ones you enabled and configured.

webfonts before after


The @font-your-face module for Drupal 8 provides an easy way to change the fonts of your site without writing additional CSS code.

This module is very useful in sites that switch their theme according to some predefined event. You can configure different Font displays for the same Preset Selectors depending in the theme currently in use.

Thanks for reading! If you're looking for a more code-centric approach, try this video from our Drupal 8 Theming class.

About the author

Jorge lived in Ecuador and Germany. Now he is back to his homeland Colombia. He spends his time translating from English and German to Spanish. He enjoys playing with Drupal and other Open Source Content Management Systems and technologies.
Nov 16 2018
Nov 16

When the whole world works on the simple facet of fellowship how can the healthcare industry not constitute to the same concept? 

Development and marketing collaborations between the healthcare organizations and web development agencies can be mutually beneficial. Whether your healthcare organization is built on Drupal or if you are looking for redesign and new prospects with Drupal, there are a number of things that have to be kept in mind, and if the main agenda is to collaborate, a series of questions have to be answered.

a blue drupal logo with three pair of hands holding a notepad, syringe, bottle, and test tube

What is it about Drupal that makes leading healthcare organizations chose this platform? How has Drupal evolved to help healthcare organizations serve better to their patients? 

Reasons Why the Healthcare Industry Should Choose Drupal 

  • Web Accessibility 

Web Content Accessibility Guidelines (WCAG) 2.0 commands that all the websites should be accessible to everyone regardless of their age, ability, or a combination of technology and ability. With the release of Drupal 7, the Drupal community is committed to providing universal accessibility not just for the end users but for the developers too. 

Web accessibility is the comprehensive practice of guaranteeing interaction with, or access to the web, for all the people irrespective of their abilities.

Flexible and fully customizable theming, and features make it possible for Drupal sites to meet WCAG accessibility and section 508 requirement. Some of the web accessibility features may include:

  • The provision of HTML5, which provides new and better semantic components that tell the browser and assistive technologies about the type of content coming forward, and how the complementary information provided (HTML) is related to the content.
  • The provision of “Drupal.announce()”, a method which helps the pages update in a non-visual manner. 
  • Without breaking the tab order in local navigation flow, Drupal directs non-visual and non-mouse users to access prime element on the page in a logical order. With its tabbing manager, Drupal defines tab orders explicitly for keyboard users. 
  • Other Drupal web accessibility modules such as text resize, style switcher, alt text, CKEditor abbreviation, high contrast, it makes it easy to make a universal user-friendly website. 
  • Drupal also uses fieldsets which give a visual diagram around the field gathering. It breaks the form into subsections, making it easier to understand for visually impaired people.

The Drupal accessibility handbook and theming guidelines ensure that the Drupal themers are well aware of the best practices while they are building their website. themes

three blue keys with a man in wheelchair, ear, and a man walking with a stick on a white keyboard
  • Third-Party Integration

The ability of Drupal to integrate with third-party applications is the primary building block of generating a robust functional system. Making the task easy for developers, seamless third-party integration allows a bonus for marketing strategic stand too. 

Integrating Drupal with an EHR system 

The Electronic Health Record (EHR) system is steadily gaining its ground in the healthcare industry. Used for electronically storing up data of the patients in the digital format it offers a completely new level of playing field for both the patients and providers. 

Bestowing the physicians with faster access to the medical records, EHR avoids errors and minimizes the cost which is associated with paperwork. 

Drupal, when integrated with an EHR keeps the data protected at all times and prevents duplicacy of the content, while still permitting the user to interact with the view and input the information which is necessary for the role.

It securely shares the information with patients and other clinicians assisting providers more efficiently diagnose patients, reduce medical errors, and provide safer care

Some of the most adopted EHR systems in use that can be integrated with Drupal are NueMD e-MD, PHI etc.  

A desktop and tablet with text and images in the screen
  • Mobile first design 

Around 61.2% of the worldwide population is indulged in the use of a smartphone, and in such an innovative environment the manipulation of mobile compatible websites is hard to ignore upon. 

Incorporated with mobile friendly themes which is suitable for any screen size, Drupal works well for almost all devices which include iPhone, iPad, Android, and even blackberry. There is no doubt that having a medical based mobile website armed with all relevant information to target a diverse group of people and partners is a profitable mechanism for every medical organization. 

Drupal makes it easy for users to have a better mobile experience on healthcare websites. The mobile first designs let them set up online profiles, helps them in maintaining records, and other medical practices. 

  • Security 

According to HIPAA Journal, there have been about 2,181 healthcare data breaches (2009-2017) involving more than 500 records. 

A graph with blue graph lines

Healthcare industry is massively reliant on technology these days, not just the hardware to cure illnesses, but also when it narrows down to send, retrieve, and store data. 

Drupal’s lockdown security and publishing of detailed security reports have been a major shield to the organizations. With the evolution in the Drupal system, the platform has conquered a huge reputation for its security and robust performance. Hospital websites store an ample number of data, records, reports, digital assets in their database. 

The modules and extensions are provided with a layer of extra security to the website, marking Drupal a highly secure CMS.  

Not only this, but Drupal also contributes to resolving security issues that are supported by the security advisor. It also offers help for contributing module maintainers in fixing security issues. 

  • Multilingual feature 

With medical tourism getting popular and healthcare technology advancing sparingly forcing people to look for better medical assistance across various parts of the globe. It is not uncommon to encounter patients who speak a language other than English.

To expand the access to people across the globe in healthcare,  Drupal grants 4 easy modules to translate the website into more than 94 languages providing healthcare websites a better scope of communication with the patients. It is also easy to build a custom language not available in Drupal. 

  • Better user experience and engagement 

Medical healthcare websites are often used by people in distress. And if operations, like finding the right health care provider, or finding medical records, and paying bills, should be tough and unintuitive, it would leave people more frustrated. 

In fact, Google tells us that website speed has a great impact on how people perceive it. Therefore engagement through media features and at the same time uninterrupted communication online with faster loading is important. 

With an excellent array of modules, Drupal 8 has to be the right choice for creating an engaging user-friendly website in the healthcare sector. Over the past few years, Drupal has evolved to be more flexible and better for technical as well as non-technical users, presenting a customizable administration dashboard and responsive web designs. 

Drupal lets the user personalize the website in a way they desire. Acquia Lift Connector, Drupal module, offers integration with the Acquia Lift service with an improved user experience for personalisation

Important Factors to Look for in a Drupal Partner 

Now that organizations have started using Drupal as their CMS to revamp or build their organization’s website, the next step would involve choosing up of Drupal vendors. 

Every Drupal vendor is different and posses a unique set of skills, thus choosing the right partner makes it important. This can be done by checking some vital factors which can include:

Important factors

Points to remember



Monitoring and Processing

Verifying about the site performance

Maintenance and technical support


Things to Remember Before Choosing a Drupal Partner 

  1. Do they have the right amount of healthcare experience?

    Every healthcare marketing agency has creative resources available in their vanity, but only an experienced partner adds up to the plans, solutions and original thinking. 

    Thus, no matter if the firm has beaten up with high-quality challenges or low-key struggles, every potential partner should have capabilities of providing solutions, and it can only be done when that potential partner has knowledge and experience of solving the health-related travails.

    Patients expect a very specific functionality in the health website, from providing directories to patients reports, it becomes really important to find a partner that is able to build modules and timely update them. 

    Not only this but healthcare organization are apprehended to follow HIPAA compliance guidelines which protect individuals' medical records and other personal health information. The healthcare industries can’t afford to take risks when it comes to HIPAA and PCI compliance

    One wrong or missed encryption and the company's reputation is put under the radar. Which is not only bad for the branding but also violates the rules. Therefore, demanding experience to be an important factor. 

  2. Do they have an adequate content strategy?

    Content strategy is important to all the healthcare websites. It is important to team up with the partner that would help you to organize your site in a way that clearly reflects the main objectives of the visitors. 

    There is a need of a  partner with an agency that will help to organize the site content in a manner that is clearly reflected on the visitor’s objectives, and build out the information architecture in Drupal. 

    Drupal’s content model can be complicated if the user is not familiar with the platform. If you operate with an experienced strategist that would help you to see the long-term vision before you start adding content into Drupal, it will help in the long run. 

  3. Do the goals and services match?

    A true healthcare organization partners should deliver greater cerebral and inventive values. Which includes the delivery and projection of the agendas. How to conquer it? 

    Have a serious talk about money management.  

    Many firms work on a plan to meet or exceed the possible budget. However, a partner minded organization has a cost-effective way of meeting or exceeding goals. The aim is to construct a strong measure of results, outcomes, and high return-on-investment. 

  4. Do they have a plan for performance measurement?

    Every organization would have projects with a certain goal. Here, it becomes an important factor for you to know how does your potential partner measure the scale of performance towards that goal?

    Benchmarking is the term which is used to compare the current performance and the overall standard. Every Drupal based agency measures and quantifies the results based on the - manual page. It describes various methods to measure the performance of the web server, allowing you to witness the performance and even improve it for the future.

    Performance measurement can also be analyzed with the help of Performance Bucket model. This model helps in making the detect-triage-diagnose process more efficient.

    Applications insights is a service that lets the developers monitor the performance, availability, and usage of the entire applications. It becomes an essential part of the application lifecycle.

    As mentioned above, a user tends to abandon a website if it doesn’t load after 3 seconds, and when it comes to healthcare websites, loading time becomes an important factor. Having a predefined performance budget would allow you to enforce better results.

    Your long-term potential partner should be induced by a good design team and development cycles which would help in maintaining the value limits that takes care of the website performance. Performance Budget is one such design and development which would help the user to establish and maintain the culture of an organization, helping them to deliver a smooth.A blue cloud which shows a life cycle, the left and right side of the has a speed clock with a drupal sign

  5. Long-term partnership

    It is true that Drupal healthcare websites are quite amazing but on the other hand, they are big and complex. Thus, make sure that you pick an organization that would be there to support you even after the procedure of website-went-live is done. A long-term partner is needed if the custom modules built on the website requires regular updates and security patches. 

  6. What methodologies and tools do they use to manage their project?

    Drupal has several modules several distribution and modules developed to perform several project management functions. A clearer idea on which methodology is right for what project contributes to the desired goals in the end. There are several project management frameworks which should be used by an organization to build a successful project. Agile frameworks like:

    • JIRA
    • Scrum
    • Kanban
    • Scrumban

Case study for PMG

Produce Market Guide is a product of a Farm Journal which shares information on fresh fruits and vegetables. The advanced search feature on the website was slow, which resulted in a poor user experience. 

red and white homepage with text and two boxes

To fulfill the needs and the standards of loading time, the site was mapped and decoupled with the Elastic search. The new website now is a lot user-friendly with search application and better loading result. Because of the third party integration like Kibana and Logstash, the admin can now track the user behavior and personalize the user experience. The project was completed within a month which followed the principles of SCRUM and AGILE with team fluidly arranging the needs accordingly. 

Future of Healthcare Marketers using Drupal 

As an organization, the requirements are bound to change from time to time and using a single vendor or a specific partner can sometimes be the hindrance. This is a common scenario in healthcare industries. Fortunately Drupal makes a lot of things easy for healthcare marketers or organizations.

It prevents everyone from getting caught up with a single vendor

Drupal exponential growth in the healthcare industry has been rapidly increasing. With the healthcare industry in the third position of top 10 industries using Drupal, it continues to grow mature. 

A blue bar graph on white background

High profile hospitals like C.S Mott Children’s Hospital, Duke medicine, Memorial Sloan-Kettering Cancer Center, Northwest medicine etc has further elevated Drupal’s profile. It’s these types of reputed organizations with a progressive digital team which tells us that Drupal has a bright future in the healthcare sector. 


The Drupal platform is an open source CMS, there are many agencies around the country that have developers familiar with Drupal. Having developers who are familiar with Drupal isn’t the same as having a team that understands the inherent complexity of healthcare websites. 
OpenSense Labs believes in providing the best Drupal partnership for you. Contact us at [email protected] for a rich and conducive partnership.

Nov 16 2018
Nov 16
BLT (Build and Launch Tool) provides an automation layer for testing, building, and launching Drupal 8 applications. It is the default recommended tool used by Acquia Professional Services.We use BLT in Professional Services to sync databases, manage configurations, create artifacts for deployments, and tons of other things that -- most of the time -- save us time. If you have not tested it yet I’d recommend you to have a look:, on the other hand, is a Docker-based, open source tool that helps you to quickly spin up a (local) environment in applications like Wordpress; Drupal 6, 7 and 8; Backdrop, and Typo3. Have a look at
Nov 15 2018
Nov 15

It's almost time for NEDCamp, and I can't wait!

Redfin will be presenting a session there on our toe-dipping foray into the world of "progressively decoupling" Drupal.

Recently, I was on an episode of Talking Drupal to explore a little bit more about React and Drupal together--this shoudl whet your appetite for the session at NEDCamp. Give it a listen!

At the presentation, you can expect a deeper dive into some of the code and the real implementation that wires these two technologies together. I look forward to seeing you there!

Nov 15 2018
Nov 15

This is Part 2 of a three part series about choices you can make with the news of Drupal 9’s release. Part 1 is an overview. Part 2 is what to do if you choose to stay on Drupal 7. Part 3 is what to do it you choose to upgrade to Drupal 8. 

With the recent news of the release date of Drupal 9, and that Drupal 7 & 8 will be end of life Nov 1, 2021, our Director of Engineering Kat White wrote Part 1 of a blog post series with an overview of how you should next approach your Drupal site . . . is it best to stay on Drupal 7? Or should I upgrade now to Drupal 8?

In that article, Kat outlined the pros and cons of going from D7 to D9, or upgrading now to D8.

In Part 2 of this series, let’s assume you’ve decided to stay on Drupal 7 for now. What next?

The average lifetime of a website is three years. So if you have had your Drupal 7 site for a three years, hurrah! You’ve done well with your return on that investment. And Drupal 7 is robust and supported enough that there’s still a lot of growth and life in your site. So unless there’s a specific module or item that only D8 can offer, you can feel confident that your D7 site will be solid for a few more years.

But this also means you have about two years to maintain that D7 site: in Fall of 2020, you’ll need to start prepping for that Drupal 9 upgrade (or — gasp! — switching to another CMS). This also buys you two years to secure funding, and get all the stakeholders on the same page for the next upgrade.

So here are some of the incremental bites we recommend you take over the next two years of maintenance:

  • Review your website strategy: assuming you built your site a few years ago around business goals, how is the site working towards those goals? Have your goals shifted? Does your site still achieve your mission? It’s always good to revisit your strategy to ensure any changes you make are on the right path.
  • Always audit your content: Content has a way of getting out of control quickly if there are multiple editors and the lines of governance get blurred. Archive or delete unnecessary content. Also review it for your authority voice and mobile strategy.
  • Review your SEO: In addition to keywords, make sure your content is mobile-focused, that your URL structures are meaningful, and schemas are used to describe the content of a page.
  • Code Quality: How clean are your code standards? Are the styles that drive the look and feel of the site well-structured and easy to extend? Is there good documentation? Completing a code audit would be smart to make sure your code is as quality as possible and fits your goals.  
  • Optimize your user experience: There are many tweaks that can be made to a site to make sure users are finding things. Can you run a usability test on a red button vs a blue one? How about using heatmap software to see where users are clicking and scrolling, and tweaking accordingly? Between surveys, interviews with users, looking at analytics, and testing, you can constantly improve the user experience of your site.  

If you’re a more visual person, I gave a talk at BADCamp just last month about going from D7 to D9 if you prefer video.

And if you need extra help with nurturing and growing your existing D7 site, we can help. Kanopi Studios has a dedicated Support Team that currently maintains over 75 Drupal 7 sites, and will be taking on new Drupal 7 support clients at anytime. Additionally, we will be an official long-term Drupal 7 support provider once the application on is available.

If you want help or want to talk through anything do with your Drupal 7 site, please call Anne directly at 1-888-606-7339 or contact us online.

Nov 15 2018
Nov 15

This week Acquia was named a leader in the Forrester Wave: Web Content Management Systems. Acquia was previously named a leader in WCM systems in Q1 2017.

The report highlights Acquia and Drupal's leadership on decoupled and headless architectures, in addition to Acquia Cloud's support for Node.js.

I'm especially proud of the fact that Acquia received the highest strategy score among all vendors.

Thank you to everyone who contributed to this result! It's another great milestone for Acquia and Drupal.

November 15, 2018

19 sec read time

Nov 15 2018
Nov 15

In this blog post, I'm going to show you to enable Drupal users to select entities using the "Entity Browser" module.

This tutorial was requested by an OSTraining customer who is building a book review site. The customer wanted to use Entity Browser so that they can create this feature:

  • The site has two content types: Books and Book Reviews.
  • When users create a new Book Review, they can use a view to search for and select the book they're reviewing. For example, if they're reviewing "War and Peace", they can search for the exisiting "War and Peace" node.
  • When the book review is published, the selected node will be embedded inside the book review.

This customer request can be achieved with the help of the Entity Browser module. This module provides a browser that Drupal users can use to embed nodes into other parts of their site.

This tutorial will take you through the site-building exercise and show you how to use the Entity Browser module.

Step #1. Install the required modules

In order to use Entity Browser, you have to install the following modules: Entity Browser and Chaos Tools.

Use your preferred method to download and install these modules. I’m using Composer:

composer install drupal/entity_browser
composer install drupal/ctools

Allow Your Users to Choose Drupal Entities with the Entity Browser Module

This will place the modules in your Drupal installation. After that click Extend, search for both modules, enable them and click Install.

Step #2. Create the Taxonomy terms

In this example, books are categorized by their genre, so we will need a vocabulary called "Book genre".

  • Click Structure > Taxonomy > Add vocabulary.
  • Give the vocabulary a proper name and description.
  • Click Save.

  • On the List tab, click Add term.

Add the following terms:

  • Adventure
  • Cookbook
  • Drama
  • Fantasy
  • Horror

Step #3. Create the Book content type

Next we'll create the content type for our books. We'll use the Book Genre taxonomy that we created in the previous step.

  • Click Structure > Content types > Add content type.
  • Create a content type called Book and add these fields with their default settings:


  • Click Add field once again.
  • In the dropdown list under Reference, select Taxonomy term and give it a proper label.
  • Click Save and continue.

  • Leave the Allowed number of values at 1 and click Save field settings
  • Scroll down to the bottom of the Edit screen and choose the vocabulary you want to reference in your content type. In this case: Book Genre
  • Click Save settings

  • Click the Manage form display tab.
  • Look for the Book genre field and change its widget to Check boxes / radio buttons.
  • Click Save.

Step #4. Create the Book content

Now it’s time to create 5 to 10 books and assign each one of them to a particular genre.

  • Click Content > Add content > Book.

Step #5. Create a View

After creating some sample content, you are ready now to create the view. This view will be displayed on the entity browser so you can pick a book while you are creating a book review.

  • Click Structure > Views > Add view.
  • Create a view with the title Available Books.
  • Show content of type Book.
  • Leave the Page and Block settings unchecked.
  • Click Save and edit.

  • Click the Add button under the DISPLAYS section.
  • Select Entity Browser.

  • Click Rearrange besides the SORT criteria and remove the Content: authored on desc criterion.
  • Click Apply.
  • Click ADD besides the FILTER criteria and select the Book genre field.
  • Click Add and configure filter criteria.

  • Make sure the Book genre Vocabulary is selected.
  • Change the Selection type to Dropdown.
  • Click Apply and continue.

  • Check Expose this filter to visitors, to allow them to change it.
  • Make sure the Operator is selected as Is one of.
  • Click Apply.

  • Add the Title field to the SORT criteria.
  • Leave the default configuration Sort ascending and click Apply.

This will present the books in the view in alphabetical order. You have to insert some more fields to be displayed on the view. At the moment, there is only the node title available.

  • Click the Add button on the Fields Section.
  • Look for the book cover field and click Add and configure fields.

  • Select Image style (Thumbnail 100x100) and click Apply.
  • Click Add once again in order to add the Entity browser bulk select form field.
  • Click Add and configure fields.

  • Click Apply.

The use of this field is mandatory if you want to use Entity Browser, so pay special attention to this.

  • Change the format of the view, for example to Grid.
  • Click Apply twice.

The configuration of the view in Views UI should look like the image below. Click Save in order to save the View.

Step #6. Configure the Entity Browser module

In this step, we'll choose the setting the key module in this tutorial: Entity Browser.

  • Click Configuration > Entity browsers

  • Click Add Entity browser.
  • Give it a proper label, for example, Book browser.
  • As display plugin select iFrame.
  • Click Next.

  • Check Auto open Entity browser and click Next.

  • Click Next two more times until you land at the Widgets configuration page.
  • Click the dropdown list in order to select the View widget plugin.
  • Change the label of the widget, for example: “Choose a book”.
  • Select the view you configured in the Step #5.
  • Click Finish.

Step #7. Create the Book review content type

Our site is nearly complete. Before we finish, we do need to create the content type that book reviewers can use:

  • Click Structure > Content types > Add content type.
  • Name this content type Book review.
  • Add a new field, from the Reference section choose Content.
  • Give this field a proper label, for example, The book.
  • Click Save and continue.
  • In the Type of item to reference option select Content.
  • Click Save field settings.

  • Click Save settings.
  • Click the Manage form display tab for this content type.
  • Locate the reference field and change its widget to Entity browser.
  • Click the cogwheel on the right and select Book browser (or whatever you called the browser you just created in Step #6.
  • Click Update.
  • Click Save.

Notice that you also have the option to display only the Entity label or the Full rendered entity. You could use view modes (e.g. Teaser) to present the entity on this new Book review content type.

Step #8. Create the book reviews

Now our site is nearly ready to use. Let's create a book review and see if everything is working correctly.

  • Click Content > Add content > Book review.
  • Give this node a proper title and body texts.
  • Scroll further down and you will find a collapsed section called THE BOOK (that is the name of the field).
  • Click this field and you will see the Entity Browser where you can select the Book you are referencing in this Book review.
  • Furthermore, there is an exposed filter on top so you can select books only pertaining to one genre.
  • Select a genre and click Apply.

The browser will show you only books within this genre.

  • Select a book and click Select entities.

  • After embedding the entity click Save and you will see the referenced Book entity on the Book review node.

Final result

This tutorial has demonstrated the power of the "Entity Browser" module for Drupal 8. I hope you liked it. Thanks for reading!

About the author

Jorge lived in Ecuador and Germany. Now he is back to his homeland Colombia. He spends his time translating from English and German to Spanish. He enjoys playing with Drupal and other Open Source Content Management Systems and technologies.
Nov 14 2018
Nov 14

This blog has been re-posted and edited with permission from Dries Buytaert's blog. Please leave your comments on the original post.

After months of hard work, the Drupal Governance Task Force made thirteen recommendations for how to evolve Drupal's governance.

If you want to go quickly, go alone. If you want to go far, go together.

Drupal exists because of its community. What started from humble beginnings has grown into one of the largest Open Source communities in the world. This is due to the collective effort of thousands of community members.

What distinguishes Drupal from other open source projects is both the size and diversity of our community, and the many ways in which thousands of contributors and organizations give back. It's a community I'm very proud to be a part of.

Without the Drupal community, the Drupal project wouldn't be where it is today and perhaps would even cease to exist. That is why we are always investing in our community and why we constantly evolve how we work with one another.

The last time we made significant changes to Drupal's governance was over five years ago when we launched a variety of working groups. Five years is a long time. The time had come to take a step back and to look at Drupal's governance with fresh eyes.

Throughout 2017, we did a lot of listening. We organized both in-person and virtual roundtables to gather feedback on how we can improve our community governance. This led me to invest a lot of time and effort in documenting Drupal's Values and Principles.

In 2018, we transitioned from listening to planning. Earlier this year, I chartered the Drupal Governance Task Force. The goal of the task force was to draft a set of recommendations for how to evolve and strengthen Drupal's governance based on all of the feedback we received. Last week, after months of work and community collaboration, the task force shared thirteen recommendations (PDF).

The proposal from the Drupal Governance Task Force

Me reviewing the Drupal Governance proposal on a recent trip.

Before any of us jump to action, the Drupal Governance Task Force recommended a thirty-day, open commentary period to give community members time to read the proposal and to provide more feedback. After the thirty-day commentary period, I will work with the community, various stakeholders, and the Drupal Association to see how we can move these recommendations forward. During the thirty-day open commentary period, you can then get involved by collaborating and responding to each of the individual recommendations below:

I'm impressed by the thought and care that went into writing the recommendations, and I'm excited to help move them forward.

Some of the recommendations are not new and are ideas that either the Drupal Association, myself or others have been working on, but that none of us have been able to move forward without a significant amount of funding or collaboration.

I hope that 2019 will be a year of organizing and finding resources that allow us to take action and implement a number of the recommendations. I'm convinced we can make valuable progress.

I want to thank everyone who has participated in this process. This includes community members who shared information and insight, facilitated conversations around governance, were interviewed by the task force, and supported the task force's efforts. Special thanks to all the members of the task force who worked on this with great care and determination for six straight months: Adam BergsteinLyndsey JacksonEla MeierStella PowerRachel LawsonDavid Hernandez and Hussain Abbas.

Nov 14 2018
Nov 14

Make your life easier by using the terminal to start, stop or restart Apache web server on Mac OX by simply executing the apachectl commands.

Start Apache server command:

sudo /usr/sbin/apachectl start


sudo apachectl start

Stop Apache server command:

sudo /usr/sbin/apachectl stop


sudo apachectl stop

Restart Apache server command:

sudo /usr/sbin/apachectl restart


sudo apachectl restart

And yes it's not always necessary to check what the status of Apache is, you can simply run the restart command mention above without worrying about whether is running or stopped.

Restart command is also very helpful if you make any changes related to your Apache server configuration in httpd.conf. And sometimes just restart the server to before starting debugging why the website is not responding or something wrong with your Apache PHP setup.

Nov 14 2018
Nov 14

Midwest Drupal Camp (MidCamp) is an annual event held in Chicago that brings together people who use, develop, design, and support the Web’s leading content management platform, Drupal.

For more information email us at [email protected]

Thanks to for hosting our site.

Nov 14 2018
Nov 14

"A Drupal 8 initiative to improve Drupal's content workflow", this is how Dries Buytaert first defined the Workflow Initiative, back in 2016. Now, coming back to 2018, you must be asking yourself a legitimate question: “How do I set up a content workflow in Drupal 8?”

“How do I manage, extend and customize an editorial workflow to fit my Drupal 8 website's publishing needs? One including multiple users, with different permissions, that manages the workflow status of... different content types.”

Which are the (not so) new content management features and functionality implemented to Drupal core by now? Those aimed at improving the user experience (editors, content authors...)?
Let's get you some answers:

1. Introducing: The Content Moderation Drupal 8 Module

Content Moderation has reached stable version in Drupal 8.5. 

Why should you care? What makes this core module of critical importance for creating your content publication workflow?

  • because otherwise, you'd have only two built-in states to “juggle with”: published and unpublished
  • because it enables you to build a simple workflow for drafts, too
  • … to set up new custom editorial workflows, as well, in addition to the default one

In short, what this module does is that it enables you to create a flexible content workflow process where:

  • one of the editors in your team stags a “Draft” content
  • and another user on your Drupal 8 website, with different permission reviews/updates it

It comes as a powerful tool for you to leverage when your workflow needs are more complex than “ON/OFF”.

2. How to Set Up a Simple Content Workflow in Drupal 8

You'll only need 2 modules for putting together the workflow for a basic content publishing scenario:

  • Workflows, that will provide just the framework needed for managing the states and transitions included in the process
  • Content Moderation, which will add the “Draft” state, a “Draft to Published” content workflow, and an admin view for handling all the drafts

And here's setting up a basic content publishing workflow in 4 simple steps:

  1. Enable the “Content Moderation” core module
  2. Go to “Configuration” and click the “Workflow” tab; it's the last one in the unfolding drop-down menu
  3. Open the “Workflows” page
  4. Tada! You've just turned on your default “Editorial workflow”

For now, you should be having 3 major states in your workflow:

  • draft
  • published
  • archived

Note: use permissions to grant content contributors the right to edit/create drafts, editors the “Transition drafts to published” permission, admins the right to “restore to draft transitions” and so on...

And voila! Your default editorial workflow, with the Content Moderation module ON, should suit your basic state tracking needs. It should fit any standard use case.

Now, if your workflow needs are a bit more complex and website-specific... keep on reading:

3. Content Revisions in Drupal 8

One of the most powerful features that Content Moderation will “turbocharge” your editorial workflow with is: 

Saving each change as a content revision in the database. 

It stores all revisions in the system. But let's take a common scenario, shall we?

Let's say that a second editor decides to make an update to a piece of content (either a content type or a custom block type). He/she updates it, then saves it as a “Draft”. You'll then still have the published version of the content, that's live, on your Drupal website, as well as this Draft (or several drafts), stored, as a revision, in your database.

A crucial functionality for any complex content publishing workflow:

  • with content revisions, you get to keep track of who's updated what and when
  • … to trigger log messages regarding those changes, informing other content authors that a given content has been edited
  • and you can also revert to the oldest revisions if needed

4. How to Extend and Customize Your Content Publishing Workflow 

Rest assured: there's no need for custom code writing, even if your content publishing needs are a bit more complex.

Here's what it takes to extend and to custom-tune your default content workflow in Drupal 8:

  1. While on your “Workflow” page, just click the “Add a new state” button and add more workflow states: “Needs Review” or “Second Review” etc.
  2. Next, make sure you adjust your transitions to support your newly added state(s). For instance, a “Second Review” state would require a “Move to Second Review” transition. 
  3. Then, apply your extended workflow to either a specific content type or to a custom block type
  4. You can also create new separate content publishing workflows to have a different one for your press releases, a separate publishing workflow, an editorial workflow for your blog posts, a warehouse workflow etc.

Defining multiple workflows in Drupal 8, each one with its specific “ecosystem” of states and transitions, is now possible.

How to Create and Manage a Content Workflow in Drupal 8: Set Up a Custom Content Workflow


  • the transitions in your workflow will stand for the permissions that you'll assign to different Drupal roles in your team
  • use clear, descriptive verbs to name them
  • remember to grant editors the permission to undo transitions, as well (they might need to revert a piece of content to “Needs Work” once they've reviewed it, for instance)

In short:

By defining multiple states for your piece of content (Published, Pending Review, Ready for Review, Ready for Second Review, Unpublished, Draft etc.) and managing the permissions corresponding to the state transitions you can build a content workflow in Drupal 8 capable to support even the most complex publishing scenarios.

Now, another common scenario where a custom content workflow in Drupal 8 is needed is when you have a website publishing content to multiple platforms. 

You have a Drupal 8 website, a native application and an internal portal, let's say...

Your publishing workflow would look something like this:

  • first, content gets moderated to be published on the front-facing Drupal website
  • then, it gets put in the queue for review before it gets published (or declined) on each one of the other 2 platforms

Note: if you need to further extend your editorial workflow and to apply it to a custom entity, for example, you can always write a WorkflowType plugin that meets your specific needs.

Then, you can apply your custom workflow to... steps in ordering in a resto app, steps in a manufacturing process and to pretty much any entity (think beyond content) that needs to change its workflow states...

5. How Do You Know If You Really Need an Editorial Workflow?

Do you really need to use content moderation? To set up a whole workflow for your publishing scenario?

You do, if and only if:

  • there are multiple content authors uploading content on your website, content that needs to be reviewed before it gets published
  • you're managing a team of multiple admins, with different user roles
  • each moderator knows his/her role in the publishing chain

But if the content authors in your team have the very same type of permission as the admins and they just push content through, a content moderation workflow is useless.

It would only slow down the publishing process.

So, just because you have the option to set up a content workflow in Drupal 8, doesn't mean that you should rush to implement it on your own website, too... Maybe you just don't need a workflow.

The END! 

What do you think about these content management capabilities in Drupal 8? Are they powerful and diverse enough to suit your workflow needs? 

Nov 14 2018
Nov 14

The role of marketers has evolved beyond simply managing and coordinating online advertising campaigns to drive traffic to their respective websites; successful marketers must transform themselves to become storytellers.

Storytelling is an essential skill to master the art of crafting a digital experience for your digital business would-be customers and users. 

Therefore, as a digital business, you must be strategic when it comes to choosing the appropriate platform for your digital experience. 

The fact that you can easily publish and manage multimedia content across multiple websites under one brand has made Drupal a popular and strategic platform for enterprises, the media, healthcare and even powering digital governments.

In short; Drupal is a dream come true for marketers working in the aforementioned industries and sectors.


Here are 5 Drupal modules that were created by the Drupal community for marketers:



HubSpot is a widely used and popular inbound marketing software platform that helps companies attract visitors, convert leads, and close customers.

HubSpot Integration Settings

Lead generation is a carefully planned ongoing process; deliberate in targeting users based on personalized content marketing.

HubSpot CRM is relied upon by marketers to enable them to qualify the leads generated from the landing pages they developed on their websites.

Marketers that use Drupal-based websites have saved a lot of time and effort by connecting their HubSpot CRM with their web forms that capture the desired user data.

For example, a Webform-based contact form on your site can send its data to HubSpot, where you may already track potential clients and contacts; or a Webform-based e-newsletter signup could send the lead to HubSpot's targeted marketing system, letting you use your pre-existing email campaigns.

Moreover, marketers that create content on HubSpot, can easily display it in Drupal 8’s front-end.

With almost 5,000,000 downloads and nearly 500,000 websites using this module; this makes Webform one of the most popular Drupal modules out there.

Webform Wizard Admin

Forms are an essential feature of a digital experience that relies upon gathering user data relevant to content marketing and personalizing user experiences across all relevant digital platforms.

Webform enables integration with various 3rd party marketing solutions such as MailChimp, HubSpot, and Salesforce to name but a few. You can find a comprehensive list of Webform add-ons here.

A great and simple guide to how you can get started on form building using Webform is available here courtesy of OSTraining.

This Drupal module adds the Google Analytics web statistics tracking system to your website.

Google Analytics Admin Section

According to, Google Analytics is the most popular analytics tool in the world with at least 37 million live websites currently using the giant tracking and performance monitoring platform.

Marketers that use Drupal website benefit from the Google Analytics module to identify their traffic size, traffic sources and track the performance of their website with regards to ongoing personalization of their user experience.

Being able to seamlessly integrate Google Analytics also provides marketers with real-time data for current site usage and user behavior. In addition to the aforementioned; marketers can track almost every statistic imaginable such as User ID, domain, as well as how many and which files were downloaded and by whom.

For full details regarding the statistics that marketers can track, visit the official Drupal module webpage for Google Analytics here.

This module provides integration with MailChimp, a popular email delivery service.

MailChimp Logo

Regularly maintained and reliable, MailChimp is a favorite tool amongst email marketers. That is mainly due to the attention to both sides of the email exchanges taking place.

This Drupal module allows email marketers to create and send email marketing campaigns from your website and analyze the performance of the campaign while monitoring the behavior of users interacting with your emails.

On the other hand, your website visitors can choose to subscribe (or unsubscribe) easily to the email list of their preference.

MailChimp is not limited to email delivery only; you can also integrate MailChimp E-Commerce which allows marketers to optimize their online store sales via personalized email marketing campaigns and automation workflows.

This module provides integration with the Crazy Egg heat map service.

Crazy Egg Heatmap

Much of digital business and marketing success comes down to the ongoing enhancement of your digital experience.

This requires a consistent effort of monitoring feedback from your users who in the end must be able to enjoy an engaging user experience that doesn't feature frustrating issues such as slow page load speed and irrelevant content.

The aforementioned frustrations can heavily impact your search engine optimization (SEO) efforts to rank higher on search engines like Google; which makes monitoring online user behavior on-site all the more imperative for marketers.

Crazy Egg is a simple Drupal module that is easy to install to your Drupal 8 (or D7) website to gain access to various reporting formats that showcase online behavior on your web pages.

By recording the user behavior, marketers are able to gain a visual insight into how users interact with different elements, features, and components of their website. Marketers are able to understand where users face challenges browsing the site, which aspects of the website they spend most of their time on and which they avoid completely.

Ultimately, the feedback gained allows marketers to develop the best UI, UX, and content in a more informed manner.

This is a core Varbase feature. We strongly recommend Varbase as the ultimate starter kit and distribution to build your Drupal digital experiences.

Varbase SEO

Enterprise level organizations and governments that rely upon an ongoing content marketing process require a content publishing and management solution that can handle heavy traffic without compromising performance standards.

This is where Varbase saves the day.

Not only is Varbase inherently optimized for all search engines it also enables you as a content marketer to optimize your multilingual content regardless of the media format to a diverse and global target audience.

  • Optimized markup that is compliant and accessible to WCAG 2.0 Level AA standards
  • XML Sitemap that is also language aware
  • Content SEO grader and recommendations
  • Full-suite of meta tags and descriptive tags that makes your site more optimized, integrated and favorable to search engines such as Google, Yandex, and Bing, and social media networks such as Facebook, Twitter, and many other
  • Total control over how your site will look when appearing on search results
  • Handle redirects with ease and prevent dead links
  • Readable and SEO-friendly URLs that automatically reads your site's structure and hierarchy
You can view our work on digital experiences that were built using Varbase here.

Honorable Mentions:


One of the popular Drupal modules available out there. Used by marketers and Drupal platforms that wish to avoid spam.

Honeypot keeps your database clean by blocking spambots from using your web forms using both the honeypot and timestamp methods and is not as intrusive as CAPTCHAs.


Accelerated Mobile Pages (AMP)

The AMP module is designed to convert Drupal pages into pages that comply with the AMP standard

AMP is important because it helps web pages load faster which potentially improves usability and convinces visitors to stay longer on your site engaging with your content.

The logic is straightforward: faster load time leads to better engagement, which reduces bounce rate and improves mobile ranking.

If we were to feature every Drupal module out there the list would be way too long, so which Drupal modules do you prefer? How does it help you achieve your marketing goals?

Share with us your own preferences and we will surely feature them as soon as possible.

Nov 14 2018
Nov 14

Have you always secretly wanted to spend your evenings writing symphonies, learning about filmography or assessing climate change? Studying niche subjects have traditionally been for niche students. But e-learning platforms have changed all that with the provision for learning almost any subject online.

A student in the front and two behind him sitting on their chairs with a paper and a pen in their hands

Corporate e-learning has witnessed a stupendous 900% growth in the last decade or so. With more and more e-learning platforms flourishing, organisations are striving to be the best to stand apart from the rest. Drupal has been a great asset in powering education and e-learning with its powerful capabilities that can help enterprises offer a wonderful digital experience. Let’s trace the roots of e-learning before diving deep into the ocean of possibilities with Drupal for building an amazing e-learning platform.

Before the internet era

Infographic with ten rows, icons and text showing the timeline of e-learningSource: eFront

A brief history of e-learning can be traced through the compilation made by eFront. Even before the internet existed, distance education was being offered. In 1840, Isaac Pitman taught shorthand via correspondence where completed assignments were sent to him via mail and he would, then, send his students more work.

Fast forward to the 20th century, the first testing machine was invented in 1924 that enabled students to test themselves. The teaching machine was invented in 1954 by a Harvard professor for allowing schools to administer programmed instruction to students. In 1960, the first computer-based training program (CBT program) called Programmed Logic for Automated Teaching Operation (PLATO).

At a CBT systems seminar in 1999, the term ‘e-learning’ was first utilised. Eventually, with internet and computers becoming the core of businesses, the 2000s saw the adoption of e-learning by organisations to train employees. Today, a plenitude of e-learning solutions are available in the form of MOOCs (Massive Open Online Courses), Social platforms and Learning Management System among others.

E-learning: Learn anywhere, anytime

In essence, e-learning refers to the computer-based educational tool or system that allows you to learn anywhere and at any time. It is the online method of building skills and knowledge across the complete workforce and with customers and partners. It comes with numerous formats like the self-paced courses, virtual live classrooms or informal learning.

E-learning refers to the computer-based educational tool or system that allows you to learn anywhere and at any time

Technological advancements have diminished the geographical gap with the use of tools that can make you feel as if you are inside the classroom. E-learning provides the ability to share material in all sorts of formats such as videos, slideshows, and PDFs. It is possible to conduct webinars (live online classes) and communicate with professors via chat and message forums.

There is a superabundance of different e-learning systems (otherwise known as Learning Management Systems or LMS) and methods which enable the courses to be delivered. With the right kind of tools, several processes can be automated like the marking of tests or the creation of engrossing content. E-learning offers the learners with the ability to fit learning around their lifestyles thereby enabling even the busiest of persons to further a career and gain new qualifications.

Merits and Demerits

Some of the major benefits are outlined below:

  • No restrictions: E-learning facilitates learning without having to organise when and where everyone, who is interested in learning a course, can be present.
  • Interactive and fun: Designing a course to make it interactive and fun with the use of multimedia or gamification enhances engagement and the relative lifetime of the course.
  • Affordable: E-learning is cost-effective. For instance, while textbooks can become obsolete, the need to perpetually acquire new editions by paying exorbitant amounts of money is not present in e-learning.

Some of the concerns that need to be taken care of:

  • Practical skills: It is considered tougher to pick up skills like building a wooden table, pottery, and car engineering from online resources as these require hands-on experience.
  • Secludedness: Although e-learning enables a person to remotely access a classroom in his or her own time, learners may feel a sense of isolation. Tools such as video conferencing, social media and discussion forums can allow them to actively engage with professors or other students.
  • Health concerns: With the mandatory need of a computer or mobile devices, health-related issues like eyestrain, bad posture, and other physical problems may be troublesome. However, sending out proper guidelines beforehand to the learner like correct sitting posture, desk height, and recommendations for regular breaks can be done.

Building Yardstick LMS with Drupal

OpenSense Labs built Yardstick LMS, a learning management system, for Yardstick Educational Initiatives which caters to the students of various schools of Dubai.

Homepage of Yardstick LMS with logos of schools containing leaves, candle, open books, and firestickYardstick LMS Homepage

The architecture of the project involved a lot of custom development:

1. Yardstick Core

This is the core module of the Yardstick LMS where the process of creating, updating and deleting the nodes take place.

2. Yardstick Quiz

We built this custom module for the whole functionality of the quiz component. It generates a quiz, quiz palette and quiz report after quiz completion based upon the validation of the visibility of the report.

Quiz report of Yardstick LMS with table consisting of columns showing the list of schools, students and grades.

We could generate three kinds of reports: 

  • An individual-level quiz where one’s performance is evaluated
  • A sectional-level report where performance for each section is evaluated
  • Grade-level report where performance for all the sections is compared and evaluated.

For the quiz, we had different sub-components like questions, options, marks, the average time to answer, learning objective, skill level score, and concept. The same question could be used for different quiz thereby minimising the redundancy of the data. Also, image, video or text could be added for questions.

Subcomponents of yardstick LMS with a tabular column for assessing the learning objective and two of the metrics coloured yellow and red.

3. Yardstick Bulk User Import

This module was built to assist the administrators in creating users all at once by importing a CSV file. Also, there is an option to send invitation mail to all the users with login credentials.

Message box for importing users with a blank box and a submit button

4. Yardstick Custom Login

We provided a custom login feature where same login credentials could be used to log into the Yardstick system. That is, we provided an endpoint for verifying the login credentials and upon success, users were logged in.

5. Yardstick Validation

This module offers all the validation across the site whether it is related to access permission or some time validation.

6. Yardstick Challenge

It offers the user an option to submit a task which is assigned to them where they are provided with text area and file upload widget.

Yardstick LMS has an intricate structure

On the end user side, there is a seamless flow but as we go deeper, it becomes challenging. Yardstick LMS has an intricate structure.

We had two kinds of login:

  • Normal login using Yardstick credentials
  • And the other for school-specific login like the Delhi Public School (DPS) users.
Flowchart with rectangles and circles of different colours explaining Yardstick LMS custom loginYardstick LMS custom login for DPS users

For DPS users, we used the same login form but a different functionality for validating credentials. DPS school gave us an endpoint where we sent a POST request with username and password. If the username and password were correct, then that endpoint returned the user information.

If the username was received, we checked on our Yardstick system if the username exists. If it does not exist, then we programmatically created a new user with the information that we received from the endpoint and created a user session. And if does exist, then we updated the password on our system.

Yardstick LMS is designed to govern multiple schools at the same time

We designed Yardstick LMS in such a way that multiple schools can be governed at the same time. All the students of various schools will be learning the same content thereby building uniformity.

The core part of our system dwells in the modules. The module is a content type that can store numerous information like components, concept, description, objective, syllabus among others. 

Several different components can be added like Task, Quiz, Video task, Extension, Feedback, Inspiration, pdf lesson plan, Real life application, and Scientific principles.

Yardstick LMS real-life application component page with an image showing animated human figures and atomic theory written above themYardstick LMS Real life application component page

Schools could opt for different modules for different grades. When a module was subscribed by a school, a clone module of the master module was created and the school copy was visible only to the school. School version could be modified by the school admin as per their needs and preferences. Master module remained the same. While creating a subscription, administrator had to provide the date so that the components were accessible to the students. School admin could set different dates to different components and only the components with past date were accessible.

Flow chart showing rectangles, squares and elliptical circle of different colours to explain module subscription to school in yardstick LMSFlow Diagram of module subscription to school

Also, we provided an option to create a dynamic feedback form for the modules for analysis. Yardstick Admin had the option to design and create a feedback form as per their requirement and could assign it to a particular module. Different types of elements could be utilised for designing the form like rating, captcha, email, range slider, text field, checkboxes, radio buttons and so on.

Message box showing star icons, a blank box and a submit button

Students and teachers need to submit their feedback for each of the modules. On the basis of this, Yardstick team try to improve the content of the system.

Session evaluation page of yardstick LMS with a set of questions on the left and different options on the right and a blank box at the bottom

Also, various roles were defined for users such as Yardstick Administrator, School Administrator, Teacher, and Student.

1. Yardstick Admin

Yardstick Admin can perform all the operations. He or she can create new users, grant permissions and revoke them as well.

2. School Admin

It has the provision for handling all the operation which are only related to their school. School Admin handles the modules and their components and can import user for their school. All school reports and task submissions are visible to School Admins.

3. Teachers

Teachers can view modules and components assigned to their classes and provide remarks to the students for multiple components and they can view all kinds of reports.

4. Students

They can attempt quiz, submit tasks, view components and view their own reports.

What’s the future of e-learning?

According to a report on Research and Markets, the e-learning market is anticipated to generate revenue of $65.41 billion by 2023 with a growth rate of 7.07% during the forecast period.

The report goes on to state that with the advent of cloud infrastructure, peer-to-peer problem solving and open content creation, more business opportunities would pop up for service providers in the global e-learning market. The introduction of cloud-based learning and AR/VR mobile-based learning will be a major factor in driving the growth of e-learning.

The growth of the e-learning market is due to the learning process enhancements in the academic sector

According to Technavio, the growth of the market is due to the learning process enhancements in the academic sector.

Infographic showing statistics on e-learning market with icons representing bar graph, speedometer, horizontal lines, and a bulbGlobal self-paced e-learning market 2019-2023 | Source: Technavio

Following are major trends to look forward to:

  • Microlearning, which emphasises on the design of microlearning activities through micro-steps in digital media environments, will be on the rise.
  • Gamification, which is the use of game thinking and game mechanics in a non-game context to keep the users engrossed and help them solve more problems, will see increased adoption rates.
  • Personalised learning, which is the tailoring of pedagogy, curriculum and learning environments to meet the demands of learners, can be a driving force.
  • Automatic learning, like the one shown in the movie The Matrix where a person is strapped onto a high-tech chair and a series of martial arts training programs are downloaded into his brain, can be a possibility.


It’s a world which is replete with possibilities. As one of the most intelligent species to walk on this earth, we perpetually innovate with the way we want to lead a better lifestyle. We learn new things to gain more knowledge. And in the process, we find ways of improving our learning experience. E-learning is one such tech marvel that promises to be a force to reckon with. It is not a disrupting technology but something that is going to get bigger and bigger in the years to come.

As a content management framework, Drupal offers a magnificent platform to build a robust e-learning system. With years of experience in Drupal Development, OpenSense Labs can help in providing an amazing digital experience. 

Contact us at [email protected] to build an e-learning system using Drupal and transform the educational experience.

Nov 14 2018
Nov 14

Drupal and Composer - an In-Depth Look


As any developer working with Drupal 8 knows, working with Composer has become an integral part of working with Drupal. This can be daunting for those without previous experience working with command line, and can still be a confusing experience for those who do. This is the first post in an explorative series of blog posts I will be writing on Composer, hopefully clearing up some of the confusion around it. The four blog posts on this topic will be as follows:

  • Part 1: Understanding Composer
  • Part 2: Managing a Drupal 8 site with Composer (Coming Soon)
  • Part 3: Converting Management of an Existing Drupal 8 Site to Composer (Coming Soon)
  • Part 4: Composer for Drupal Developers (Coming Soon)

So without further ado, let’s get started.

Composer: What is it?

The Wikipedia page ( describes Composer as follows:

Composer is an application-level package manager for the PHP programming language that provides a standard format for managing dependencies of PHP software and required libraries.

That’s an accurate description, though a little wordy. So let’s break it down a little further to understand what it means.

Programmers like to use the term DRY - Don’t Repeat Yourself. This means that whenever possible, code should be re-used, rather than re-written. Traditionally, this referred to code within the codebase of a single application, but with Composer, code can now be shared between applications as well. DRY is another way of saying don’t re-invent the wheel; if someone else has already written code that does what you want to do, rather than writing code that does the same thing, it’s better to re-use the code that that has already been written. For example, the current standard for authentication (aka logging in) to remote systems is the OAuth 2 protocol. This is a secure protocol that allows sites or applications to authenticate with other sites, such as Facebook, Google, Twitter, Instagram, and countless others. Writing OAuth 2 integrations is tricky, as the authentication process is somewhat complex. However, other developers have written code that handles OAuth 2 integration, and they have released this code on the internet in the form of a library. A library is basically a set of code that can be re-used by other sites. Using Composer, developers can include this library in a project, and use it to authenticate to the remote API, saving the developer from having to write that code.

Composer allows developers to do the following:

  • Download and include a library into a project, with a single command
  • Download and include any libraries that library is dependent upon
  • Check that system requirements are met before installing the library
  • Ensure there are no version conflicts between libraries
  • Update the library and its dependencies with a single command 

So how does Composer work?

Composer itself is a software/program. After a user has installed Composer, they can then say ‘Composer: download Library A to my system’. Composer searches remote repositories for libraries. A repository is a server that provides a collection of libraries for download. When Composer finds Library A in a repository, it downloads the library, as well as any libraries that Library A is dependent upon.

A note on terminology

In this article, the term Library is used. Libraries are also known as Packages, and referred to as such on

A project is the codebase, generally for a website or application, that is being managed by Composer. 

By default, the main repository Composer looks at is This is a site that has been set up specifically for Composer, and contains thousands of public libraries that developers have provided for use. When a user says ‘Composer download Library A’, the Composer program looks for Library A on, the main public Composer repository, and if it finds the Library, it downloads it to your system. If Library A depends upon (aka requires) Library B, then it will also download Library B to your system, and so on. It also checks to make sure that your system has the minimum requirements to handle both Library A and Library B and any other dependencies, and also checks if either of these packages have any conflicts with any other libraries you've installed. If any conflicts are found, Composer shows an error and will not install the libraries until the conflicts have been resolved.

While is the default repository Composer searches, projects can also define custom repositories that Composer will search for libraries. For example, many developers use Github or Bitbucket, popular services that provide code storage, to store their code in the cloud. A project owner can set up Composer to look for projects in their private Github, Bitbucket, or other repositories, and download libraries from these repositories. This allows for both the public and private code of a project to be managed using Composer.

What happens when I install a library?

Composer manages projects on a technical level using two files: compser.json and composer.lock.  First we’ll look at the composer.json file. This file describes the project. If a developer is using private repositories, the repositories will be declared in this file. Any libraries that the project depends on are written in this file. This file can also be used to set specific folder locations into which libraries should be installed, or set up scripts that are executed as part of the Composer install process. It’s the outline of the entire project.

Each library has a name. The name is combined of two parts, first a namespace, which is an arbitrary string that can be anything but is often a company name, or a Github user name etc. The second part is the library name. The two parts are separated by a forward slash, and contain only lower case letters. Drupal modules are all part of the drupal namespace. Libraries are installed using Composer’s require command. Drupal modules can be installed with commands like:

// Drupal core.
composer require drupal/core

// Drupal module.
composer require drupal/rules

// Drupal theme.
composer require drupal/bootstrap

When the above commands are run, Composer downloads the library and its dependencies, and adds the library to the composer.json file to indicate that your project uses the library. This means that composer.json is essentially a metadata file describing the codebase of your project, where to get that code, and how to assemble it.

Composer and GIT, Multiple Environments and Multiple Developers

Composer and GIT work really well with each other. To understand how, let’s first look at traditional site management using GIT. Developer A is creating a new Drupal project, purely managed with GIT:

  1. Developer A downloads Drupal core
  2. Developer A creates a new GIT repository for the code they have downloaded, and commits the code to the repository
  3. Developer A pushes the code to a central repository (often Github or Bitbucket)
  4. Developer A checks out (aka pulls) the code to this server.

This all sounds good, and it actually works very well. Now let’s imagine that Developer B comes onto the project. Developer B uses GIT to download the code from the central repository. At this point, the codebase in GIT exists in four locations:

  • Developer A’s computer
  • Developer B’s computer
  • The central repository
  • The production server 

At the moment, the codebase only consists of Drupal core. The Drupal core code is being managed through GIT, which would allow for changes to be tracked in the code, yet it’s very unlikely that either Developer A or Developer B, or indeed any other developers that come on the project, will actually ever edit any of these Drupal core files, as it is a bad practice to edit Drupal core. Drupal core only needs to be tracked by developers who are developing Drupal core, not by projects that are simply using it. So the above setup results in sharing and tracking a bunch of code that is already shared and tracked somewhere else (on

Let’s look at how to start and use Composer to manage a project. Note that this is NOT the best way to use Composer to manage a Drupal site, and is simply an example to show how to use Composer (see part 2 of this series for specifics on how to use Composer to manage a Drupal site).

  1. Developer A creates a new project folder and navigates into it.
  2. Developer A initializes the project with composer init, which creates a composer.json file in the project folder
  3. Developer A adds the Drupal repository at to composer.json, so that Drupal core, modules and themes can be installed using Composer
  4. Developer A runs composer require drupal/core, which installs Drupal core to the system, as well as any dependencies. It also creates composer.lock (which we'll look at further down the article)
  5. Developer A creates a new GIT repository, and adds composer.json and composer.lock to the GIT repository
  6. Developer A pushes composer.json and composer.lock to the central repository
  7. Developer A sets up the production server, and checks out the code to this server. At this point, the code consists only of the composer.json and composer.lock files. Additional servers can be set up by checking out the code to any server.
  8. Developer A runs composer install on the production server. This pulls all the requirements and dependencies for the project as they are defined in composer.json

Now when Developer B comes on the project, Developer B uses GIT to download the codebase to their local computer. This codebase contains only composer.json and composer.lock. However, when they run composer install they will end up with the exact same codebase as the production server and on Developer A’s machine.

Now the codebase exists in the same four locations, however the only code being tracked in the GIT repository is the two files used to define the Composer managed project. When an updated is made to the project, it is handled by running composer update drupal/core, which will update both composer.json and composer.lock. These files are then updated in the GIT repository, as they are the files specific to our project.

The difference between the traditional GIT method, and the above method using Composer, is that now Drupal core is considered to be an external library, and is not taking up space unnecessarily in our project's GIT repository.

Project Versions

Projects can, and pretty much always do, have versions. Drupal 8 uses semantic versioning, meaning that it goes through versions 8.1, 8.2, 8.3… and so on. At the time of writing the current version is 8.6.3. If a new security fix is released, it will be 8.6.4. In time, 8.7.0 will be released.  Composer allows us to work with different versions of libraries. This is a good thing, however it opens up the risk of developers on a project working with different versions of a library, which in turn opens up possibility of bugs. Composer fortunately is built to deal with versions, as we will look at next.

Tracking Project Versions

So how does Composer handle versions, allowing developers to ensure they are always using the same library versions? Welcome the composer.lock file. The composer.lock file essentially acts as a snapshot of the all the versions of all the libraries managed by composer.json. Again, I’ll refer back to the Composer managed site described above. When we first run composer require drupal/core in our project, a few things happen:

  1. The current (most recent) version of Drupal is downloaded to the system
  2. All libraries that Drupal depends on are also downloaded to the system
  3. composer.json is updated to show that Drupal is now a dependency of your project
  4. composer.lock is created/updated to reflect the current versions of all Composer managed libraries

So composer.json tracks which libraries are used, and composer.lock is a snapshot tracking which versions of those libraries are currently being used on the project. 

Synchronizing Project Versions

The problem with developers using different versions of libraries is that developers may write code that only works on the version of the library that they have, and other developers either don’t yet have, or maybe they are using an outdated version of the library and other developers have updated. Composer projects manage library versions using the commands composer install and composer update. These commands do different things, so next we'll look at the differences between them.

Composer Install and Composer Update

Imagine that Composer didn’t track versions. The following situation would happen (again, this is NOT how it actually works):

  1. Drupal 8.5.6 is released.
  2. Developer A creates a new project, and sets Drupal core as dependency in composer.json. Developer A has Drupal 8.5.6
  3. Drupal 8.6.0 is released
  4. Developer B clones the GIT project, and installs the codebase using composer install. Composer downloads Drupal core. Developer B has Drupal 8.6.0

The two developers are now working on different versions of Drupal. This is dangerous, as any code they write/add may not be compatible with each other's code. Fortunately Composer can track libraries. When a user runs composer install, the versions defined in composer.lock are installed. So when Developer B runs composer install, Drupal 8.5.6 is installed, even though Drupal 8.6.0 has been released, because 8.5.6 is listed as the version being used by the project in composer.json. As such, developers working on Composer managed projects should run composer install each time they pull updates from remote GIT repositories containing Composer managed projects.

Updating versions

As has been discussed, the composer.lock file tracks the versions of libraries currently used on the project. This is where the composer update command comes in. Let’s review how to manage version changes for a given library (this is how it actually works):

  1. Drupal 8.5.6 is released.
  2. Developer A creates a new project, and sets Drupal core as dependency. The composer.lock file records the version of Drupal core used by the project as 8.5.6.
  3. Drupal 8.6.0 is released
  4. Developer B clones the GIT project, and installs the codebase using composer install. The composer.lock file lists the version of Drupal core being used on the project as 8.5.6, so it downloads that version.
  5. Developer A sees that a new version of Drupal has been released. Developer A runs composer update drupal/core. Composer installs Drupal 8.6.0 to their system, and updates composer.lock to show the version of Drupal core in use as 8.6.0.
  6. Developer A commits this updated composer.lock to GIT, and pushes it to the remote repository. 
  7. Developer B pulls the GIT repository, and gets the updated composer.lock file. Developer B then runs composer install, and since the version of Drupal core in registered as being used is now 8.6.0, Composer updates the code to Drupal 8.6.0.

Now Developer A and Developer B both have the exact same versions of Drupal on their system. And still the only files managed by GIT at this point are composer.json and composer.lock.

Tying it all together

Developers should always run composer.install any time they see that a commit has made changes in the composer.lock file, to ensure that they are on the same codebase as all other developers. Developers should also always run composer.install anytime they switch GIT branches, such as between a production and a staging branch. The dependencies of these branches may be very different, and running composer install will update all dependencies to match the current composer.lock snapshot. The composer update command should only be used to update to new versions of libraries, and the composer.lock file should always be committed after running composer update. Finally, any time a developer adds a new dependency to the project, they need to commit both the composer.json file and the composer.lock file to GIT.


Before moving on to the next blog post in this series, you should understand the following:

  • What the composer.json file does
  • What the composer.lock file does
  • When to use composer install
  • When to use composer update
  • How GIT and Composer interact with each other

In the next post, coming soon, we'll look specifically at building and managing a Drupal project using composer.

Nov 13 2018
Nov 13

By adminadmin | November 13, 2018

By adminadmin | November 13, 2018

As a fully distributed company, weKnow supports remote working; a form of management and daily routine that may not be for everyone but, we prove all bumps on the road can be successfully sorted out and made our organization even surpass productivity metrics compared to the in-office style.

Having a career outside of a traditional office setting comes with unique challenges, getting to know them beforehand will allow you to be more productive and happier. Read further to learn some tips to help you and your team excel.

Remote work challenges plus how to overcome them

  • Health Habits: If no one is on your shoulder telling you when or not to take your breaks or it is easy to postpone lunch time or breaks, it could lead to the point where you might forget to eat. Tip: Enter lunch and breaks in your schedule each day, serving as an incentive to finish tasks before eating or just taking time walking around to stretch or clear your mind.
  • You might ditch exercising altogether: Many stay in a single position most day or forget to go outside enough. Tip: The human body is wired for movement, try adjusting your desk to also be able to type standing up some portion of the day or make a pause every twenty to forty-five minutes and just stand up to drink some water and come back to your chair to continue on.
  • Diet: You are as productive as what you eat or drink. Tip: Try having a healthy diet that keeps you awake, energized and hydrated naturally with a variety of vegetables, grains, protein and monitoring white sugar consumption. 
  • Home Adjustments: Working at home is an adjustment for everyone in the house, including kids, roommates or family. A great advice is to be consistent and reasonable, therefore trying to accomplish work and quality time simultaneously is not advised. Set up a morning routine that allows everyone to be self-sufficient and allows you to have a fluid workflow too.  
  • Isolation: the opposite problem. Here is where working from a cafe, coworking with friends or just signing up for an afternoon hobby activity is crucial. 
  • Overworking: a recent report from the United Nations International Labour Organization found that productiveness is the greatest metric achieved by remote employees but they are more vulnerable to working longer hours. Work smart instead, by setting appointments on your calendar, set up reminders to take breaks, be clear with your team on when you are leaving, create physical boundaries between you and your workspace (have a dedicated office space) and as tempting as it is: never work from bed, it will only slow you down.
  • Time management: Prioritize; first thing of each day: eat that frog! Work on the hardest task to get it out of the way, some people procrastinate by working on minor tasks first, stating “if I get the little issues first then I will have time for the more complicated one” and by the end of the day end up having little time and energy to dedicate the main issue. Basically, remote workers need to be time management experts by monitoring their energy peaks.
  • Connectivity: the greatest fear of all is when internet goes down. Well… this is the remote worker problem to solve, have a mobile hotspot device or a great cell phone plan, if possible a backup computer or even a tablet can be of help.

weKnow´s Secrets to Remote Work Success

Trust keeps building up when everyone stays on task while feeling equally represented and present. 

We promote a company culture that embraces remote work to talented nearshore developers, weKnow keeps information and conversations open to everyone, any actions or plans are documented keeping them available to asynchronous team members in order for everyone to have a clear understanding and feel supported, therefore; making everyone feel connected. 

Embracing the remote model has given us access to the best talent in the region, regardless of their location.

A way we switch the regular mindset is by thinking on delivering results rather than time… 
In-office jobs are based on a clock-in and clock-out dynamic, instead; we have a mindset of productiveness that laser focus employees, who will actively try to avoid procrastination because their goal is to deliver great products and services but also to have time for their own means. Jointly this is done by having clear processes, structures and agendas while promoting a healthy system of meetings, events, and habits that keep people communicating, providing the right tools to achieve it.

Communication is key. Every member logs into our instant messaging tool, and every project has its own dedicated "space" within this tool, which enables the team to interact in real time. This also allows our Technical Leadership to be easily reachable to assist with any blockers or technical guidance.

We are an organization that understands the best talent is seeking to apply its knowledge and experience where creativity is encouraged, as well as where meaningful work experiences are provided. Each aspect is meant to facilitate not only the internal process in our company but also swift communication with our partners and customers regardless of location. By sharing these set pieces of advice, our hope is to edify and promote how really useful working remotely can be. 

Each year many more are realizing an office facility is not absolutely necessary, on the 2015 Global Leadership Summit in London 34% replied to a survey stating that more than half their company’s full-time workforce would be working remotely by 2020, we can definitely see it is now a fact that disrupting the regular working environment provides more positive outcomes, definitely provides more convenient perks for all: organizations, clients and workforce personnel.

You can read Part 1 of: “weKnow’s remote working guide to success”, indulge with more benefits of remote working here.

Nov 13 2018
Nov 13

After months of hard work, the Drupal Governance Task Force made thirteen recommendations for how to evolve Drupal's governance.

If you want to go quickly, go alone. If you want to go far, go together.

Drupal exists because of its community. What started from humble beginnings has grown into one of the largest Open Source communities in the world. This is due to the collective effort of thousands of community members.

What distinguishes Drupal from other open source projects is both the size and diversity of our community, and the many ways in which thousands of contributors and organizations give back. It's a community I'm very proud to be a part of.

Without the Drupal community, the Drupal project wouldn't be where it is today and perhaps would even cease to exist. That is why we are always investing in our community and why we constantly evolve how we work with one another.

The last time we made significant changes to Drupal's governance was over five years ago when we launched a variety of working groups. Five years is a long time. The time had come to take a step back and to look at Drupal's governance with fresh eyes.

Throughout 2017, we did a lot of listening. We organized both in-person and virtual roundtables to gather feedback on how we can improve our community governance. This led me to invest a lot of time and effort in documenting Drupal's Values and Principles.

In 2018, we transitioned from listening to planning. Earlier this year, I chartered the Drupal Governance Task Force. The goal of the task force was to draft a set of recommendations for how to evolve and strengthen Drupal's governance based on all of the feedback we received. Last week, after months of work and community collaboration, the task force shared thirteen recommendations (PDF).

The proposal from the Drupal Governance Task Force Me reviewing the Drupal Governance proposal on a recent trip.

Before any of us jump to action, the Drupal Governance Task Force recommended a thirty-day, open commentary period to give community members time to read the proposal and to provide more feedback. After the thirty-day commentary period, I will work with the community, various stakeholders, and the Drupal Association to see how we can move these recommendations forward. During the thirty-day open commentary period, you can then get involved by collaborating and responding to each of the individual recommendations below:

I'm impressed by the thought and care that went into writing the recommendations, and I'm excited to help move them forward.

Some of the recommendations are not new and are ideas that either the Drupal Association, myself or others have been working on, but that none of us have been able to move forward without a significant amount of funding or collaboration.

I hope that 2019 will be a year of organizing and finding resources that allow us to take action and implement a number of the recommendations. I'm convinced we can make valuable progress.

I want to thank everyone who has participated in this process. This includes community members who shared information and insight, facilitated conversations around governance, were interviewed by the task force, and supported the task force's efforts. Special thanks to all the members of the task force who worked on this with great care and determination for six straight months: Adam Bergstein, Lyndsey Jackson, Ela Meier, Stella Power, Rachel Lawson, David Hernandez and Hussain Abbas.

November 13, 2018

2 min read time

Nov 13 2018
Nov 13

The Drupal 8 Editor Advanced Link Module allows you to specify additional attributes when creating links in your content. This makes it easy to add a CSS class, an ID, open the link in a new window, or even specify a rel="nofollow" tag. The module is very easy to use, but there is a small trick to getting it set up. Watch the video to see how it's done and start customizing your links in no time!

Nov 13 2018
Nov 13

Drupal Modules: The One Percent — Delete all (video tutorial)

[embedded content]

Episode 52

Here is where we bring awareness to Drupal modules running on less than 1% of reporting sites. Today we'll investigate Delete all, a module which facilitates deleting users and/or content en masse.

Nov 13 2018
Nov 13

Partnership combines comprehensive UI design, UX, and digital strategy, with web development proficiency, to produce a holistic experience for clients.

Chicago, Illinois — November 13, 2018 — In September 2018, Promet Source acquired DAHU Agency, a strategy-focused, user experience and design agency that enhances the services offered to its clients. By expanding their services in UX and UI, and bringing new offerings in-house for digital strategy, WordPress development, messaging, and branding –  Promet aims to better serve their clients evolving needs as marketing and web technologies continue to converge and the need to provide functional, dynamic websites increases.


In his vision for Promet to be a strong digital agency focused on creating great user experiences through meaningful web applications, Andy Kurcharski, President of Promet, seeks to accelerate growth and innovation by providing comprehensive digital services to his clients.  Andy has more than 20 years of technical leadership experience from startups to Fortune 50 firms with industry experience in banking, telecommunications, government, and association technology management. Andy’s e-commerce experience dates to 1998 with the implementation of highly scalable enterprise solutions.


“In today’s technology landscape, we are seeing that our clients and their customers expect more from their websites” Kurcharski expressed. “Our addition of a new team to our existing core of web developers will help us to proactively approach new websites with a holistic mindset combining our technology expertise with great design and function to ultimately increase client success online.”


DAHU Agency, based in Dallas, Texas, not only provides Promet with an office central to service their clients in the Southwest region, but also brings expertise in design and digital strategy to help optimize user experience within an organization’s website.


Mindy League, CEO and founder of DAHU Agency, offers a highly thoughtful and adaptive approach to constantly evolving technologies and user behaviors. Her experience in building solutions for clients such as HP, Emerson, IBM, and Home Depot, contribute to a depth of perspective into the challenges and opportunities faced by top global brands. Mindy will join Promet as the Director of User Experience and Design.


DAHU’s distinct approach to engaging with clients has been described as “radical empathy” and it is this philosophy and mindset that complements Promet’s dedication to delivering groundbreaking results to their clients. Whether examining the impact of corporate strategies on customers and the broader enterprise, or developing products, Promet aims to step into their clients’ businesses with a fervent dedication to excellent experiences and high-impact results.


Click here for full press release. 


Nov 13 2018
Nov 13
  • By: Shefali
  • Date: 13-11-2018

Digitalization has opened doors that nobody imagined even existed. Opportunities did not just come knocking, they exploded their way in. Digital evolution has taken the world of professional publishing by storm. However, this evolution brought along a whole new set of challenges that publishers are still trying to cope up with. Many publishers of physical magazines had to shut shop as most of their readers had now shifted to e-magazines but the ones who saw the silver lining in the cloud, went online! And now the whole world is their audience.

Consumers are altering their preferences of consuming content ever so often and publishers have to make sure they reach their audience through more than just one medium. Plain text is passé – content that’s not enriched with any media (images/videos/gifs) are blindly rejected.

As our attention-spans are evolving (for the worse), it has become crucial for content to be fresh, relevant, interactive and alluring. Which means, publishers need to work even faster and find efficient ways to exhibit their content for better consumer engagement. A good Content Management System will let publishers to create and publish fresh content fast and efficaciously. Thunder - a Drupal 8 distribution – aims to resolve the problems faced by professional publishers and make their lives much easier.

Feel the Thunder

Originally designed for and by Hubert Burda Media, Thunder was later released as an open-source software in 2016. This community-driven CMS is based on Drupal 8 and consists of varieties of hand-picked modules meant solely for the publishing sector. Because it is open-source and completely non-profit, a Thunder Coalition was shaped where publishers, industry partners, core team and developers share their code/modules/extensions. So everyone benefits from the coalition while giving back at the same time.

With Drupal 8 already providing a vast collection of modules that are valuable for professional publishers, it was the most obvious choice of CMS to backup Thunder. Custom modules developed for Thunder are also contributed back to the Drupal community which encourages a strong circle-of-life.

So why reinvent the wheel when you can just realign it? – Said Anthony J. D’Angelo. And with Thunder, you don’t even need to realign it most times.

Get launched – quick and easy

A Drupal distribution is a complete package that comprises of installation profiles, modules, themes, libraries that are industry-centric and easily downloadable. Thunder distribution is an all-in-one package focused on professional publishers that is stable, extremely scalable and customizable. It consists of all the bare-necessities needed for a publisher to get up and running in the market faster. Installation is easy and quick and allows you to set-up your website faster than you think. Because it is open-source and free, it cuts down development efforts helping you save on time and money!

The Out-of-the-box Experience

Unless you want a feature that is very specific and bespoke, you are good to go with the core features Thunder has to offer. Responsiveness comes out-of-the-box not only for site visitors but for the editors and administrators too. The Paragraph module lets you create, modify and play around with content. It lets you drag and drop content and multimedia making it really flexible and easy to create beautiful stories.

Scheduling your content to be published is as easy as 1-2-3! Modules like Media Entity and Entity Browser make media handling more effective. Content Lock comes handy especially when many editors work together. It lets an editor lock a node they are working on and notifies the other(s) that the content is being edited. When you want to instantly check if your content looks alright on different devices, use the Responsive Preview module. Embedding videos from Youtube or Vimeo just got easier with the Video Embed Field module.

The Extra-Ordinary Extras

The little extras are what makes the ordinary, extra-ordinary. Thunder provides some optional modules that promise to give professional publishers that extra boost. Have you seen those articles on your Facebook app that load up in a jiffy and makes you feel like you haven’t even left the app? Yes, I’m talking about Facebook Instant Articles. With this module, editors can easily add content from their Drupal website to Facebook and drastically reduce load time on mobile devices.

The Google AMP (Accelerated Mobile Pages) module lets you deliver content like text, images, videos, Instagram and Twitter cards in a flash. If you need to cover an event as it occurs, the LiveBlog feature is your best friend. When you want to add content like surveys, polls, quizzes or top 10 lists, the Riddle Interactive Content plugin is precious. The video player integration allows efficient distribution and flexible streaming of videos across various platforms.

The Drupal Advantage

Being a free and open-source content management framework, Drupal was the most obvious choice and Hubert Burda Media had to look no further. They had already had a great experience with Drupal and the release of Drupal 8 just made things better. Core Drupal features like Menu Management, User Management, Taxonomy, RSS feeds, system administration and page layout customization helped Thunder in building a strong foundation. A foundation that has been further enhanced with many more publisher-centric modules.

The Drupal community is constantly evolving, thereby adding more features, beefing up security and giving you all the support you need. The Thunder and Drupal Community are so closely-knit, you can’t tell the difference. Thunder makes it easy for organizations to share their customized modules with other industry-partners and the Drupal community so everyone benefits from their contribution.

Thunder has been built for publishers by publishers and just cannot be ignored if you are a professional publisher. It addresses all the pain-points of a publisher and helps accelerate the process of getting to market. Top publishers like Marie Claire, BUNTE, ELLE, Playboy, InStyle and many more trust Thunder. “Don’t give to get. Give to inspire others to give”. This seems to be the thought motivating the Thunder Coalition and the Drupal community to share the power of innovation. The advantages of being open-source are abundant but the most significant is the fact that you can give back to the community. It is like this amazing cycle of life that runs on trust and goodwill.

Nov 12 2018
Nov 12

The Paragraphs module in Drupal 8 allows us to break content creation into components.  This is helpful for applying styles, markup, and structured data, but can put a strain on content creators who are used to WYSIWYG editors that allow them to click buttons to add, edit, and style content.

The Drupal Paragraphs Edit module adds contextual links to paragraphs that give you the ability to  edit, delete and duplicate paragraphs from the front end, giving editors a quick, easy and visual way to manage their content components.


Install and enable the module as you normally would, it is a zero configuration module.  It works with Drupal core’s Contextual Links and/or Quick Links module. I did have to apply this patch to get the cloning/duplication functionality working though.


To use, visit a page and hover over your content area.  You will see an icon in the upper right corner of the Paragraphs component area.   

When you click the Edit option, you are taken to an admin screen where you can edit only that component.

Make your changes and click save to be taken back to the page.

In components that are nested, like the Bootstrap Paragraphs columns component, you will see one contextual link above the nested components.  If you click this, you will be taken to the edit screen where you can modify the parent, and the children.  That is the Columns component, and the 3 text components inside.


The term that is used most often for making a copy of something in Drupal is to “Clone” it.  This is a little more complicated because it is technically complicated, but once you get the hang of it, it will become second nature.

Hover over a contextual link and click Clone.

On the edit screen, you are presented with a new Clone To section.  In this section you can choose where to send this clone to, whether that be a Page or a Paragraph.  In this example, I want to duplicate this component to the same page.

  • Type: Content
  • Bundle: Page
  • Parent: (The page you are on)
  • Field: (The same field on that page.)

You can also make any edits you want before saving.  For example, you could change the background color. Click save, and your new component will appear at the bottom of the page, with the new background color.

There are a bunch of possibilities with this way to duplicate components.  To clone to another page, change the Parent. To clone to a nested paragraph component, change the Type to Paragraphs and configure the settings you need.


Deleting a component is as you’d expect.  Once you click delete, you are taken to a confirmation screen that asks you if you want to delete.


The Paragraphs Edit module is a simple and powerful tool that gets us a bit closer to inline editing and making our content creator’s lives easier and allows them to be more productive.  Give it a try on your next project and spread the word about this great little helper module!

Nov 12 2018
Nov 12

This blog has been re-posted and edited with permission from Dries Buytaert's blog. Please leave your comments on the original post.

Layout Builder, which will be in the next release of Drupal 8, is unique in that it can work with structured and unstructured content, and with templated and free-form pages.

Content authors want an easy-to-use page building experience; they want to create and design pages using drag-and-drop and WYSIWYG tools. For over a year the Drupal community has been working on a new Layout Builder, which is designed to bring this page building capability into Drupal core.

Drupal's upcoming Layout Builder is unique in offering a single, powerful visual design tool for the following three use cases:

  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. Customizations to templated layouts. The ability to override these layout templates on a case-by-case basis (e.g. the ability to override the layout of a standardized product page)
  3. Custom pages. The creation of custom, one-off landing pages not tied to a content type or structured content (e.g. a single "About us" page).

Let's look at all three use cases in more detail to explain why we think this is extremely useful!

Use case 1: Layouts for templated content

For large sites with significant amounts of content it is important that the same types of content have a similar appearance.

A commerce site selling hundreds of different gift baskets with flower arrangements should have a similar layout for all gift baskets. For customers, this provides a consistent experience when browsing the gift baskets, making them easier to compare. For content authors, the templated approach means they don't have to worry about the appearance and layout of each new gift basket they enter on the site. They can be sure that once they have entered the price, description, and uploaded an image of the item, it will look good to the end user and similar to all other gift baskets on the site.

The Drupal 8 Layout Builder showing a templated gift basket

Drupal 8's new Layout Builder allows a site creator to visually create a layout template that will be used for each item of the same content type (e.g. a "gift basket layout" for the "gift basket" content type). This is possible because the Layout Builder benefits from Drupal's powerful "structured content" capabilities.

Many of Drupal's competitors don't allow such a templated approach to be designed in the browser. Their browser-based page builders only allow you to create a design for an individual page. When you want to create a layout that applies to all pages of a specific content type, it is usually not possible without a developer.

Use case 2: Customizations to templated layouts

While having a uniform look for all products of a particular type has many advantages, sometimes you may want to display one or more products in a slightly (or dramatically) different way.

Perhaps a customer recorded a video of giving their loved one one of the gift baskets, and that video has recently gone viral (because somehow it involved a puppy). If you only want to update one of the gift baskets with a video, it may not make sense to add an optional "highlighted video" field to all gift baskets.

Drupal 8's Layout Builder offers the ability to customize templated layouts on a case per case basis. In the "viral, puppy, gift basket" video example, this would allow a content creator to rearrange the layout for just that one gift basket, and put the viral video directly below the product image. In addition, the Layout Builder would allow the site to revert the layout to match all other gift baskets once the world has moved on to the next puppy video.

The Drupal 8 Layout Builder showing a templated gift basket with a puppy video

Since most content management systems don't allow you to visually design a layout pattern for certain types of structured content, they of course can't allow for this type of customization.

Use case 3: Custom pages (with unstructured content)

Of course, not everything is templated, and content authors often need to create one-off pages like an "About us" page or the website's homepage.

In addition to visually designing layout templates for different types of content, Drupal 8's Layout Builder can also be used to create these dynamic one-off custom pages. A content author can start with a blank page, design a layout, and start adding blocks. These blocks can contain videos, maps, text, a hero image, or custom-built widgets (e.g. a Drupal View showing a list of the ten most popular gift baskets). Blocks can expose configuration options to the content author. For instance, a hero block with an image and text may offer a setting to align the text left, right, or center. These settings can be configured directly from a sidebar.

The Drupal 8 Layout Builder showing how to configure a block

In many other systems content authors are able to use drag-and-drop WYSIWYG tools to design these one-off pages. This type of tool is used in many projects and services such as Squarespace and the new Gutenberg Editor for WordPress (now available for Drupal, too!).

On large sites, the free-form page creation is almost certainly going to be a scalability, maintenance and governance challenge.

For smaller sites where there may not be many pages or content authors, these dynamic free-form page builders may work well, and the unrestricted creative freedom they provide might be very compelling. However, on larger sites, when you have hundreds of pages or dozens of content creators, a templated approach is going to be preferred.

When will Drupal's new Layout Builder be ready?

Drupal 8's Layout Builder is still a beta level experimental module, with 25 known open issues to be addressed prior to becoming stable. We're on track to complete this in time for Drupal 8.7's release in May 2019. If you are interested in increasing the likelihood of that, you can find out how to help on the Layout Initiative homepage.

An important note on accessibility

Accessibility is one of Drupal's core tenets, and building software that everyone can use is part of our core values and principles. A key part of bringing Layout Builder functionality to a "stable" state for production use will be ensuring that it passes our accessibility gate (Level AA conformance with WCAG and ATAG). This holds for both the authoring tool itself, as well as the markup that it generates. We take our commitment to accessibility seriously.

Impact on contributed modules and existing sites

Currently there a few methods in the Drupal module ecosystem for creating templated layouts and landing pages, including the Panels and Panelizer combination. We are currently working on a migration path for Panels/Panelizer to the Layout Builder.

The Paragraphs module currently can be used to solve several kinds of content authoring use-cases, including the creation of custom landing pages. It is still being determined how Paragraphs will work with the Layout Builder and/or if the Layout Builder will be used to control the layout of Paragraphs.


Drupal's upcoming Layout Builder is unique in that it supports multiple different use cases; from templated layouts that can be applied to dozens or hundreds of pieces of structured content, to designing custom one-off pages with unstructured content. The Layout Builder is even more powerful when used in conjunction with Drupal's other out-of-the-box features such as revisioning, content moderation, and translations, but that is a topic for a future blog post.

Special thanks to Ted Bowman (Acquia) for co-authoring this post. Also thanks to Wim Leers (Acquia), Angie Byron (Acquia), Alex Bronstein (Acquia), Jeff Beeman (Acquia) and Tim Plunkett (Acquia) for their feedback during the writing process.

Nov 12 2018
Nov 12

The Drupal 8 Editor File Upload Module is a great module for allowing your content editors to upload files directly in your website content. If you have ever needed to upload a file, and then include a link to that file, then the Editor File Upload module will be useful. Rather than having to upload the file manually using FTP or through another module, then having to go back to create a link in your content to that file, this module lets you do it all in one step. This saves you (or the other content editors on your site) a lot of time.

Nov 12 2018
Nov 12

Agiledrop is highlighting active Drupal community members through a series of interviews.

Adam Bergstein is the maintainer of, runs the Drupal Coffee Exchange and participates in the Governance Task Force that just released its community proposal. Learn how Adam, aka Nerdstein, feels about Drupal 8 core development.

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

I go by [the nick name] Nerdstein and have been a part of the Drupal community for quite some time. My main contributions are porting/supporting Drupal 8 modules, giving talks at events, maintaining, running the Drupal Coffee Exchange and recently participating in the Governance Task Force.

I live in the United States with my wife and two daughters, whom I adore. I currently serve as the VP of Engineering for Hook 42 but had previous roles at CivicActions, Acquia and Penn State University. I have a masters in Information Security, and love working with teams, mentoring/enablement, architecture, security, Agile and DevOps.

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

I started looking at Drupal during an evaluation of a project. This was right around the time that the business/agency ecosystem was just starting to take shape. While I was a bit intimidated by all of the new terminology and my lack of understanding open source communities, we selected Drupal. A vendor and I were impressed by how much progress was able to be made thanks to both core and contrib. 

While that piqued my interest, it still took me a long time to understand the community and to contribute. I attended Drupaldelphia back in 2014. I learned a lot, made several community connections, and really enjoyed it. At that point, I knew I wanted to participate and got the confidence to do so. 

I’ve always valued both, the people and the efforts of our vast community. We have some incredibly unique, fun and talented people that contribute in meaningful ways. I’m routinely impressed by how we face and solve hard problems. There is an incredible impact when we add up our collective efforts. I look at what we do each day and I’m proud to even have a small part in it.

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

It’s made a huge impact. It’s allowed me to grow professionally and provide for my family. All of this while maintaining a feeling that I’m serving clients and for a greater good through the community efforts.

I remember the moment I went to Boston to the interview with Acquia, which was my first Drupal-centric position. I had not travelled much professionally, rarely attended community events, and generally had a sense of imposter syndrome (I shouldn’t even be here, sort of thing). I was surprised at how relevant my Drupal experience was, and knew this was the start of something much larger. 

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

Basically a bunch of really cool people building technology together. People are shocked to learn how a significant number of (mostly) volunteers across the globe are able to come together to build software that is widely adopted. It seems a bit far-fetched at first, but I think people understand there is something larger and impactful happening in our community. I often compare this to proprietary efforts, like Microsoft, and the analogy is better understood. 

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

I actually have a blog post I’ve been drafting for several months on this very topic. I feel like we need to evolve both, the technology and our community. It is non-trivial to answer, and I need to state that this is my opinion. 

Technically speaking, I’d like to see Drupal core slow down on adding new features and focus on stability. The recent additions of Unami, media, layout builder and a stable migrate is incredibly impactful for Drupal as a product. I’d much prefer if we pause, reflect on what we’ve learned and polish what we have. Prioritizing and resolving already known open issues would stabilize Drupal and clean up a lot of the small things people find frustrating. The initiative around Composer-related improvements is a great example of something we learned and need to prioritize. And I sense there is a lot we can clean up in the core, like View Modes and the Block system, that could be incrementally improved to promote usability and consistency between features.

Community-wise, I would simply reference the proposal we have now released from the Governance Task Force. We proposed recommendations to several aspects of the community. A lot of work and deliberation went into the recommendations, and do a much better job communicating them than I ever could myself. 

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

I am very proud of the opportunity I had to serve on the Governance Task Force. I see so much potential to help the community from the work done by the task force. I was so overwhelmingly impressed by my peers on the task force. It was a dream team of some of the most thoughtful, smart and easy-to-work-with individuals I’ve ever collaborated with. 

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

I’ll take the time to highlight three things and would ask anyone who is interested in participating to reach out to me.

  1. will be going through some technical modernization that includes a new Drupal 8 front-end and the underlying tools that provision instances.
  2. We’re expanding the Drupal Coffee Exchange to better support international audiences. If you and others in your country enjoy coffee, please sign up! It’s a lot of fun for people.
  3. As part of the Governance Task Force, we publicly released a proposal and created issues for an open commentary period for the community. Get involved. You may have better ideas to contribute or be able to provide additional context to help move the efforts forward. 

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

I always rave about my two beautiful kids, my love for craft beer and my foodie tendencies. But lately, I have been trying to prioritize my physical health by running. Over the last two years, I have participated in over ten races and very recently was able to run a ten-mile run (~15K). For several years I focused on my education, jobs and family needs, while my physical health was not as good as it should have been. I have enjoyed running routinely and shocked by how much it helps relieves stress, gives me some fresh air and helps me remain balanced.


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