Oct 10 2019
Oct 10

For several years, Google has leveraged Drupal as the primary tool for developer portals built for its popular Apigee Edge API platform. With the introduction of the production-ready Drupal 8 distribution in May 2019, an announcement was made that support for the D7 platform would expire in 12 months. Concurrent with that announcement we know that D7 end-of-life will occur in November of 2021. This means that many Apigee portals will need to make the move to Drupal 8 or Apigee’s integrated portals in the near future.

In this article, we will walk through the steps to migrate Apigee portals from Drupal 7 to 8. The first decision you will need to make is whether to upgrade your existing custom build or move to the new Drupal 8 kickstart distribution. To help guide this decision, let’s first take a look at what the Apigee distribution for Drupal 8 has to offer and why you would want to leverage this platform.

Apigee Developer Portal Kickstart (D8)

The Apigee documentation site has excellent instructions on how to set up a developer portal using their Drupal 8 distribution. We will take a quick look at the features that come with the newest install profile.

Apigee homepage

Apigee Kickstart Homepage screenshot


The Apigee distribution once again has a nice out-of-box experience. This time around the base theme leverages a Bootstrap base theme that makes it easy to brand and customize your site.

The content types you see will be familiar: Article, Basic page, FAQ, Forums, and a new Landing page content type. Video, images, and audio are now more appropriately Media types in Drupal 8. The SmartDocs content type is gone in favor of a new API Doc type that supports the OpenAPI format (see below).

API doc

API doc screenshot

Adding content is now more flexible in Drupal 8 with the implementation of Paragraph types. Paragraphs allow you to add different components onto the page in any order you like. See the homepage example below.

Apigee paragraphs

Apigee Paragraphs screenshot from Homepage

In Drupal 8, Apigee also added some new block types. Blocks are still useful for components that need to live on more than one page.

Apigee block type

Apigee block types screenshot

The great thing about Apigee’s distribution is that it also includes sample content which makes getting set up a breeze. 

For organizations setting up a portal for the first time, leveraging this distribution is the way to go. For portals being upgraded from Drupal 7, this is more of a judgment call. If your portal has been heavily customized it might be better to move forward with a traditional Drupal 8 upgrade which we will cover under Custom Migrations. If, however, your organization’s portal previously had taken advantage of out-of-box functionality, then it makes sense to migrate content to Apigee’s D8 project which we will walk through next.

Migrating to Apigee Kickstart D8

The maintainers of the Apigee kickstart distribution have supplied a module to make migrations as painless as possible. The apigee_kickstart_migrate sub-module provides the Migrate module configuration that maps Drupal 7 content to their newer Drupal 8 counterparts. Again, this is most helpful for portals that did not heavily customize content in Drupal 7. Included in this sub-module are instructions on how to run the migrations and how to extend migrations with custom fields.

The following table shows how content is mapped from the Drupal 7 portal to Drupal 8.

Drupal 7 (Devportal)

Drupal 8 (Kickstart)

Content Types

Article (article)

Article (article)









Basic page (page)

Basic page (page)





FAQ (faq)

FAQ (faq)







Forum topic (forum)

Forum topic (forum)







Comment Types

Comment (comment)

Comment (comment)








Forums (forums)

Forum (forums)



Tags (tags)

Tags (tags)



Custom migrations

When would you go with a custom Drupal 8 upgrade over leveraging the Kickstart project? 

Where you run into trouble with distributions in Drupal is when you lean on so many customizations that the distribution gets in the way more than it saves time. In those instances, it’s better to stick with your own custom implementation.

The Mediacurrent team recently released the Migrate Pack module to make things easier for developers. This module has been tested against several sites and distributions including the Apigee Drupal 7 install profile.

Migrate pack module

The approach here would be to install Migrate Pack and the two additional Apigee modules in lieu of leveraging the distribution. The two key Apigee features you will need are the Apigee API Catalog and Apigee Edge modules. All of these projects should be installed using Composer.

If your theme was built custom in Drupal 7, then it will need to be manually ported to Drupal 8’s Twig-based theme engine. The other option is to instead borrow the Bootstrap-based theme included with Apigee’s distribution. It should be said that if the latter approach is taken, it might be better to migrate everything to the new Kickstarter rather than cherry picking the theme.

Next Steps

Apigee has very good support and documentation to get you started on moving to Drupal 8. For issues and bugs specific to the Drupal distribution, the Github project issue queue is the best place to look. The Migrate Pack module also has its own issue queue on Drupal.org should you run into problems.

Mediacurrent has logged over 100,000 hours in Drupal 8 development, many of which are Drupal 7 to 8 upgrades. We would love to work with you on your next project. 

Please visit our contact page to get in touch or hit me up on Twitter to talk more. We also have comments below to gather your feedback and questions.

Oct 10 2019
Oct 10

A note from our fabulous DrupalCon Minneapolis program committee:

With a December 4, 2019 deadline we are one-third of the way through the DrupalCon Minneapolis 2020 session submission period. The program committee is thrilled with what we’ve seen so far, with many compelling sessions to review—from accessibility to Xdebug. If you aren’t one of the early submitters, however, we still need your voice! And we are here to support you.

Oct 10 2019
Oct 10

Baddy, our CEO wrote about this in detail in this blogpost, where she did the math for us.

At the end of the calculation it turned out we spent 7.5% of our budget in 2018 on contribution and this makes us both proud and determined to continue doing more and better every year.

This year at DrupalCon Amsterdam we are sponsoring the Contribution Day on Thursday. This comes very natural to us. Most of our teammates have contributed to Drupal in one way or another, and especially because we built our business on an open source software, we feel that it’s important to give back to where it all comes from.

When preparing for DrupalCon Amsterdam we had big discussions about what to give the attendees. Last year we wanted to giveaway something useful, so we gave everyone a bamboo toothbrush that have hopefully biodegraded by now. But this year we got inspired by our friends at Dropsolid who are contributing 15 minutes to Drupal for every sign up to their newsletter at their booth during the Con.

We thought this was an awesome approach and sparked an idea for us to do something similar.

It’s often shyness and the fear of lack of enough knowledge that keep people away from starting to contribute, and almost everyone who has ever attended such an event had that feeling in the beginning.

Therefore we wanted  to make this first step a bit easier. How could we help people to start?

So 1xINTERNET is offering five types of free trainings that everyone can sign up for during the Con on our website:

  • How to become a code contributor to Drupal
  • How to become a non-code contributor to Drupal
  • Migration training
  • React basics training
  • Patternlab + component based integration

The training will take place online after the DrupalCon, but everyone who registers will be notified in advance.

But we are not going to stop here, because for every registration 1x will contribute 15 minutes to Drupal, and by signing up for a free training you are also encouraging us to do more contribution.

So we invite you to join us on this journey of contribution on Thursday 31st of October in Amsterdam - every bit matters.

See you in a couple of weeks!

contribute today

Oct 10 2019
Oct 10

Project management is a specialized job. It involves planning, coordinating, identifying deliverables, and eventually implementing the job according to client or company specifications. 

The IT manager’s job may involve managing the day-to-day IT needs of an organization, which could include managing computer networks, servers, and ensure the daily efficiency of information technology systems.  

However, an information technology project manager’s job is project-based. Each project is different, and the IT project manager must adapt based on the specific project. Each project has specific goals, and to achieve these goals, the IT project manager must bring together a team of system analysts, software developers and technology experts, and ensure the entire project team is focused towards achieving the project goals.

The manager may need to work with vendors of IT equipment to make sure they keep the project under budget. 

The IT project manager may also play a significant role in the development of training materials to assist employees in making the best use of technology in executing their duties. These materials will offer guidelines on the use of essential applications and how to log into systems.

Educational requirements for IT project managers

Technical experience in the field is helpful but not always required. There are several managers with excellent project management skills who have done well as IT project managers.

However, most IT project managers are former techies who were thrust into the job of IT project manager. Some companies expect candidates to have a minimum of a bachelor’s degree in Information Technology, with a major in either management of information systems, computer science, or information technology.

A combination of extensive technical experience in the field and a relevant bachelor’s degree are expectations of most hiring managers, but some employers will prefer an individual with a graduate degree, mainly a Master of Business Administration (MBA) specializing in technology. 

An ideal curriculum should include courses in IT strategy, leadership, professional development, managerial finance, corporate decision-making, research and analysis methodology, verbal and non-verbal communication, database management, and network management. Recent advancements in technology have made studying IT through distance learning more accessible.

The day-to-day activities of an IT project manager

The daily activities of an IT project manager vary from one project to another. The IT project manager must work with other senior staff in the organization to recruit new employees in his department. They must also coordinate with other teams to strategize, plan, and implement ICT projects in the organization.

The role of an IT project manager will be similar to those of other managers in an organization, but their scope will focus more on meeting the IT needs of the company. For example, they’ll be handling stuff like database management and programming. They will make sure those tasked with actualizing ICT projects in the organization do their work to perfection.

The IT project manager must have an in-depth understanding of the IT needs of the company and take a leadership role in assembling the team that will develop and implement the desired solutions. 

The primary responsibility of an IT project manager is to maintain the computer network in an organization. Every organization has IT needs. Though the structure and size of an organization will determine its IT requirement, each organization requires the following needs to be met:

  • Installation of network elements which may include laptops and desktop computers, smartphones, PDAs, GPS-based vehicle units, and other electronic devices used in accessing the network. They will grant access to users to access the organization's software and programs besides creating user accounts.
  • Communication with other departments to establish the needs of the organization. This role will include departments to choose hardware and assist coworkers in knowing how to use technology in their daily activities in the organization. For example, the IT project manager must work closely with the finance manager to determine the hardware and software to purchase for the organization.
  • Maintaining the network. The IT project manager will have the responsibility of upgrading and updating software besides troubleshooting. These actions are critical to protecting the integrity of the system and preventing slowdowns and failures that can be financially costly to the organization.
  • Securing the network. Network security is an expansive role that goes beyond installing antivirus software. Security measures that the IT project manager will implement will include determining the employees who’ll have access to confidential information on the organization, monitoring how employees use company internet and equipment, and protecting company information from outside threats such as hackers and other intruders.

The following are the typical duties and responsibilities of IT project managers:

  • Preserving the company assets through data back-ups, information controls, and procedure and data recovery. Using a timesheet app and other similar software to manage ICT projects in the organization.
  • Using IT to define, support, and deliver the company’s strategic plan.
  • Researching emerging technologies and relating them to the organization’s needs. They will use new technology to solve these needs.
  • Analyzing the needs of the company and providing a technical solution and timelines for implementation of the solutions.
  • Effective implementation and detailed timelines for project controls for the company’s software releases.
  • Measuring the effectiveness of the implemented IT solution via systems audits.
  • Participating in hardware and software assessment and maintaining contracts with suppliers.
  • Recommending IT strategies, procedures, and policies by looking at the company’s needs and evaluating the outcomes.
  • Loading the correct software such as the operating systems.
  • Troubleshooting and resolving user problems regarding the organization’s software in time.
  • Administering antivirus and email systems.
  • Participating in forecasting and the preparation of the project budget, analyzing variances, scheduling expenditures and implementing corrective actions to save the company from loses.
  • Enhancing quality service by enforcing the organization's standards.


Technology is an important part of our lives today. An IT project manager is expected to have skills in both IT and project management. 

Author Bio

Maria Espie Vidal writes for Timedoctor.com, a productivity app that helps talents manage their time and work efficiently any time, anywhere.

Oct 10 2019
Oct 10

Nuvole offers a training at DrupalCon Amsterdam: "Drupal 8 Migration as a process" - register until October 27.

There are a few significant changes that landed in Drupal 8.8 with respect to configuration management:

The first one concerns everybody using Drupal 8 and especially going forward Drupal 9. So far the config directory was set up with in settings.php with the variable $config_directories. This variable was an array for historical reasons when both the active configuration and the sync configuration were stored in files. But since Drupal 8.0.0 that was not the case any more, yet the array remained. Drupal only ever used one key, but developers saw an array and naturally assumed that there should be more than one key.

In the effort to avoid confusion and to streamline the configuration management we have now corrected this and added the config directory to the settings variable as $settings['config_sync_directory']. If for some reason someone still wants to have a workflow with multiple sync directories then that can still be achieved with a small amount of code since setting.php is a php file and the settings can be set conditionally. In my opinion though one sync directory is sufficient for the vast majority of workflows and this change will help to not confuse developers.

For me this is the biggest achievement for CMI 2. This allows contrib and custom modules to interact with the configuration synchronization in a very straight forward way. It is Config Filter in core but better, it is what I have been talking about at many Drupal events and finally it is in Drupal core, stable and available to everyone. There is already a patch for Config Filter 2.x to be the bridge between modules depending on Config Filter and the new core API. Config Filter 2.x will be api compatible with Config Filter 1.x but instead of decorating the sync storage it will apply the filter plugins to the new core API. In addition there is an issue for Config Distro on the way to model its API after the new event driven core API.

The latest major achievement which will be celebrated by many will be that it is finally possible to have devel installed on the development environment and not having to worry about it being deployed. This feature is already available in contrib since December 2017 with the contrib module Config Exclude. It uses Config Filter and is a relatively simple module with just one configuration option. This is why it was a good candidate to add to core as a proof that the new API works. The contrib module and the new core feature (yes you don't need to install a module it just works) both use the same setting: $settings['config_exclude_modules'] = ['devel', 'stage_file_proxy']; They work both alongside together so if you want to use this feature you don't have to wait for 8.8, you can use it on 8.6 and then when you upgrade to 8.8 you can simply uninstall Config Exclude and it just continues to work.

There has been some confusion about this feature and how it can be dangerous. The excluded modules, (ie the modules listed in the settings array) are removed from core.extension.yml and all the config depending on them is not exported. When importing the configuration and the module is installed already the configuration from the site is added to the configuration to import just before validating the configuration for the import. That means that devel will not be uninstalled when you import the configuation that doesn't have devel in it. But it also means that the configuration that you exported is no longer the configuration you had when you devloped your site and if you exclude modules that are central to the site such as required modules such as system or user or modules that change a lot of configuration such as language or field then the configuration can not be imported on the target site any more. Your site will not break, but you can not deploy the new configuration.

The CMI 2.0 Session at DrupalCon Amsterdam will contain more about all of the above and what else is planned to come.

Oct 09 2019
Oct 09

There has been a lot of thoughtful debate about the Drupal project's contribution credit algorithm in recent weeks, and some great ideas have been proposed. In the meantime, however, we've also been monitoring concerns about gaming of the current algorithm. Making changes to the contribution credit algorithm must be done with care, because it has a significant impact on how we recognize contributions and also on the ecosystem of Drupal service providers. Today the Drupal Association engineering team deployed a quick tune-up to the contribution credit algorithm.

This change strengthens the existing multiplier which weighs issue credits based on the usage of the project. Issues on more highly used projects will now be weighted even higher, and those on lower usage projects will be weighted lower.

We're calling this a tune-up with good reason. This is not a fundamental update of the credit system; this is a small change to help resolve some recent issues with the current version of the algorithm.

Developing a true 'Contribution Credit 2.0' system is a much larger project, but one we're hoping to undertake soon.

In the meantime:

  • If you have feedback on the small change we made today, you can find the issue here.
  • If you'd like to propose new ideas about the next generation of the system, please do so in this issue.

As the community thinks about the contribution credit system, we encourage you to remember that there will always be a human element to recognizing contribution - and our goal should be a system that enables better interaction between project contributors.

Oct 09 2019
Oct 09

Your browser does not support the audio element. TEN7-Podcast-Ep-072-Joe-Shindelar-a-Passion-for-Open-Source.mp3


Podcast guest Joe Shindelar of Osio Labs chats with Ivan about making interactive sculptures, snowboarding and his long history with open source software.


Joe Shindelar, Osio Labs  


  • First tech memories
  • Kids today! They don’t know how hard we had it with technology
  • How debugging software is akin to interactive sculpture
  • Working at Lullabot
  • Drupalize.Me
  • Lullabot Education becomes Osio Labs
  • Snowboarding instructor at Blizzard
  • Snowboarding vs. skiing
  • How not to pick an online handle



IVAN STEGIC: Hey Everyone! You’re listening to the TEN7 podcast, where we get together every fortnight, and sometimes more often to talk about technology, business and the humans in it. I am your host Ivan Stegic. My guest today is Joe Shindelar, a lead trainer and lead developer at Osio Labs, whose mission is to empower anyone to build websites using open source tools. Joe is passionate about open source technology and has a rich and interesting past, having started out at a small agency here in town called Triangle Park Creative, moved on to Lullabot, Drupalize.Me and now Osio. He’s also a snowboard instructor, teaching kids how to snowboard. I have lots of questions about pronunciations as well. So, good morning Joe. Welcome. It’s so nice to have you on the podcast. 

JOE SHINDELAR: Good morning. So, pronunciation. My last name is Shindelar, so close, but not quite. Then Osio, we say Osio (pronouncing "OH-SEE-OH") Labs. It’s technically a made-up word, so I don’t know that there’s necessarily a correct pronunciation, but we all say Osio Labs. It stands for Open Source Inside and Out.

IVAN: So, it’s actually an acronym. I love that that’s the name. I think the reason I said Osio (pronouncing "AH-SEE-OH") is because the I kind of looked like an l to me and I must’ve thought Oslo.

JOE: Sure.

IVAN: Osio. Okay. Open Source Inside and Out. I love it. And, I actually was going to say "Shind-e-lar," but I thought I heard someone say your name "Shindler," without the e, and I thought, Oh, that must be the way you say it.

JOE: There’s a very good chance that you have heard someone say it that way. It’s a common thing. For the most part, unless I need to, I don’t even bother correcting people, because I know that they are talking to me, and it’s fine.

IVAN: I feel the same way. What’s the etymology of the last name?

JOE: It’s Czech.

IVAN: Wow, cool. So, let’s see—you’re lead trainer, lead developer at Osio Labs, but I want to go back a little further to you being at Osio, and I kind of want to figure out where life started for you, and how you arrived where you are today. So, where did you grow up?

JOE: I grew up in Stillwater, Minnesota. So, not too far from where I live now in Minneapolis. Maybe you’re familiar with the area. I grew up just north of downtown Stillwater in a house, kind of right on the riverbanks, with a vacant lot across the street. Spent a lot of time running around by the St. Croix River and playing in the woods outside in Stillwater.

IVAN: Wow. That must’ve been absolutely beautiful there.

JOE: It was awesome. I loved growing up there. I also loved that when I was 14 or 15, we moved to the cities and there were things to do. So, I was like, I want to go to the movies or an arcade, or any of those things, and there just wasn’t a lot of that to do in Stillwater.

IVAN: Did you end up at Stillwater High School?

JOE: I went to Stillwater High School for half a year, and halfway through my first year there, we moved to Minneapolis.

IVAN: Was that in the nineties or a little sooner than that?

JOE: Yeah, in the nineties. We moved in 1998 or so.

IVAN: So, you’re kind of a kid of the nineties?

JOE: Yeah.

IVAN: What’s your first memory of technology and the internet?

JOE: I kind of vaguely remember the first computer that we had at my house. My Dad worked at the Science Museum in Minnesota at the time, and they had gotten a bunch of Mac computers for the exhibits department to experiment with. They didn’t really know what they were going to do with them, whatever, my Dad got to bring one home.

So, he would bring it to our house on the weekend and we’d set it up in the living room. And kind of like today, you might set up a TV or something in the living room, and the whole family gathers around to watch a movie. My Dad would set this Mac up and me and my sisters would all gather around and watch my Dad play games. Mostly he would play this game called Crystal Quest, which every once in a while I try to find a copy of so I can play it now. But, it’s basically like little blobs floating around on the screen, collecting crystals.

So, I remember that part of it, and then I remember my Mom really got into playing Tetris. I remember this rivalry between my Mom and our babysitter at the time. Greta would play Tetris and get the high score. Then my Mom would come home from work, and she’d sit down at the computer and immediately start playing Tetris in order to beat Greta’s high score. Then the next day Greta would show up to take care of us, and she’d be like, “All right, you guys can go outside and play.” And she’d sit down and start playing Tetris to try and beat the high score. This went on forever. And that kind of stuck with me in some ways. I played a lot of Tetris as a kid, and I still do occasionally now.

IVAN: Did you ever try to beat your Mom’s score?

JOE: I’m sure I tried to. I don’t really recall how that all played out. I imagine today I would probably win, because I don’t think she plays Tetris much anymore.

IVAN: [laughing] You could beat your Mom now. Okay. Nice, Joe. Mom, if you’re listening, I think that’s a challenge. That’s great. And so, that was the family computer. I guess that wasn’t connected to the internet in any way right?

JOE: No, it wasn’t. My first memories of being connected to the internet are later. We had another Mac at the house, and I remember getting connected to AOL Instant Messenger. Specifically my cousins had come to visit, and they had AOL, and I think we were able to dial into their account while they were at my house. And I was like, This is awesome. So then when they left, we had one of those free month trial discs, and we signed up.

I remember spending a lot of time going into the AOL chatrooms and chatting with my cousins. That’s my earliest memory of doing things on the internet, and eventually that led to looking at websites and such. But mostly I just remember going into random chatrooms and saying hi and trying to figure out who else was in the chatroom with you. In retrospect I’m like, That is awkward and terrifying. Like, I wouldn’t do that now.

IVAN: I feel the same way. Did you have one of those external US Robotics modems?

JOE: Yeah, we totally did.

IVAN: And you could tell when it was connecting. I would always have trouble getting it to connect. Boy, memories, huh? Geez. That was awesome. But you learn so much about how the internet works having those issues, because you’d really have to try and figure out what the heck’s going on.

JOE: Totally. In comparison to now, where it’s like, you connect to Wi-Fi and maybe it goes down every once in a while, but rarely. It’s just sort of like every device you have is connected all of the time and there’s none of this, I have to turn on the internet and then wait for it to connect and hope that my sister doesn’t try and make a phone call at the same time. It’s amazing how much this stuff has changed.

IVAN: It is. It’s really amazing. I remember my parents getting really mad at how much time I was spending on the internet, but mostly because local calls in South Africa were not free. So, internet service you’d have to pay for, but to dial in you’d have to pay for the time that you were on the landline as well. And, the first month’s bill, like anyone with the original iPhone knows, right? You use all that data that you don’t know that you’re using. [laughing]

JOE: [laughing] Right.

IVAN: Yeah. That was bad.

JOE: How could I possibly use more than 1 gigabyte of data? Then you’re like, Oh, apparently I can do that in a day.

IVAN: [laughing] That’s awesome. So, Stillwater High and then what happened after that? What did you do for education after that?

JOE: When we moved to Minneapolis, I went to South High School for about half a year. A kind of a funny story there, where, we moved from Stillwater to Minneapolis in the middle of the school year, and Stillwater High School operates their school year on quarters, and South High School operates on trimesters. So, we moved at the end of the quarter from Stillwater, but I couldn’t get into South High until the beginning of the second trimester. So, there was this almost one-month period of time where, as like a 16-year-old boy, I didn’t have to go to school in the middle of my school year.

Which was amazing, except for in order to make this all work, my Mom had orchestrated this deal with South High School that was like, “All right, we’ll give him credit for the full year even though he’s missing a month. But in order to do that, he needs to spend a bunch of time doing some research and writing a report while he’s on this break.” So, I opted to write a report about U-boats, and so I did all this research on German U-boats and wrote a report, made paintings of U-boats and collected all of this and put it together. Gave it to my Mom so she could hand it into the school, started school, went on from there.

Like 10 years later, I learned that my Mom made this whole thing up. There was no requirement to write the report. [laughing] My Mom was like, “Well I can’t have Joe and his sister just sitting around doing nothing for three weeks, so I guess I’ll make them write reports.” And, she dug it out of some box in the basement and was totally like, “Oh, yeah. That’s right. This thing.” I’m like, “Are you kidding me?” [laughing]

IVAN: [laughing] That’s amazing. So, you ended up studying art in high school?

JOE: I did. There’s a school here in Minnesota that’s called the Perpich Center for Arts Education.

IVAN: Oh, I know that school. That’s a good school.

JOE: Yeah. So, I went to Perpich for two years. I was in the media program there, studying media arts. It ended up being really fascinating for me, because about the time that I was there, like 1999/2000, the program was transitioning from a lot of analog media stuff. So, photos in a dark room, creating video using VHS and two editing decks, and transitioning to do a lot more. The school had just gotten its first digital cameras, and first digital video recorders, and there was an iMac that had the very first version of Final Cut Pro on it. So, it was like, my first year there I did a ton of stuff in the dark room, and the second year there, all of a sudden, we were using Photoshop and computers, and I was like, This is cool. This is what I want to do.

IVAN: And so, you knew you wanted to be involved in computers right away in high school. So, what was the next step? I know that you went and spent some time in Rhode Island.

JOE: When I graduated high school, my initial plan was to move to New York City and become an ActionScript developer and make millions of dollars writing Flash applications.

IVAN: Of course. I mean, yeah, Flash, absolutely. [laughing]

JOE: [laughing] But, that didn’t pan out. I never actually left for New York, and I decided I should go to college instead. Then I bounced around a bunch. I went to a handful of different schools because I wasn’t entirely sure what I wanted to do. I started out as a computer science major at University of Wisconsin Stout. So, I did that for a semester, and then decided This is way too hard and I’m not good at it, so then I switched to math and I was going to major in math, then I decided I didn’t like that either.

So after a semester I dropped out, and didn’t go to school at all for about a year. I followed a girl out to Rhode Island, and I ended up going to the community college out there and taking a bunch of art classes, and, kind of falling in love with art again after having not done it for a few years. Then I moved back to Minneapolis and finally about eight years later, graduated from the University of Minnesota with a degree in Bachelor of Fine Art with a focus in sculpture.

IVAN: Wow. A BFA with a focus in sculpture.

JOE: Yep. [laughing]

IVAN: That’s insane. And it’s so interesting, all the people we’ve had on the podcast, all of the different paths that lead to Drupal.

JOE: Yeah, totally.

IVAN: And, it seems like a lot of them go through the fine arts degree of some sort. You know, journalism. So, sculpture eventually turns into Drupal, or was Drupal happening at the same time you were at the University? Because I know there’s all these overlaps as well.

JOE: I was starting to do Drupal at the same time I was going to school. I had a job working for a company here in town, Triangle Park Creative. I was working there pretty much full time while also going to school. And so, I was learning to build websites on the job at Triangle Park, and at school I was studying sculpture and in a lot of ways, trying to figure out ways to incorporate technology into the sculptures that I was creating. So, microprocessors and sensors and that kind of stuff.

IVAN: That was hard so long ago, right? Things weren’t small.

JOE: Oh my gosh. I was talking to somebody about this the other day, where, not that it’s by any means easy to do this stuff today, but, there is a plethora of different microchip boards you can buy, like Arduino and Raspberry Pi and all of these kits that you can get with sensors, and assemble them together, relatively easy in comparison to even like 10 years ago. You could do all that stuff back then, but you had to do a lot more of the behind-the-scenes work to flash your program onto the memory of the board and get it to run and solder things together.

All of these things that, as an art student, I was like, I have no idea how to do this, but what I really want is for this light to turn on when somebody walks past my sculpture. And, so, I spent a lot of time tinkering with hardware stuff like that in order to incorporate it into the art that I was making. I had this idea that I wanted to make sculptures that would evolve by virtue of the fact that someone was viewing or interacting with the piece. So, you go and see the sculpture and instead of it just being a piece of concrete, or something that never changed…

IVAN: Like a sculpture that’s static of David, right?

JOE: That the fact that you had been there to visit that sculpture would reflect in the art for the next person that saw it. That was the dream. I would say 80% of the projects that I worked on were like duct tape and bubble gum and the fact that it held together long enough for a critique was always the highlight of the sculpture. I was like, Wow, it didn’t fall apart. [laughing]

But, I had a lot of fun doing that. I learned a ton about computers and programming and problem solving and debugging. Just things I think about a lot today, even working on writing PHP for a Drupal module, and you’re trying to figure out why a particular aspect of it isn’t working. That the process that you go through to debug it isn’t all that different than trying to figure out why your mechanical switch doesn’t actuate when somebody walks by. And, initially you’re like, Those are two totally different concepts, Joe. It’s like, Yeah, but the debugging part of it is roughly the same, trying to isolate what the problem is, and figure out what’s causing it, and see if you could replicate the problem, and so on.

IVAN: Are you still making art these days?

JOE: Not really. Not in any kind of professional capacity. I have two little kids. I do a lot of coloring and painting with them, but I wouldn’t call it art, per se.

IVAN: Yeah, well I kind of miss doing that as well. It’s definitely something that rejuvenates and, kind of, re-energizes oneself when you do it.

JOE: So, then I was also working at Triangle Park, building websites. And initially the goal there was I needed a way to pay for school. I had a job and more and more people kept asking us to build them websites, and I kept getting paid to do it. So, I thought, Well, I’ll keep doing this until I grow up and get a real job. [laughing] And here I am, 15 plus years later, and I still make websites.

IVAN: Still waiting to grow up. [laughing]

JOE: Right. I found Drupal through all that initially. I think what a lot of us have done, and have been doing this for a long time, you went through the process of trying to craft your own website, and maybe your own content management system, and in my case, learning PHP along the way. I would go and look at the code and things like WordPress and Drupal. Mostly I would copy and paste wholesale things from Drupal into my code, and then eventually I was like, This is kind of dumb. I should probably just pick one of these and use it. And I did. For various reasons it meshed well with me. It solved the problems that I had at the time and it continued to evolve, and here I am.

IVAN: It continues to pay the bills.

JOE: Like, 15 years later, instead of being a starving artist, I build websites with Drupal and teach other people how to do it.

IVAN: It’s a good story. So, eventually you left Triangle Park and started with Lullabot, a completely distributed company.

JOE: Yeah.

IVAN: What was that like? Why the change?

JOE: I was looking for an opportunity to work with other people who were doing Drupal. At Triangle Park at the time, there was just a couple of us, and we were doing Drupal, but mostly we were doing it in kind of isolation within Triangle Park, and I was interested in figuring out ways to participate more in the larger community. I was also looking to have an opportunity to work with people who were better at this than I was.

At Triangle Park, I think we all kind of grew up and evolved together. It was an awesome opportunity to learn, but you were never working with someone who had been doing this for a few years longer than you had. I was looking for some of that. Then the opportunity at Lullabot—I wasn’t specifically leaving Triangle Park to go to Lullabot—it was more one of those scenarios where I was in a fortunate position to be able to say If I don’t quit here, I’m never going to put the work into finding what’s next.

So, I left Triangle Park and sort of had some ideas of what I wanted to do next, but nothing concrete lined up. And the opportunity to do some contract work as a trainer for Lullabot came up, so, I jumped on that. I applied for the position and didn’t hear anything back for three months, and I was like, Well, I guess that didn’t go anywhere. My recollection is that I didn’t even get an email in response to the fact that I had applied. Like, “Hey, thanks for your application.” It was just like radio silence. Then one Thursday afternoon I got an email and they were like, “Hey are you still interested in helping do some training? Can you be in New York tomorrow?” [laughing] I was like, “Yes, I can. Sure.”

IVAN: Wow.

JOE: Again, I was in a fortunate position to be able to make that work, and it did. I started doing a bunch of contract work for them, then more and more over the course of about half a year, and eventually that got to the point where I just said, “Look, I’m working for you two and a half, three weeks out of the month, and it’s making it hard for me to find any other work. I need to either come on full time or I need to go do something else.” So, they brought me on full time. Then, I was working from home full time which, I know you know this is, it’s quite an adventure and a transition to make.

IVAN: It is. It’s been the best adventure and transition for us over the last two years, when we started doing it two years ago. So many good things about doing it. For me it's just the ability to see my kids and my family as much as I can. It gets a little long toothed sometimes in the summer when the teenagers are all around, but otherwise it’s just amazing. So, yeah, it’s really great. I didn’t realize that you jumped into work with Lullabot directly as a trainer. I just thought that that kind of evolved out of your being a developer at Lullabot, but actually not.

JOE: It’s the other way around.

IVAN: The other way around. Wow.

JOE: I started out doing training. So, back in the day, Lullabot used to do a lot of in-person training workshops. We would do trainings at DrupalCon and Camps, but we had also organized and hosted events in various different cities. We would say, “Hey, we’re going to be in Portland this week, for these two days, and we’re going to teach theming. Then we’re going to be in Boston for these couple of days and we’re going to teach advanced module development, and if you want to attend, here’s the cost. Come to the workshop.”

In addition to that, we were also doing those same workshops, privately for clients. At the time that I came on that was really taking off as a business opportunity for Lullabot, and they needed to have additional help to do the training, because they just had so much of it going on at the time. I started doing that with them, and for me, that evolved into—I said earlier that eventually I kind of had to play my card and say, “Look, I need a full-time gig, or I need to move on,” and they brought me on full time. And then it was like, “Well, now what do you do?” The answer was I kept doing a lot of training, and then when I wasn’t working on the training stuff, I mostly worked on internal projects. One of those was what eventually evolved to become the Druaplize.Me website. In addition to doing the in-person training, Lullabot produced a bunch of DVDs for training.

IVAN: I heard about this.

JOE: Yeah.

IVAN: Yes, I’ve heard this story from someone, who shall remain nameless at this time. [laughing]

JOE: [laughing] We made a bunch of DVDs, and they were awesome and then everyone was like, “Why would we want DVDs when you could just have your training on the internet?”

IVAN: Right.

JOE: I think they did fairly well for a year, and then I was like YouTube came around and people were like, “You could put video on the internet. Why would I buy a DVD?” So, Drupalize.Me kind of started out as a, “Well, let’s take the content of the DVDs and put it online, and charge people that way.” Which is pretty much what we did. Very early iterations of Drupalize.Me, when you would go to watch a video of our training, you would sit down and it would be like, “Here’s a four-and-a-half-hour video that you could watch on how to build a module.” [laughing] We literally ripped the DVDs and put them on the internet.

IVAN: Were there any FBI warnings on those DVDs? [laughing]

JOE: [laughing] I don’t recall. There are still a bunch of them in existence. We could probably find out. When you make DVDs to sell, you have to get a certain quantity of them printed in order for it to be economic, and so we printed out thousands of these DVDs and then sold hundreds, and there are now still hundreds of them in boxes.

IVAN: Like in Jeff’s basement, or in Matt’s basement somewhere.

JOE: I don’t actually know if this is true anymore, but for a while, they were in storage. We had worked with this drop ship-type company where they store the DVDs for you, and you send them a message saying "Ship these three to Ivan." The contract that we had with them sort of stipulated that if we wanted to cancel our contract and get our remaining inventory back from them, it was going to be way more expensive than it was to just leave the DVDs there, and keep paying the monthly fee. So, for a long period of time those DVDs just remained in storage, and I guess you could call them, and they would ship one, but I’m not sure if they’re still there or not.

IVAN: I will ask Jeff the next time I talk to him. [laughing] What’s going on with that? So, Drupalize.Me then became quite successful, and then at some point it split off and it was no longer a part of Lullabot. And it was kind of run by, I think I remember, was it called Lullabot Education?

JOE: Yeah, that’s correct. So, within Lullabot we had kind of the education department, and we were responsible for Drupalize.Me and for all of the client training and in-person workshops and stuff that Lullabot was doing. Over time that business changed a bit. We were doing less and less in-person training and more and more working on Druaplize.me.

For the most part, other than myself, who was kind of full-time in that department, people at Lullabot would work on Drupalize.Me in between client projects. Which, of course, is like also synonymous with never. [laughing] But the idea was when you’re not working on client projects, you’ll have time to help work on Drupalize.Me. It meant that Drupalize.Me, while it was showing signs of being able to be really successful, was struggling a bit because it just couldn’t get the attention that it needed to get over that next hurdle.

IVAN: When it’s a services company running a product within your services business. Right?

JOE: Exactly. There’s this idea that your service is kind of ebb and flow and in between you’ll be able to work on a product, but a product needs constant attention. You can’t just work on it now and then. Especially something like Drupalize.Me where ultimately what you’re paying for is ongoing content. Like, yes, there’s a technical aspect of like, we have a website and you can watch the videos online, and maybe that part doesn’t change a lot, but we do have to continue to produce new content.

IVAN: Drupal 8 comes out, Drupal 9 comes out.

JOE: I’ve made videos about how to create a view in Drupal for Drupal 6 and Drupal 7 and Drupal 8. Oh my God, I've got this down. So, ultimately the decision was in order for Drupalize.Me to really be successful you need to push it out of the nest and teach it how to fly. Let it learn on its own. So, we did. The company was split off from Lullabot into—what was at the time, Lullabot Education—and it was split off on paper, so technically for legal reasons, we were separate companies, but we still had the same ownership.

We were still all in the same Slack channel. We still all went on the same company retreat. It was just from an accounting perspective and taxes and that kinds of stuff, we were a separate company. That was years ago, now. And it has continued to evolve since. The ownership has changed a little bit, there’s overlap between the two, but it’s not identical anymore. Lullabot Education, which is now Osio Labs, has grown. We still attend the same retreat—sometimes, but not always. In some ways there’s some logistic stuff about it that makes that really easy for us to do.

And we just recently started our own Slack team, so we’re no longer sharing the same Slack room with Lullabot. We now have our own. I guess over time what’s happened is, as Osio Labs has grown and we’ve hired new people, there are now a number of people who don’t have that shared history, and trying to figure out how to balance that has been an ongoing thing. Those of us who were part of Lullabot at one time, it’s often difficult to be like, “Ah, I miss that,” or “I still am part of that. These are still my friends.” But then the people that never there don’t have that history, and it just makes no sense. It’s like, Lullabot who? Who are we talking about? What’s going on here? It’s like trying to figure that all out. 

IVAN: And, it’s also may be influenced by the evolution of the things you’re teaching as well, because you’ve gone from teaching purely Drupal, and spinning that off as another company, and Osio Labs, now, you guys are teaching Gatsby and Node as well as Drupal, and this is kind of more of a generalized company that isn’t just going to take on Drupal.

JOE: Yeah, I think that’s right. I think it’s like part of the change of name, and really, it’s that going from Lullabot Education to Osio Labs is like, we’ve done a bunch of paperwork and we’ve changed our name. Everything else is still the same. It’s an indication of our evolution and growing up as a company. And, wanting to branch out into things other than Drupal and establish a name for the company.

We’re looking at things in other communities like Gatsby or Node or other open source areas that we might want to get into. We don’t necessarily need that association with the Lullabot name, where Drupalize.Me has been, and continues to be, super beneficial. Then we wanted a name that was a bit more reflective of the fact that we’re doing more than just Drupal at this point. Barely. But we’re just starting to do more than Drupal, but the long-term plan is to take all of the lessons that we’ve learned, teaching people how to do things with Drupal and the success that we’ve had with Drupalize.Me, and being members of the Drupal community and finding other open source communities that, as a business, we can participate in, and provide training, provide support for the community, help the community grow. All of those things.

IVAN: I love that you’re expanding and applying the things that you’ve learned in Drupal to the rest of the world and the rest of the community. I think that’s admirable, and I think you have a ton of value that you can bring to the open source community. I just wish you the very best of luck in doing that, and I’m excited to see that grow.

JOE: Yeah. It’s going to be a lot of fun. I think.

IVAN: I think so. And I love that it’s in the name, as well.

JOE: Yes.

IVAN: Just awesome. So, you’ve been teaching for a long time. I think you alluded to the fact that it’s been probably about 15 years or so, and it’s not just technology is it? You’re kind of a beast on the ski slopes, aren’t you?

JOE: [laughing] Yeah, so I teach snowboarding as well, and I’ve actually been doing that for quite a bit longer than I’ve been teaching people Drupal. And I continue to do that today, but not nearly as much. Teaching snowboarding does not pay the bills for me, [laughing] but I still enjoy doing it.

IVAN: When did you start that? Was that around the same time as you got to the city, moving away from Stillwater?

JOE: I was in college.

IVAN: Oh, so you didn’t do one of those Saturday camps where you get up at 7:00 a.m. and spend the day out on the ski slopes and Mom and Dad pick you up later?

JOE: I did not participate in one, but I teach for one now. But I was never a part of it. I teach for a ski school here in Minnesota called Blizzard. One of my friends had been in Blizzard when she was younger and we were both in college. She and her family had remained connected with the people that owned Blizzard at the time. Snowboarding, as a thing that students were interested in, was really taking off and they were basically desperate for snowboarding instructors and they were like, “Joe, Katie, you know how to snowboard right?” We’re like, “Yeah.” They were like, “You want to be teachers?” We were like, “No, I have no idea how to be a teacher.” They were like, “That’s fine. Mostly we just need warm bodies on the hills.”

IVAN: Usually the case. [laughing]

JOE: [laughing] It’s really more like we need someone to make sure this group of kids returns safely at the end of the day. And if they happen to learn something along the way, I guess that’s a nice side effect.

So, I was like, “Sure, I can do that.” And I got into teaching through that, and that kind of evolved over time too. After a couple of years as a pseudo-instructor, I found some training that I could take to help learn be a better snowboarding instructor, and then got certified through a program called The American Association of Snowboard Instructors

Over time I continued to learn how to be a better instructor through that. I think part of what happened there is I had spent a number of years teaching snowboarding, getting certified, getting to a point where I was doing training for other people to become certified as snowboard instructors, and this opportunity—I mentioned earlier Lullabot was looking to hire trainers and I applied for the job—and one of the questions is, “Do you have any previous teaching experience?” I was like, “Yeah, I do actually. Not formal in a school sense, but I had all of this background from Blizzard teaching and helping with certification programs, and that kind of stuff.”

In retrospect, I think that was a big part of why they eventually called me back. Like we just said, everyone in the Drupal community at the time, it was like, “Do you know how to teach people?” I was like, “No.” They’re like, “Oh, that’s fine. We just need warm bodies to stand up here and flip through the slide deck.” [laughing]

IVAN: [laughing] Right.

JOE: I was like, “I could do that.” It’s awesome.

IVAN: My son loves Blizzard. He’s been skiing for about eight years. He’s been skiing since he was three or four years old, and this last winter was the first time he did the Blizzard program. He’ll be thirteen pretty soon. He loved it. He complains about getting up early on a Saturday morning. You know, “Oh, I have to get up at 6:30 and be there at 7:00.” But he comes back with the best experience and people, new people he’s met. And, you know, they have a rating system on which ski slopes have the best refreshments and fries.

JOE: So, how it works is Blizzard is a traveling ski school. So, we go to different ski areas around the Twin Cities Metro area instead of just going to the same one every time. And you show up at one of these places, like you show up at Trollhaugen and as a snowboarder I’m like, This is awesome. We’re at a new place. I can’t wait to get out and go snowboarding. And then, as a teenage kid, they’re all like, “Hmm, what videogames do they have at Trollhaugen?” [laughing]

IVAN: [laughing] Yeah, the perspective is a little different.

JOE: One of the things I enjoy most about being a snowboard instructor is the opportunity to take my passion for snowboarding and display that in a way that someone else gets to see it and sort of be like, “Wow, he’s really excited about this and he’s having a lot of fun. I want to do that too.” And, especially working with kids, you have this opportunity to like, yes you can teach them the mechanics of how to make a toeside turn, but also you can have a lot of fun. So, then the next week, when they’re getting ready to come back, they’re excited to come back, and they’re excited to go snowboarding again. And hopefully they grow up to be adults that are excited to go snowboarding.

IVAN: I appreciate that work that you do as well. I know Cooper evolved from not wanting to get up and try and go to Blizzard to like, “Yeah, don’t mess with my Saturdays in the winter because I have Blizzard to go to.” Yeah, it’s just been great to see him do that. Now, I’m going to ask you maybe a little bit of a controversial question. So, this is a heads up.

JOE: Okay.

IVAN: Have you biased your kids one way or another, ski versus snowboard?

JOE: Yes, I’m sure I have. [laughing] I have not intentionally told my children, “You will snowboard, and you will never ski.” But at the same time there are no skis in my house. My kids are really young. I have a three-year-old and a one-year-old. So, neither of them are skiing or snowboarding yet. We did get Wesley a snowboard last winter, no bindings, just a plastic thing with a rope on the front, and I’ll pull him up and down the alley, and he thinks that’s pretty fun.

We’ve been talking about maybe starting them on skis, in part because, generally kids can start skiing a lot younger than they can snowboarding. Snowboarding just requires a different amount of muscle. You need more physical strength to control a snowboard, initially, than you do with skis, and to be able to do things like stop. Whereas for younger kids, it is relatively easier to put on a pair of skis and make a wedge, pizza, French fries, pizza, French fries.

IVAN: I started skiing in my late thirties. I’m very familiar with pizza. [laughing]

JOE: [laughing] Right. That’s about the extent of my skiing skills too. So, if I was to teach my kids how to ski, it would mostly be, “Here’s some skis, here’s a hill, I’ll see you at the bottom.” [laughing]

IVAN: [laughing] I think that’s awesome.

JOE: I will absolutely teach them skiing or snowboarding. As far as I’m concerned, they should choose one that’s exciting to them. I would rather them be really excited about a winter sport, than me dictating what it is. Ultimately, I just want us to have things that we can do that get us outside in a Minnesota winter, and enjoy being outside instead of cooped up inside all of the time.

IVAN: Totally agree. My kids were in the Buck Hill program when they were three and four. My wife would take them out, and here’s this South African immigrant [Ivan] who has never skied ever, sitting in the chalet watching them. I thought to myself, What am I doing? I got to get out there as well. It’s never too late to learn anything. They’re going to be much better than I am, and still are, but so what, we’re out there. That’s what counts. That’s awesome. Okay. One final question. I want to talk about your handle. I’ve always thought it was the greatest handle that someone has on Twitter. So, it’s eojthebrave. What’s the etymology of that?

JOE: Eojthebrave, eoj is "Joe" spelled backwards, and then "the brave," with all the spaces removed. And it’s a funny thing, because I now have this online moniker that everyone knows me as that was never intended to be something that people could pronounce. It was supposed to be just a bunch of characters that you saw on the screen. I never thought about would someone be able to say my name. But now I attend all of these Drupal events and open source community events, and people are like, “You’re eojthebrave,” and I’m like “I guess you could say it that way.” It’s kind of like, is it OH-sio or AH-sio? I don’t know.

IVAN: It doesn’t matter. It’s important that we’re talking.

JOE: So, years ago I was really into playing Warcraft 2, and you could play online, and I needed to have a nickname that would inspire fear in the hearts of my enemies, [laughing] especially in a medieval war game. What better than something like "Joe the Brave." And I was like, online you’re supposed to be anonymous. People shouldn’t know that my name is Joe. So, if I just spell it backwards, no one will ever know.

IVAN: Clever.

JOE: And then it evolved over time. Initially I think it was like eoj <space> the <space> brave, and then I probably signed up for something where you couldn’t have spaces in your name so I used underscores. And then I probably signed up for something where you couldn’t have underscores in your name. So, it just kind of all merged together. And now, here I am, twenty years later being like, “I should’ve just picked Joe.” [laughing] But, this works fine.

IVAN: [laughing] And, do you have all of the domain names as well. Eojthebrave.com and all that?

JOE: No, I don’t.

IVAN: Oooh Alright. I’m buying it right now. It’s going to be a little more valuable in a little bit here.

JOE: Yeah, totally. [laughing]

IVAN: [laughing] That’s awesome. Well, thank you very much for giving that explanation and talking with me. It was just really wonderful to find out more about you and what you’re doing. Yeah, come back on the show, and maybe we’ll talk about some big ideas in the next episode.

JOE: That’d be fun. I appreciate the opportunity to chat with you and just catch up.

IVAN: Yeah. That was awesome. Joe Shindelar is passionate about open source technology and is a lead trainer and lead developer at Osio Labs. You can find him on Twitter and on Drupal.org where his handle is @eojthebrave. You can also check out his personal chunk of the internet at dreamformula.com. You’ve been listening to the TEN7 Podcast. Find us online at ten7.com/podcast. And if you have a second, do send us a message. We love hearing from you. Our email address is [email protected]. Until next time, this is Ivan Stegic. Thank you for listening.

Oct 09 2019
Oct 09

Adam Juran joins the 1x team as Senior Frontend Developer. He has over twenty years experience in web development, his experience spanning design to frontend and backend development. At his most recent position with Forum One, he became a Pattern Lab/Drupal integration specialist, giving sessions and trainings on the subject at DrupalCons and other events. Adam currently lives in Brussels, Belgium, with his wife and three children. He is also an opera singer and has a black belt in Kung Fu.

Zsófi Major comes from Hungary and is joining our project management team. She gained extensive experience in project- and account management at Cheppers and after a short break from Drupal and project management she is back to the scene and we are very grateful to have her on board. 
Zsófi has been in the Drupal community for years, being core organizer of and volunteer at various Drupal events, including Drupal Dev Days Szeged 2014, the Drupalaton series and Drupal Iron Camp in 2016. She was also a track chair for the Being Human track at DC Vienna 2017 and DC Nashville 2018.
She loves good tv and enjoys both theater and concerts. She also collects teaspoons! 

Oct 09 2019
Oct 09

Autumn is here! One of the things we’re looking forward to this month is DrupalCon Amsterdam from the 28th - 31st Oct 2019. Autumn is the most magical time to visit Amsterdam! An opportunity to mingle with the Drupal community in Amsterdam, what else could a Drupaler wish for? 

QED42’s support for the Drupal Community around the world is unwavering. Would it be sponsoring DrupalCamps, DrupalCons, organizing Drupal meetups, or contributing to Drupal.org. 

And we hope you will join us at DrupalCon Amsterdam, this month! 

| Meet us!

QED42 is proud to be a Silver sponsor this year. If you are a Drupaler you wouldn’t miss visiting QED42’s booth. We are known for our exuberant booth vibes, designs, activities, and goodies. It is our tradition of unveiling a new Drupal t-shirt design at every DrupalCon. Check out the story behind our Hindi Drupal t-shirt series here - https://www.qed42.com/blog/story-behind-our-hindi-drupal-t-shirt. Our Drupal t-shirt design for #DCA is inspired by the vibrant and spirited culture of Amsterdam. Accompanied by a couple more goodies that you will absolutely adore! 

This year, QED42 will be showcasing a wide range of our capabilities including:

  • Decoupled Drupal
  • Gatsby e-commerce demos
  • Use cases around Drupal, JavaScript, and Design!

Come say Hi to our team at DrupalCon Amsterdam Booth No - 16, we would love to discuss ideas around how Drupal meets the ever-changing needs of the digital world.

| Sessions

Our Drupal experts are presenting at DrupalCon Amsterdam 2019. You can find us at these sessions:

Houdini - New Era of CSS 

  • Date: 28th Oct 2019
  • Time: 15:00 - 15:40
  • Location: G 103
  • Track: Drupal + Frontend
  • Level: Intermediate 
  • Speakers: Vidit Anjaria and Saket Kumar

Here’s a sneak peek of our session - https://www.qed42.com/blog/building-powerful-custom-properties-CSS-houdini

Designing the future of the Drupal Admin UI

| Keynotes

There are some exciting keynotes lined up for you at DrupalCon Amsterdam! 

- Tuesday, October 29 at 9:00 AM | Talk: Driesnote

Speaker: Dries Buytaert - Founder

- Wednesday, October 30 at 1:30 PM | Talk: If I can do it, so can you

Speaker: Sue Black - Professor of Computer Science and Technology Evangelist, UK Government Strategic Advisor, Women’s Equality Party candidate for London Mayor 2020, Professional Speaker, Author

- Tuesday, October 29 at 1:30 PM | Talk: Humanity in tech 

Speaker:  Boris Veldhuijzen Van Zanten - CEO and Co-founder of thenextweb.com

- Monday, October 28 at 1:30 PM | Talk: Drupal core initiative leads keynote

| Conclusion

Attending DrupalCon Amsterdam? Don’t forget to1  flash your badge and spread the word - https://events.drupal.org/amsterdam2019/spread-word. Follow @DrupalConEur for recent updates around the event.

Drop by our Booth 16 and meet the QED42 team! We would love to share our exciting projects and learn more about your experiences and challenges with Drupal.

Oct 09 2019
Oct 09

Drupal is a wonderful Content Management System with tons of features that solve many problems for editors and content managers. A developer can take different approaches to achieve the same result, and the Drupal update process is no exception.

It is possible to update Drupal either with Composer, Drush, or manually within the CPanel interface. The first two methods imply that you have at least mid-level experience with the command line and secure shell access to your public host. The third method is more visual and is suitable for developers beginning with Drupal.

Keep reading, if you want to learn how to update your Drupal site with this method.

Step #1. The Local Installation

This tutorial assumes, you already have managed to create a local installation, as described in steps #6 and #7 of this tutorial. This tutorial will build upon that example.

  • Enter the SSH mode of the virtual machine (Scotch box) 

vagrant up

vagrant ssh

190930 drupal basic workflow

  • Access the public directory of your virtual machine

cd /var/www/public   

  • Enter on the address bar of your browser to access the site
  • Click Configuration > Maintenance mode
  • Check Put site into maintenance mode
  • Click Save configuration

190930 drupal basic workflow 001

The local site is now in maintenance mode. You need to create a backup of the database and of the codebase. 

  • In the terminal of your PC, type:  tar -zcvf drupal-backup.tar.gz .

To create a compressed file called drupal-backup.tar.gz of the public directory. This process will take about one minute. 

190930 drupal basic workflow 002

To create a copy of the database type: 

mysqldump -u root -p my_drupal_8 > /var/www/public/my_drupal_8.sql

  • Enter root as password (you won’t see any characters rendered on the screen)

190930 drupal basic workflow 003

Notice that these two files are now stored inside the public directory within the virtual machine and also in the public directory located at mydrupalbox in your projects folder. 

190930 drupal basic workflow 004

 Step #2. - Installing on a Production Server

On a regular hosting provider, you normally install your application (e.g. Drupal) with a one-click-install procedure. 

190930 drupal basic workflow 005

The hosting provider will assign a Username and Password for the newly created account. We need these, to edit the settings.php file of the installation we are going to import. 

  • Click the link to CPanel
  • Click File manager within the Files section

190930 drupal basic workflow 006

  • Click on the public_html folder on the left 

190930 drupal basic workflow 007

On the right is the Drupal codebase installed by the system of your hosting provider.

  • Select all files and folders
  • Press Delete
  • On the menu bar Click Upload, a new tab will open

190930 drupal basic workflow 008

  • Click Select file
  • Upload the compressed file you created in the last step

190930 drupal basic workflow 009

  • Select the file
  • Click Extract
  • Click Extract file(s)
  • Click Close
  • Select the tar.gz file and press Delete
  • Press Confirm
  • Open the sites/default folder
  • Select the settings.php file
  • Click the pencil on the menu bar, to edit the file
  • Scroll down to the end of the file
  • Change the database, username, and password with the ones you got from your hosting provider (hint: a better approach is to edit the file before compression on your local installation)

To find out the database name, head over to CPanel. In the Databases section, click  phpmyadmin 

190930 drupal basic workflow 011

The database name is on the left. 

190930 drupal basic workflow 012

  • Edit the settings.php file accordingly 
  • Click Save changes
  • Click Close

190930 drupal basic workflow 013.0

 Step #3. - The Database

  • In phpmyadmin scroll down and click Select all, to select all tables

190930 drupal basic workflow 013

  • On the dropdown select DROP
  •  Click Yes/ok

190930 drupal basic workflow 014

The database is now empty.

  • Click Import
  • Select the database backup you created in the last step

190930 drupal basic workflow 015

  • Click Continue

The system will prompt you, once the import process has finished.

190930 drupal basic workflow 016

  • In the address bar of your browser type:  mysitedomain.com/user 
  • Enter your Username and password - make sure that you change these in your user profile, in case you had a less secure password in your local installation
  • On the address bar type: mysitedomain.com/update.php

You will be redirected to the Update screen

  • Click Continue

190930 drupal basic workflow 018

If everything goes well, the system will prompt you to continue to the Front page or the Administration pages. 

  • Click Administration pages
  • Click Configuration > Maintenance mode
  • Uncheck Put site into maintenance mode
  • Click Save configuration

190930 drupal basic workflow 019

How to Update Drupal Core

The first thing you have to check on your local installation is the status of core and contrib modules. 

After putting your local installation on maintenance mode, and making backups of the codebase and the database, position your cursor at the root folder of your local installation (the composer.json file is there)

  • Type: composer outdated "drupal/*"   

To check for outdated modules.

  • To update modules type: composer require drupal/modulename     

Just like re-installing the module.

190930 drupal basic workflow 020

You can update all modules, but as you can see, the drupal/core package is not listed. 

190930 drupal basic workflow 021

Honestly, I don’t know what this is about, however, this is simple to solve. 

  • Edit the composer.json file

Omit the “replace” section and place the “drupal/core”: ”^8.x” statement inside the “require” section.

190930 drupal basic workflow 022

190930 drupal basic workflow 023

rm composer.lock     -To delete the file.

sudo rm -R vendor    -To delete the folder

 composer update drupal/core --with-dependencies     -To update Drupal core. This will also generate the vendor folder and the composer.json file.

190930 drupal basic workflow 024

  190930 drupal basic workflow 025

Now you need to start over with step #2. You will not need to upload the database this time.  

I hope you liked this tutorial.

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.
Oct 08 2019
Oct 08

This week, the U.S. Supreme Court declined to review California’s Ninth Circuit Court’s decision in Robles v. Domino’s Pizza, LLC,* signaling a long-anticipated answer to an essential question: Does the Title III of the Americans with Disabilities Act, which was written in 1990 before the current digital landscape was ever envisioned, apply to websites and apps?
The answer: Yes.
Until now, the legal mandate surrounding the accessibility of websites and apps has been shrouded in ambiguity. This decision needs to be viewed as a loud wake-up call for businesses who want to avoid legal action and unwanted attention to what their websites might be lacking.
More so than ever before, businesses that delay in having their sites thoroughly evaluated for accessibility and remediated as necessary are at risk. This ruling also opens up the flood gates for accessibility lawsuits

The US Courts Have Spoken on Web Accessibility  

In deciding not to hear Robles v. Domino’s Pizza, LLC, the Supreme Court has upheld that:
    •    Title III of the ADA covers websites and apps that have a connection to a physical place of public accommodation, and 

    •    Holding businesses that do not have an accessible website liable, does not violate their 14th Amendment right to due process.

In rejecting the appeal from Domino’s Pizza, the Supreme Court cleared the way for Guillermo  Robles, a blind man, to proceed with his lawsuit against the chain. His lawsuit alleges that Domino’s website and mobile app were not accessible to him, and that under Title III of the Americans with Disabilities Act, he had a right to require that the site be outfitted with accessibility aids. 

The issue that brought Dominos to the Supreme court was a missing Alt Text!

Robles v. Domino’s was filed in the Central District of California in September 2016, and centered on the inability of Robles to order a pizza on his iPhone: The app didn't accommodate his screen-reader software, which works only when a website's graphics have an "alt-text," feature that gives a description of the image when a cursor floats over it.

The Ninth Circuit held that websites and mobile apps should be considered among the “places of public accommodation” covered by Title III of the Americans with Disabilities Act. While Domino’s argued that Title III of the ADA was intended to apply to accommodations in its physical restaurants the Ninth Circuit held that websites and apps now constitute places of public accommodation.

What does this mean for private website owners?

Let there be no doubt, the floodgates have now been opened for disabled plaintiffs to take legal action against companies whose websites and mobile apps are not accessible. 
While some claim that there is still a lack of clarity concerning web accessibility requirements, WCAG 2.1 currently stands as the definitive guidelines for remediating existing sites or building new ones.
The impact of the Supreme Court’s decision to not hear is decision cannot be underestimated. The disabled rights community has been closely watching this case and this week’s development needs to be viewed as a loud call to action for all businesses that have a website or app that’s designed to serve as a point of public accommodation.

At Promet Source, walking clients through the process of evaluating their websites and mobile apps for accessibility and moving forward with the confidence that compliance has been achieved, is what we do. And time and time again, clients discover that remediating their site for accessibility is a value-added process that results in a wide range of benefits.

Never has it been more critical to partner with an expert and get it right. We’re here to help. Contact us today.

*Supreme Court Declines to Review Ninth Circuit Decision in Robles v. Domino’s, Exposing Businesses to More Website Accessibility Lawsuits, by Seyforth Shaw, LLP, Oct. 7, 2019

Oct 08 2019
Oct 08

Drupal Association of Colombia logo

The Drupal project is global. There are people using, implementing, and contributing to the Drupal project in nearly every country of the world.

Being able to encourage and support our global community to promote and grow the project must also be a global operation, and we are delighted to read that the Drupal Association of Colombia (ADC) has now been officially formed.

This local association will help to promote and stimulate the use of Drupal in Colombia and act as a focus to propel the Colombia community’s efforts and initiatives in accordance with the Drupal values and principles.

The founding members of the local association are partners and executives of two experienced Drupal Agencies in Colombia: Jairo Pinzón, Aldibier Morales, and William Vera from Seed EM and Jorge Alexander Salcedo and Carolina Poveda from Bits Americas; a senior Drupal developer and very active community member, Iván Chaquea; a marketer and very active Drupal adopter Jonathan Osorio from Grupo Éxito; and from the academic side, Socrates Rojas, dean of the faculty of computer science from the Instituto Técnico Central of Bogota, a prestigious public technical school.

Membership is now open to organizations and individuals who wish to join the Drupal Association of Colombia and who share the same interest. By joining, members will have access to all the local activities, training, official Drupal events, and the opportunity to contribute in a more cohesive way. More information will soon be available at www.asociaciondrupal.org​.

The ADC is now preparing for its first official event — Drupal Camp Medellin on June 5-6, 2020.

Please join us in congratulating all involved and wishing them a successful future!

Oct 08 2019
Oct 08

9 minute read Published: 8 Oct, 2019 Author: Derek Laventure
Drupal Planet , Drupal 8 , OpenSocial

In Drupal 7, hook_update()/hook_install() were well-established mechanisms for manipulating the database when installing a new site or updating an existing one. Most of these routines ended up directly running SQL against the database, where all kinds of state, configuration, and content data lived. This worked reasonably well if you were careful and had a good knowledge of how the database schema fit together, but things tended to get complicated.

With the maturing of Features module, we were able to move some of this into configuration settings via the ctools-style export files, making the drush feature-revert command part of standard workflow for deploying new features and updates to an existing site.

In Drupal 8, we’ve made huge strides in the direction of Object Orientation, and started to separate Configuration/State, Content Structure, and Content itself. The config/install directory is often all that’s needed in terms of setting up a contributed or custom module to work out of the box, and with the D8 version of Features, the same is often true of updates that involve straightforward updates to configuration .yml files.

It turns out that both hook_update() and hook_install() are still valuable tools in our box, however, so I decided to compile some of the more complicated D8 scenarios I’ve run across recently.

Drupal 8 Update basics

The hook_update_N API docs reveal that this function operates more or less as before, with some excellent guidelines for how to approach the body of the function’s implementation. The Introduction to update API handbook page provides some more detail and offers some more guidance around the kinds of updates to handle, naming conventions, and adding unit tests to the your update routines.

The sub-pages of that Handbook section have some excellent examples covering the basics:

All of these provided a valuable basis on which to write my own real-life update hooks, but I found I still had to combine various pieces and search through code to properly write these myself.


We recently launched our first complex platform based on Drupal 8 and the excellent OpenSocial, albeit heavily modified to suit the particular requirements of the project. The sub-profile required more extensive customization than simply extending the parent profile’s functionality (as discussed here). Instead, we needed to integrate new functionality into that provided by the upstream distribution, and this often resulted in tricky interactions between the two.

Particularly with a complex site with many moving parts, we take the approach of treating the site as a system or platform, installing and reinstalling regularly via a custom installation profile and set of feature modules. This allows us to integrate:

  • a CI system to build the system repeatedly, proving that everything works
  • a Behat test suite to validate the behaviour of the platform matches the requirements

In the context of a sub-profile of OpenSocial, this became complicated when the configuration we wanted to customize actually lived in feature modules from the upstream profile, and there was no easy way to just override them in our own modules’ config/install directories.

We developed a technique of overriding entire feature modules within our own codebase, effectively forking the upstream versions, so that we could then modify the installed configuration and other functionality (in Block Plugins, for example). The trouble with this approach is that you have to manage the divergence upstream, incorporating new improvements and fixes manually (and with care).

Thus, in cases where there were only a handful of configuration items to correct, we began using hook_install() routines to adjust the upstream-installed config later in the install process, to end up with the setup we were after.

Adjust order of user/register form elements

We make use of entity_legal for Terms of Service, Privacy Policy, and User Guidelines documents. Our installation profile’s feature modules create the 3 entity legal types, but we needed to be able to tweak the order of the form elements on the user/register page, which is a core entity_form_display created for the user entity.

To achieve this using YAML files in the config/install directory per usual seemed tricky or impossible, so I wrote some code to run near the end of the installation process, after the new legal_entity types were created and the core user.register form display was set. This code simply loads up the configuration in question, makes some alterations to it, and then re-saves:

 * Implements hook_install().
function example_install() {

 * Adjust weights of legal docs in user/register form.
function example_update_8001() {

 * Ensure the field weights on the user register form put legal docs at the bottom
function _example_install_adjust_legal_doc_weights() {
       $config = \Drupal::getContainer()->get('config.factory')->getEditable('core.entity_form_display.user.user.register');
       $content = $config->get('content');

       $content['private_messages']['weight'] = 0;
       $content['account']['weight'] = 1;
       $content['google_analytics']['weight'] = 2;
       $content['path']['weight'] = 3;
       $content['legal_terms_of_service']['weight'] = 4;
       $content['legal_privacy_policy']['weight'] = 5;
       $content['legal_user_guidelines']['weight'] = 6;
       $config->set('content', $content)->save();

Modify views configuration managed by upstream (or core)

A slightly more complicated situation is to alter a views configuration that is managed by an upstream feature module during the installation process. This is not an ideal solution, but currently it’s quite challenging to properly “override” configuration that’s managed by a “parent” installation profile within your own custom sub-profile (although Config Actions appears to be a promising solution to this).

As such, this was the best solution I could come up with: essentially, run some code very nearly at the end of the installation process (an installation profile task after all the contrib and feature modules and related configuration are installed), that again loads up the views configuration, changes the key items needed, and then re-saves it.

In this case, we wanted to add a custom text header to a number of views, as well as switch the pager type from the default “mini” type to “full”. This required some thorough digging into the Views API and related code, to determine how to adjust the “handlers” programmatically.

This helper function lives in the example.profile code itself, and is called via a new installation task wrapper function, which passes in the view IDs that need to be altered. Here again, we can write trivial hook_update() implementations that call this same wrapper function to update existing site instances.

 * Helper to update views config to add header and set pager.
function _settlement_install_activity_view_header($view_id) {
  # First grab the view and handler types
  $view = Views::getView($view_id);
  $types = $view->getHandlerTypes();

  # Get the header handlers, and add our new one
  $headers = $view->getHandlers('header', 'default');

  $custom_header = array(
    'id' => 'area_text_custom',
    'table' => 'views',
    'field' => 'area_text_custom',
    'relationship' => 'none',
    'group_type' => 'group',
    'admin_label' => '',
    'empty' => '1',
    'content' => '<h4>Latest Activity</h4>',
    'plugin_id' => 'text_custom',
    'weight' => -1,
  array_unshift($headers, $custom_header);

  # Add the list of headers back in the right order.
  $view->displayHandlers->get('default')->setOption($types['header']['plural'], $headers);

  # Set the pager type to 'full'
  $pager = $view->getDisplay()->getOption('pager');
  $pager['type'] = 'full';
  $view->display_handler->setOption('pager', $pager);


Of particular note here is the ordering of the Header components on the views. There was an existing Header on most of the views, and the new “Latest Activity” one needed to appear above the existing one. Initially I had tried creating the new custom element and calling ViewExecutable::setHandler method instead of the more complicated $view->displayHandlers->get('default')->setOption() construction, which would work, but consistently added the components in the wrong order. I finally found that I had to pull out a full array of handlers using getHandlers(), then array_unshift() the new component onto the front of the array, then put the whole array back in the configuration, to set the order correctly.

Re-customize custom block from upstream profile.

In most cases we’ve been able to use Simple Block module to provide “custom” blocks as configuration, rather than the core “custom” block types, which are treated as content. However, in one case we inherited a custom block type that had relevant fields like an image and call-to-action links and text.

Here again, the upstream OpenSocial modules create and install the block configs, and we didn’t want to fork/override the entire module just to make a small adjustment to the images and text/links. I came up with the following code block to effectively alter the block later in the installation process:

First, the helper function (called from the hook_install() of a late-stage feature module in our sub-profile), sets up the basic data elements needed, in order to make it easy to adjust the details later (and re-call this helper in a hook_update(), for example):

function _example_update_an_homepage_block() {

  ## Edit $data array elements to update in future ##

  $data = array();
  $data['filename'] = 'bkgd-banner--front.png'; # Lives in the images/ folder of example module
  $data['textblock'] = '<h2>Example.org is a community of practice site.</h2>'

<p>Sign up now to <b>learn, share, connect </b>and<b> collaborate</b> with leaders and those in related fields.</p>
  $data['cta1'] = array(
    'url' => '/user/register',
    'text' => 'Get Started',
  $data['cta2'] = array(
    'url' => '/about',
    'text' => 'More about the Community',


The rest of the function does the heavy lifting:

  # This code cobbled together from `social_core.install` and # `social_demo/src/DemoSystem.php`
  // This uuid can be used like this since it's defined
  // in the code as well (@see social_core.install).
  $block = \Drupal::entityTypeManager()->getStorage('block_content')->loadByProperties(['uuid' => '8bb9d4bb-f182-4afc-b138-8a4b802824e4']);
  $block = current($block);

  if ($block instanceof \Drupal\block_content\Entity\BlockContent) {
    # Setup the image file
    $fid = _example_setup_an_homepage_image($data['filename']);

    $block->field_text_block = [
      'value' => $data['textblock'],
      'format' => 'full_html',

    // Insert image file in the hero image field.
    $block_image = [
      'target_id' => $fid,
      'alt' => "Anonymous front page image homepage'",
    $block->field_hero_image = $block_image;

    // Set the links.
    $action_links = [
        'uri' => 'internal:' . $data['cta1']['url'],
        'title' => $data['cta1']['text'],
        'uri' => 'internal:' . $data['cta2']['url'],
        'title' => $data['cta2']['text'],

    $itemList = new \Drupal\Core\Field\FieldItemList($block->field_call_to_action_link->getFieldDefinition());
    $block->field_call_to_action_link = $itemList;


The image helper function prepares the image field:

function _example_setup_an_homepage_image($filename) {

  // TODO: use a better image from the theme.
  // Block image.
  $path = drupal_get_path('module', 'example');
  $image_path = $path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . $filename;
  $uri = file_unmanaged_copy($image_path, 'public://'.$filename, FILE_EXISTS_REPLACE);

  $media = \Drupal\file\Entity\File::create([
    'langcode' => 'en',
    'uid' => 1,
    'status' => 1,
    'uri' => $uri,

  $fid = $media->id();

  // Apply image cropping.
  $data = [
    'x' => 600,
    'y' => 245,
    'width' => 1200,
    'height' => 490,
  $crop_type = \Drupal::entityTypeManager()
  if (!empty($crop_type) && $crop_type instanceof CropType) {
    $image_widget_crop_manager = \Drupal::service('image_widget_crop.manager');
    $image_widget_crop_manager->applyCrop($data, [
      'file-uri' => $uri,
      'file-id' => $fid,
    ], $crop_type);

  return $fid;


As with most things I’ve encountered with Drupal 8 so far, the Update system is both familiar and new in certain respects. Hopefully these concrete examples are instructive to understand how to adapt older techniques to the new way of managing install and update tasks.

The article Drupal 8 hook_update() Tricks first appeared on the Consensus Enterprises blog.

We've disabled blog comments to prevent spam, but if you have questions or comments about this post, get in touch!

Oct 08 2019
Oct 08

We keep pushing the Drupal adoption in our city at GTD. This event was under the “Star Wars” topic.  All participants have learned how to create a website on the Drupal platform and have created a module that calculates the winner in the battle.

This time we added a little bit of gamification to make a process of site-building more interesting. There was a competition between the teams and three of the quickest got presents from our company!

We thank all guests for participation. See you soon! 



Oct 08 2019
Oct 08

Skpr - pronounced Skipper - is a cloud hosting platform specifically designed to maximise the productivity of development teams by giving them full control right from the command line.

During our consulting engagements with large organisations, we recognised a clear trend; they were moving away from narrow, single-site hosting services and building bespoke platforms on top of Kubernetes to support their multi-site, multi-technology initiatives.

Back in 2016 we had this exact need for hosting our entire portfolio of sites. Throughout this journey we found that providing developers with a simple Command Line Interface (CLI), has led to huge improvements in our team's efficiency and the overall quality of our products.

So, today we’re announcing the public launch of our hosting platform, Skpr. The platform for teams who want a simple command line tool, backed by a range of industry-leading services and supported by our own team of experts.

Why Skpr is different

Many hosting platforms provide a web interface where deployments can be dragged-and-dropped between environments.

While these solutions are more effective for non-developers, they fall short in integration and extendability within the workflow of the developers actually doing the job. Having a Command Line Interface (CLI) means that not only do we provide the same level of control, we provide the flexibility to extend those workflows. 

  • Scripts - Having a CLI means that Skpr can integrate into existing automation, along with CI tools such as CircleCI.
  • Documentation - Complex tasks carried out via a GUI are very difficult to document. CLIs mean you spend less time describing a user interface and more time documenting the actual process.

Control on Command

With a few commands, developers have the control to package, deploy, configure and monitor their services right from the command line.

And while we want to provide a platform that's powerful, reliable and secure, we're passionate about making it easy-to-use as well.

To find out more, visit skpr.io.

Add new comment

Oct 07 2019
Oct 07
Screenshot of LSS Home Page

Becoming Their Go-To Drupal Experts

Lutheran Social Service of Minnesota (LSS) is one of the state’s largest private nonprofit social service organizations, providing a vast array of services in all 87 Minnesota counties for children and families, older adults and people with disabilities.

Our Assignment: Audit LSS Sites and Take Them On as a TEN7Care Support Client

LSS hired us to support and maintain their flagship website (lssmn.org) and seven smaller websites. Minnesotans find and interact with LSS services through their websites (over 1,200 pages), including performing time-sensitive tasks like submitting timesheets and payments, so it’s crucial the websites perform optimally with very little downtime. The sites were already well-organized, designed and written to meet the organization’s needs—a testament to hard work done previously. LSS just needed help maintaining the technology and continuing to enhance the site.

TEN7Audit & TEN7Improve

Before TEN7 takes on any support client, we take them through our comprehensive onboarding process to get an overall lay of the land and identify any lurking security or performance issues. As a result of the TEN7Audit, we implemented best practices to update the LSS sites and keep them backed up and as secure as we could possibly make them:

  • Updates: Updated Drupal core, Drupal modules and PHP to current official versions (including disabling non-essential and performance-intensive Drupal modules).
  • Security: Ensured there were no security vulnerabilities.
  • Site backups: We recommend (and LSS wanted) offsite backups, something their current host didn’t provide. We set up redundant offsite backups using Tractorbeam at Amazon’s AWS and in Google Cloud. 
  • Update Code: Replaced custom code with Drupal core functionality or Drupal modules.
  • Caching: Implemented HTTP caching, database query caching, and Drupal caching to provide a faster site experience for site visitors.


In the TEN7Care phase, we focus on adding new features and optimizing the site and the processes that surround it.

  • Issue backlog: In the support and maintenance phase, new clients usually bring us a small task backlog. But the super-prepared client of the year award goes to Tom Lany, Online Marketing Manager at LSS, who started the TEN7Care process with a list of 60 backlogged tasks compiled from stakeholder feedback, prioritized and categorized in a spreadsheet we could feed directly into our issue tracking program. Thanks to Tom’s great organization, we assigned and blew through many of those tasks in short order!
  • Deployment process: We discovered the website deployment process was a pain point. Various features (like menus) would frequently break during deploys. We fixed the root cause of the menu issue and implemented some of our software development best practices around deploys: greater reliance on issue tracking and version control, and a deploy schedule that mirrored the sprint schedule. At end-of-sprint meetings, we review candidates for release, and then do a release after that meeting. LSS now has confidence in and connection to a predictable and testable deployment process.

We’re Now Caring for Lutheran Social Service’s Sites

Lutheran Social Service of Minnesota is now an official TEN7Care support client. We’ll continue to update, optimize, and secure their sites, and add new features as needed. We look forward to a long and fruitful relationship.

“TEN7 helps us solve technical challenges that we can’t solve ourselves within Drupal, and they keep our systems updated and secure. TEN7’s extensive expertise with Drupal means we get answers quickly, and that we don’t have to worry about missing security and stability updates, because their team carefully tracks all of this.“ —Tom Lany, Online Marketing Manager, Lutheran Social Service of Minnesota

Oct 07 2019
Oct 07

Recently, I nudged governments to get more involved in fixing accessibility issues in Open Source projects. Getting governments to do anything can feel like a monumental challenge. Maybe we need to build better alliances and then collectively lobby the governments to change how they approach Open Source.

Dries Buytaert, the founder of Drupal, recently published a blog post titled, "Balancing Makers and Takers to sustain and scale Open Source," and while reading it I wondered, “Are we approaching the problem of sustainability too much as developers? Should we step back and look at the challenge of sustainability from a business and political perspective?”

Is changing an Open Source project's license going to change how other organizations contribute to Open Source? Changing the licensing is a different approach. The recent "Open-source licensing war" felt like a few individual companies are trying to make a significant shift in Open Source, however lacking a unified front. If Open Source companies are going to take on Amazon, they are going to have to do it together by building alliances.

The definition of alliance sounds very much like what happens in Open Source communities.

An alliance is a relationship among people, groups, or states that have joined together for mutual benefit or to achieve some common purpose, whether or not explicit agreement has been worked out among them.

-- https://en.wikipedia.org/wiki/Alliance

Political alliances (a.k.a. parties) are what powers most governments. The scale of some open source projects has required better governance. In Dries' blog post, he spends time exploring how organizations use Open Source (a.k.a. Takers) without helping to build the software or community (a.k.a. Makers). His post ends with three valuable suggestions that are focused on appealing to organizations and rethinking how the Open Source software is shared. Maybe we need to rethink how Open Source communities and organizations work together.

"Working better together" is a mantra in Open Source. In the Drupal community, we work together to build the 'software' and the Drupal Association is supporting the infrastructure.

Are there other opportunities to work together?

Deciding and maintaining a local development environment is a challenge for every developer. In the Drupal community, each hosting company is developing its own Docker-based local develop environment. Wouldn't everyone benefit from one collaborative Drupal-specific local develop environment? Competitors can work together for the common good, primarily when everyone benefits from the collaboration.

The Drupal community does work well together - we know this. A few years ago, Drupal got off its island and started leveraging other Open Source projects including Symfony. There is even an implementation for WordPress' Gutenberg page builder available for Drupal.

Besides sharing code across Open Source communities, we need to start collaborating to improve sustainability.


Open Source is about collaboration. The problem of Open Source sustainability is going to be best solved by improving and rethinking how we collaborate.

We need to collaborate to get the organizations that rely on Open Source to contribute more.

Onboarding new contributors to Open Source is a critical process of building sustainable Open Source communities. Aside from emphasizing the importance of onboarding individual contributors, we need to also look at how we onboard new organizations and encourage their collective effort to help sustain the software they need.

Drupal's Getting Involved Guide targets individual contributors. For example, nowhere on the Events page does it say, "Organizations can get involved by sponsoring an event." If the Drupal community wants bigger contributions and a more sustainable ecosystem, we need to target organizations. If one fortune 500 company decides that content moderation and workflows are essential for the future of their organization's business and contributes this code back to the Drupal community; this makes a huge difference.

For the past twenty years, Open Source advocates had to be evangelists preaching the value of Open Source. Open Source is here to stay, and most evangelists are now preaching to the choir. Even this type of blog post is preaching to the choir of people who care about Open Source and sustainability. I am not ready to state that Open Source needs to go on a crusade to solve the challenge of sustainability. Dries' blog post explores how Open Source has become a public and common good with different types of governance for Open Source. Maybe we need to embrace the inevitability that governments gradually have to get involved in some aspects of Open Source.

The scale at which Open Source software is impacting our society leads to governments needing to get more involved in coordinating and supporting. As I stated in my blog post governments should take responsibility for the accessibility for the Open Source projects that their constituents rely on. Similarly, the usage and success of self-driving automobiles is not going to take-off until a centralized shared open network of information and software is created to coordinate millions of self-driving cars, trucks, boats, and planes. The misconception in my blog post's statement that "governments should do this or that" misses the reality that governments need to be pushed and lobbied to take action and make changes.

Lobbying is not a word commonly found in Open Source. 

Lobbying, persuasion, or interest representation is the act of attempting to influence the actions, policies, or decisions of officials, most often legislators or members of regulatory agencies

-- https://en.wikipedia.org/wiki/Lobbying

Lobbying is not an entirely new concept for Open Source. Julia Reda and the Free and Open Source Software Audit (FOSSA) project successfully persuaded the EU to offer bug bounties. These bug bounties helped address security issues in many Open Source projects, including Drupal.

Security and accessibility in Open Source are two big digital concerns for governments that they should help support and address. Governments want to build secure and accessible digital experiences; they need guidance on how to properly do it. For example, the U.S. government's Healthcare.gov website faced numerous issues during its launch and it needed a lot of help getting it right. The same administration also passed a policy demanding 20 percent of federal code be open source. Maybe the next administration should pass a policy or create a department to address accessibility and security in Open Source software. Most governments understand the value of Open Source, and they need help becoming better members of the Open Communities.

Who should persuade and help the government to contribute more to Open Source?


I chose not to title this post, "Drupal, WordPress, and GitHub should lobby the government" because it’s not realistic to expect an Open Source community to lobby governments. Open Source communities are still working through the challenges of self-governess. I chose to call-out three companies, Acquia, Automattic, and Microsoft, because they are all major contributors and drivers to Open Source projects in different ways. Acquia supports Drupal, a Content Management System (CMS) used to build enterprise digital experiences. Automattic supports Wordpress; the most popular CMS and blogging platform used by 33.5% of all the websites. Finally, Microsoft is the largest contributor to GitHub and now they own GitHub. It is also important to note that Microsoft knows how to lobby the government. Microsoft could pave the way in convincing the government of the importance of contribution.

All three companies are paying teams of developers to help contribute, build, and maintain Open Source projects. I see in the Drupal community an assumption that Acquia is or should be doing most of the heavy work within the Drupal community. An Open Source project is not going to be sustainable, assuming one company can keep hiring full-time developers. At the same time, of course, these companies need to continue to invest in their respective Open Source software and community.

As I have written about Open Source sustainability, I keep returning to the proverb.

"Give a man a fish and you feed him for a day; teach a man to fish and you feed him for a lifetime."

Companies like Acquia, Automattic, and Microsoft, which are valuing and contributing to Open Source should step-back and teach (or nudge) other organizations to start contributing to or to contribute more back to Open Source. Secondarily, businesses and Open Source leaders need to collaborate to make all off Open Source more sustainable.

Open Source began with evangelists converting developers building proprietary software to share and collaborate their ideas and passion.

Open Source evangelists may need to become lobbyist who persuades the 'Takers' of Open Source to contribute something back help sustainable Open source software.


Generally, I don't directly want to ask someone to take action in the Open Source community. However, I am invested in its continued growth and I know from experience we have amazing resources within our existing (and growing) community. Frankly, everyone in Open Source, including the leadership, has contributed more than their fair share. I am nudging the leaders of Open Source projects to look at the challenges they are facing in their community, to approach the problem differently, and take a different action. Maybe working together to lobby governments to fix accessibility issues in Open Source would be an excellent place to start to improve Open Source sustainability.

When I watch the below video, it is clear that the project leads for Drupal and WordPress are passionate and committed to Open Source. They share a common ground and would be able to work together - I am confident of this.

Microsoft may seem like the odd-man out. Years ago, Microsoft even lobbied against Open Source. Microsoft decided to change their approach and invest in Open Source. Now, Open Source communities and their leaders need to change their approach and collaborate to make Open Source sustainable.

Everyone understands why organizations should contribute to Open Source. The question is how can we persuade (a.k.a. lobby) organizations to contribute. Together, I know we’ll find the answers.

Almost done…

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


Oct 07 2019
Oct 07

Missed some of our blog posts last month? Don’t worry - here’s a recap of all our posts from September. Check it out and make sure you’re all caught up!

Interview with Suzanne Dergacheva of Evolving Web: The sky's the limit with Drupal

Our first post from last month is another one of our Drupal Community interviews. In it, Suzanne Dergacheva, co-founder of Evolving Web and member of the Drupal Association Board of Directors, talks about how she first discovered and started using Drupal, her most memorable Drupal moments, the projects and initiatives that she finds the most exciting, and her brand new hobby. 

One of Suzanne’s favorite things about Drupal is helping others to get over its steep learning curve and empowering them to benefit from all of its powerful features. She has conducted several studies on Drupal’s content editing user experience and is one of the initiative leads of Promote Drupal

She believes Drupal will continue evolving and finding new use cases. The main drives for this will be the evolution and standardization of “decoupled” Drupal, and the progress of the community and its events towards more and more diverse and inclusive. 

Read more

Let's talk about localization

It is kind of a general misconception that translating your site’s content is all that’s needed to launch the platform in another language and/or market. This next post, written by our developer Jernej, shows that there’s more to the story by explaining localization, how it differs from translation, and showing some best practices for localization. 

In order to successfully implement localization, you need to be mindful of the target audience’s culture - specifically, their habits when browsing the web, but also more general things such as the meanings of specific colors etc. This may require you to significantly change both the layout and content of your localized site.

Thankfully, there is one website aspect that needs no localizing. Good website performance is something that’s desired across all cultures, so, you need to make sure your website loads fast and doesn’t frustrate the user. One of the smoothest ways to speed up your loading times is image optimization. 

Read more

Must-see Business, Marketing & Industry sessions at DrupalCon Amsterdam 2019

The European edition of the biggest annual Drupal event is just around the corner and, with the diverse selection of tracks featuring an abundance of available sessions, it makes sense to do some planning prior to the event and reserve the time slots for your must-see ones.

We wanted to make these decisions at least a little bit easier and to this end made a list of our favorite sessions to attend from the Business + Marketing and the Industry tracks. We tried to cover as many different aspects as possible: mentoring, accessibility, ecommerce, contribution to open source, etc.

There were too many intriguing sessions from other tracks to cover all of these, and this is why we decided to focus exclusively on these two tracks. Hopefully, this blog post will arm you with the right information to get the most out of your time in Amsterdam. 

Read more

Interview with Lullabot’s Cristina Chumillas, co-organizer of the Drupal Admin UI and JavaScript Modernization initiative

We finish September’s list with another interview - this one with Cristina Chumillas, designer and front-end developer, and co-organizer of the Admin UI and JavaScript Modernization initiative in Drupal. 

In our interview, Cristina recalls how she started getting actively involved in the community and highlights the people who helped her along this journey. She points out that this early contact with community members helped her significantly in her professional career. She has just started her new job at Lullabot and loves the super welcoming attitude of her new colleagues. 

She enjoys enabling people to get involved in the Admin UI initiative. She is especially pleased with seeing so many non-developers help out - content creators, for example - and points out that the initiative needs any help they can get from diverse perspectives. She invites everyone who wants to help out to join the #admin-ui Slack channel and get involved.

Read more

This was it for our overview of the posts we wrote last month. We hope you enjoyed the read, and we wish everyone a smooth transition into the colder half of the year!

Oct 07 2019
Oct 07

Mark your calendars: The deadline for Proposals and applying for Grants & Scholarships is now Wednesday, December 4.

Oct 04 2019
Oct 04

The Drupal community is one of the largest open source communities in the world. Each year, we meet at Drupal Camps, meet-ups, and other events organized around the world. 

But the biggest event, DrupalCon, happens twice every year. It is a platform where developers, designers, and marketers come together to explore the most ambitious and cutting edge case studies. It offers prospective users, a glimpse into “the art of the possible” when you choose Drupal. It is a collaborative event where anyone can learn to use Drupal to make the Internet a better place. 

This year, OpenSense Labs is a silver sponsor of DrupalCon Europe 2019 to be held in Amsterdam, Netherlands.

Join us for the Sessions
Session 1 details on content marketing

What you will learn?

  • How to divide the right content strategy for your agency 
  • Which form of content works best?
  • How do you measure the success of your content strategy
  • Creating the right lean team for helping you achieve the content goals?
  • Which channel should you use, to market your content?

Session 2 on Drupal 8 theming

Theming Drupal 8 is a challenging job and not many are aware of how to smartly theme the e-commerce sites. Here are some major components which we will focus on in this session:

  • Product pages
  • Product-level field variables 
  • product variation level variables 
  • Checkout flows 
  • Creating flow as per requirement 
  • Customizing checkout progress 

Be in touch!

We can’t wait to talk to you about the amazing offers our team has for you. Ask us about our Agency++ programs to scale higher and discover more about higher-ed and e-learning systems. We have loads to unveil at DrupalCon Amsterdam!
So, swing by our booth and our team would love to meet and connect with you.

You can register now to be a part of the event.

Oct 04 2019
Oct 04

For DrupalCon Amsterdam, we’ve curated keynote speakers who are engaging presenters — and add value to the gathering as a whole. Enhance your professional life by hearing more about differing experiences in tech and open source. These keynotes are only for conference attendees, so we invite you to join us by registering.  

Oct 04 2019
Oct 04

Content authors and content editors always look out for a seamless, easy-to-use experience when it comes to page building. Drag-and-drop and WYSIWYG tools are something they expect when they want to create and design pages. Drupal Layout Builder offers this exact experience with its easy-to-use page building capability, in Drupal core. 

Drupal Layout Builder is unique and provides a powerful visual design tool to let content authors change the way content is presented. Introduced in Drupal core in its latest version, Layout Builder in Drupal 8 allows you to add/remove sections to display the content using different layouts, and customizing your pages based on the requirements. The Layout Builder Module in Drupal 8 also allows you to combine these sections and create a truly customized page. 

Layout Builder in Drupal 8 can be used in two different ways. It can be used to create a layout for each content type on the website, and also to create a layout for an individual piece of content.

Introducing Layout Builder in Drupal 8

The Layout Builder module allows you to customize the design of the entities such as content types, taxonomy, users etc. It provides an easy-to-use drag and drop option for site builders to place blocks, fields etc.

The layout builder module in Drupal 8 makes it easier to build your layouts by offering a preview of the changes made while building your layouts. Instead of having to save every small change made in the layout and then looking it up on the front-end, layout builder in Drupal allows previews of the changes made for a seamless layout building experience. 

Installing and setting up the Layout Builder module in Drupal 

In order to install/setup the layout builder module in Drupal 8, navigate to Extend and enable both Layout Builder and Layout Discovery module.

Installinf and setting up the layout builder

Note: Layout Builder was introduced as a stable module in Drupal 8.7. So, make sure you’re using the latest version. In older versions of Drupal, it was an experimental module.

1. Use Drupal Layout Builder to Customize Content-Type and Taxonomy

1. Once you have installed the module, navigate to Structure, Content types and click on “Manage display” for any content type , For now we will use the “article” content type.

layout builder module

2. Scroll to the bottom and click on Layout options and select “Use Layout Builder”, then click on Save.

Layout builder module in drupal 8

3. Once you’ve enabled Layout Builder on the view mode, you can see a “Manage layout” option instead of field formatters. You can use Layout Builder for any of the view modes present.

Manage Display

4. When you click on “Manage layout”, you’ll be redirected to article content type layout.

edit layout builder

2. Add Sections to Layout

1. First, remove the default section. Click on the close icon (as depicted in the below screenshot). Further, you will be provided with an option to the right side of your screen to remove the default section. Click on “Remove”.

add sections to layout builder

2. Let us add a few sections to our layout by clicking on the “Add Section” option. Further, you will be provided with options to choose a layout of your choice for your section, on the right side of the screen. For now, let us select the “Two Column Section”.

edit layout

3. You will have an option to choose the width for your “Two Column Layout”. Let us select a “50%/50%” for now. Then click on “Add section”.

Two column layout

Once added, you should be able to see an “Add Block” link for each section region.


3. Add Blocks to Section Regions

After choosing your section for the layout, you can add blocks into your section. To add a block just click on “Add Block” and the “Choose a block” option will slide out from the right.

add blocks to section regions

1.Choosing a Block
Blocks can be chosen from the right by just clicking on them. You can even find blocks by filtering them out by their name using the “Filter by block name” text field. 
We will select “Authored on” content field  for now.

choosing a block

When you click on the block you want to add, you’ll be able to adjust the field formatter. Once you’ve configured the formatter, click on “Add Block”.


The “Authored On” content field will be placed on the left side of the block.


After placing the “Authored On” field , you need to save your changes. Save all the changes you have made to your section by clicking on “Save Layout” option at the top of the layout page

layout builder

Let us try adding some more fields into our layout


So, after saving this layout, if you visit an article content type page, you will be able to see a preview of the layout which you just built..


4.Override Default Layout

The layout which we just built will be applicable for all the articles. If you want to build a customized layout for a particular article, we have to enable some options provided by Drupal for the same. You can do it by selecting “Allow each content item to have its layout customized.”


After enabling this option, if you go to an article, you should see a Layout tab button.

Layout builder

You can now modify the layout using the same interface. However, this will only change the layout on this specific piece of content.

Layout builder
Oct 04 2019
Oct 04

Over the years I have benefited greatly from the generosity of the Drupal Community. In 2011 people sponsored me to write lines of code to get me to DrupalCon Chicago.

Today Dave Hall Consulting is a very successful small business. We have contributed code, time and content to Drupal. It is time for us to give back in more concrete terms.

We want to help someone from an under represented group take their career to the next level. This year we will provide a Diversity Scholarship for one person to attend DrupalSouth, our 2 day Gettin’ Git training course and 5 nights at the conference hotel. This will allow this person to attend the premier Drupal event in the region while also learning everything there is to know about git.

To apply for the scholarship, fill out the form by 23:59 AEST 19 October 2019 to be considered. (Extended from 12 October)

Share this post

Oct 03 2019
Oct 03

The Drupal Association collaborated on Automatic Updates, one of the Drupal Core Strategic Initiatives that was funded by the European Commission. We are excited to partner with MTech, Tag1 Consulting, and the European Commission FOSSA program on this new initiative and share information with you about its features.

Automatic Updates has three components.

Public safety messaging

This feature pulls a feed of alerts from Drupal.org directly into Drupal's administrative interface. This helps ensure that critical Public service announcements (PSA) or Security Advisories (SA) from the Drupal security team will be seen directly by site owners. 

  • This provides yet another communication mechanism before an update so site owners can verify they are ready for an upcoming update, before it lands.

  • The feed of alerts comes directly from the feed of PSAs and SAs that the security team and release managers are already producing. 

  • This will vastly increase the ability of the Drupal project to get the word out about critical and highly critical updates - ensuring the community can respond fast. 

Readiness checks, or “Pre-flight” checks

These automated and extensible readiness checks are built into the Automatic Updates system to verify that a site doesn't have any blockers that would prevent it from being updated.

  • These checks are slated to run at least every 6 hours on a site via Drupal Cron and will inform site owners if they are ready to auto update their site.

  • Examples of the readiness checks include:

    • Is the site is running on a read-only file system?

    • Have any files included in the update been modified from what they should be? 

    • Does the site still need to run database updates, etc.? 

There’s about 8 or 9 of these readiness checks and some are warnings (Cron isn’t running frequently enough to automatically update the site in a timely manner) and some are errors (the file system is read-only). Warnings won’t stop automatic updates, but errors will.

In place updates

Finally, the key pillar of the automatic updates feature is the update itself. Drupal.org generates a signed and secure package of files which can be overlaid atop the existing site files in order to apply the update. 

  • This update package is downloaded as a signed zip file from Drupal.org. The automatic updates module on the site then compares the signature of the zip file using drupal/php-signify, which is based on BSD’s Signify and libsodium to verify the package.

  • It then proceeds to backup the files about to be updated and updates the site.

  • If all goes well, the site is upgraded. If something fails, the backup is restored.

  • Many workflows are supported and you can customize how the updates are performed. Updates can flow through your CI/CD system, be staged for review and approval, and or automatically go live.

In the past few weeks, the Drupal Association has been invited to participate in TagTeamTalks, a new recorded talk series about various tech projects supporting the Drupal project. This bi-weekly format provides real-time shared collaboration and informative discussions. 

TagTeamTalk launched its webinar focused on Automatic Updates this week. The group dives deep into the nuts and bolts of Drupal's groundbreaking Automatic Updates feature, and the strategic initiative sponsored by the Drupal Association, MTech, Tag1 Consulting, and the European Commission. Guests include Preston So (prestonso), Contributing Editor at Tag1 and Moderator of the TagTeamTalks; Michael Meyers (michalemeyers), Managing Director of Tag1; Lucas Hedding (heddn), Senior Architect and Data and Application Migration Expert at Tag1; Fabian Franz (Fabianx), Senior Technical Architect and Performance Lead at Tag1; and Tim Lehnen (hestenet) CTO at the Drupal Association. Read the TagTeamTalks blog.

“Content marketing is one of the most effective ways to promote your brand and capabilities - it has been a really powerful approach for the organizations that I’ve worked for,” said Michael. “The goal is to give our team an opportunity to talk about the cool things they’re working on and excited about and to share it with people. It helps get the word out about the latest developments in the open source communities we contribute to, and it promotes Tag1’s expertise - it helps us recruit new hires, and drives new business.” 

Meyers is the Managing Director of Tag1, and has been involved with the Drupal community for over 15 years. He was Founder and CTO of the first venture backed drupal based startup, CTO of the first Top 100 website on Drupal, and VP of Developer Relations at Acquia before joining Tag1.  “The great thing about TagTeamTalks is that it doesn’t take a tremendous amount of effort or energy. Our engineers are subject matter experts. We decide on a topic for the week, spend 15 minutes brainstorming a rough outline as a guide, and then record the talk. We don’t want to be rehearsed. The conversation is what makes it dynamic and enjoyable for us to do, and for people to listen to. And, the team loves it because they want to talk about what they are working on, and this format doesn’t take a lot of time away from what they enjoy doing most - writing code.” 

Hedding is one of the top 20 most active contributors to Drupal 8, and is also the Drupal Core Migrate Sub-system Maintainer, a core contribution mentor, and a D.O. project application reviewer. “Auto Updates has long been one of the most requested Drupal features, it is a capability the platform really needs that will help everyone using Drupal. Now that the alpha is available, we need to early adopters to start using it, we need feedback so we can continue to improve it. We also need to get more people involved in development, and we need to raise more money from organizations to support the project - it might sound like a simple feature, but it is actually really complex and requires a lot of effort. TagTeamTalks are a great way to get the word out and to enlist support from the Drupal community.”

Lucas added, “The European Commission provided generous funding for this initiative. The focus has been exclusively or largely around the European Commission’s features and functionality. The funding is running out very soon. There is a need for other people to help continue to build Automatic Updates by adding the features they need with their developers or by providing funding.”  

“It is critical for us to spread the message and make that call to action; that this is a community-driven effort and that without continued community support, it is not going to be as successful or as robust in the timeframe that we would like,” said Meyers.

The first year of funding from the European Commission provided for readiness checking, delivery of update 'quasi-patches,’ and a robust package signing system. The focus of this first phase of the Automatic Updates initiative has been on support for security updates in particular. 

In the second phase, as yet unfunded, we hope to extend this foundational work in the following ways:

  • Provide more robust composer support. The first phase of the automatic updates project should be compatible with composer-ready sites, but as the site’s composer.json file and vendor directory of a site change from the default, then more controls and though need to be implemented. 

  • Create an A/B front-end controller for the site being updated to further increase our confidence in the success of the update, allow for additional post-update testing and provide an easy mechanism to roll-back the update. This is also when updates will be able to move into Drupal core from the contrib project.

  • Expand to more types of updates (particularly further support for contrib updates), and also handle multiple updates in a row, for sites that are several versions behind. 

To accomplish all of this, we will continue to seek more funding and more partners. 

“I’m looking forward to seeing where this goes now that we have the first release out, ” said Hedding. “ There’s a larger community needed to get this initiative completed.”

The initial alpha version of the Automatic Updates module can be tested by the community right now. The plan is to: demonstrate Automatic Updates at DrupalCon Amsterdam this month, complete the scope of the funded work by the European Commission by the end of this year, and stabilize Automatic Updates by DrupalCon Minneapolis in May 2020. 

“The Automatic Updates initiative is designed to reduce the friction in keeping a Drupal site secure and up-to-date. The team behind the initiative is architecting a robust system, secure by design, and building components that can be shared with the broader PHP community,” said Tim Lehnen.

Many thanks to MTech, Tag1 Consulting, and the European Commission FOSSA program for funding this initiative. The Drupal Association is proud to be a part of this initiative.

Oct 03 2019
Oct 03

The Drupal Association collaborated on Automatic Updates, one of the Drupal Core Strategic Initiatives that was funded by the European Commission. We are excited to partner with MTech, Tag1 Consulting, and the European Commission FOSSA program on this new initiative and share information with you about its features.

Automatic Updates has three components.

Public safety messaging

This feature pulls a feed of alerts from Drupal.org directly into Drupal's administrative interface. This helps ensure that critical Public service announcements (PSA) or Security Advisories (SA) from the Drupal security team will be seen directly by site owners. 

  • This provides yet another communication mechanism before an update so site owners can verify they are ready for an upcoming update, before it lands.

  • The feed of alerts comes directly from the feed of PSAs and SAs that the security team and release managers are already producing. 

  • This will vastly increase the ability of the Drupal project to get the word out about critical and highly critical updates - ensuring the community can respond fast. 

Readiness checks, or “Pre-flight” checks

These automated and extensible readiness checks are built into the Automatic Updates system to verify that a site doesn't have any blockers that would prevent it from being updated.

  • These checks are slated to run at least every 6 hours on a site via Drupal Cron and will inform site owners if they are ready to auto update their site.

  • Examples of the readiness checks include:

    • Is the site is running on a read-only file system?

    • Have any files included in the update been modified from what they should be? 

    • Does the site still need to run database updates, etc.? 

There’s about 8 or 9 of these readiness checks and some are warnings (Cron isn’t running frequently enough to automatically update the site in a timely manner) and some are errors (the file system is read-only). Warnings won’t stop automatic updates, but errors will.

In place updates

Finally, the key pillar of the automatic updates feature is the update itself. Drupal.org generates a signed and secure package of files which can be overlaid atop the existing site files in order to apply the update. 

  • This update package is downloaded as a signed zip file from Drupal.org. The automatic updates module on the site then compares the signature of the zip file using drupal/php-signify, which is based on BSD’s Signify and libsodium to verify the package.

  • It then proceeds to backup the files about to be updated and updates the site.

  • If all goes well, the site is upgraded. If something fails, the backup is restored.

  • Many workflows are supported and you can customize how the updates are performed. Updates can flow through your CI/CD system, be staged for review and approval, and or automatically go live.

In the past few weeks, the Drupal Association has been invited to participate in TagTeamTalks, a new recorded talk series about various tech projects supporting the Drupal project. This bi-weekly format provides real-time shared collaboration and informative discussions. 

TagTeamTalk launched its webinar focused on Automatic Updates this week. The group dives deep into the nuts and bolts of Drupal's groundbreaking Automatic Updates feature, and the strategic initiative sponsored by the Drupal Association, MTech, Tag1 Consulting, and the European Commission. Guests include Preston So (prestonso), Contributing Editor at Tag1 and Moderator of the TagTeamTalks; Michael Meyers (michalemeyers), Managing Director of Tag1; Lucas Hedding (heddn), Senior Architect and Data and Application Migration Expert at Tag1; Fabian Franz (Fabianx), Senior Technical Architect and Performance Lead at Tag1; and Tim Lehnen (hestenet) CTO at the Drupal Association. Read the TagTeamTalks blog.

“Content marketing is one of the most effective ways to promote your brand and capabilities - it has been a really powerful approach for the organizations that I’ve worked for,” said Michael. “The goal is to give our team an opportunity to talk about the cool things they’re working on and excited about and to share it with people. It helps get the word out about the latest developments in the open source communities we contribute to, and it promotes Tag1’s expertise - it helps us recruit new hires, and drives new business.” 

Meyers is the Managing Director of Tag1, and has been involved with the Drupal community for over 15 years. He was Founder and CTO of the first venture backed drupal based startup, CTO of the first Top 100 website on Drupal, and VP of Developer Relations at Acquia before joining Tag1.  “The great thing about TagTeamTalks is that it doesn’t take a tremendous amount of effort or energy. Our engineers are subject matter experts. We decide on a topic for the week, spend 15 minutes brainstorming a rough outline as a guide, and then record the talk. We don’t want to be rehearsed. The conversation is what makes it dynamic and enjoyable for us to do, and for people to listen to. And, the team loves it because they want to talk about what they are working on, and this format doesn’t take a lot of time away from what they enjoy doing most - writing code.” 

Hedding is one of the top 20 most active contributors to Drupal 8, and is also the Drupal Core Migrate Sub-system Maintainer, a core contribution mentor, and a D.O. project application reviewer. “Auto Updates has long been one of the most requested Drupal features, it is a capability the platform really needs that will help everyone using Drupal. Now that the alpha is available, we need to early adopters to start using it, we need feedback so we can continue to improve it. We also need to get more people involved in development, and we need to raise more money from organizations to support the project - it might sound like a simple feature, but it is actually really complex and requires a lot of effort. TagTeamTalks are a great way to get the word out and to enlist support from the Drupal community.”

Lucas added, “The European Commission provided generous funding for this initiative. The focus has been exclusively or largely around the European Commission’s features and functionality. The funding is running out very soon. There is a need for other people to help continue to build Automatic Updates by adding the features they need with their developers or by providing funding.”  

“It is critical for us to spread the message and make that call to action; that this is a community-driven effort and that without continued community support, it is not going to be as successful or as robust in the timeframe that we would like,” said Meyers.

The first year of funding from the European Commission provided for readiness checking, delivery of update 'quasi-patches,’ and a robust package signing system. The focus of this first phase of the Automatic Updates initiative has been on support for security updates in particular. 

In the second phase, as yet unfunded, we hope to extend this foundational work in the following ways:

  • Provide more robust composer support. The first phase of the automatic updates project should be compatible with composer-ready sites, but as the site’s composer.json file and vendor directory of a site change from the default, then more controls and though need to be implemented. 

  • Create an A/B front-end controller for the site being updated to further increase our confidence in the success of the update, allow for additional post-update testing and provide an easy mechanism to roll-back the update. This is also when updates will be able to move into Drupal core from the contrib project.

  • Expand to more types of updates (particularly further support for contrib updates), and also handle multiple updates in a row, for sites that are several versions behind. 

To accomplish all of this, we will continue to seek more funding and more partners. 

“I’m looking forward to seeing where this goes now that we have the first release out, ” said Hedding. “ There’s a larger community needed to get this initiative completed.”

The initial alpha version of the Automatic Updates module can be tested by the community right now. The plan is to: demonstrate Automatic Updates at DrupalCon Amsterdam this month, complete the scope of the funded work by the European Commission by the end of this year, and stabilize Automatic Updates by DrupalCon Minneapolis in May 2020. 

“The Automatic Updates initiative is designed to reduce the friction in keeping a Drupal site secure and up-to-date. The team behind the initiative is architecting a robust system, secure by design, and building components that can be shared with the broader PHP community,” said Tim Lehnen.

Many thanks to MTech, Tag1 Consulting, and the European Commission FOSSA program for funding this initiative. The Drupal Association is proud to be a part of this initiative.

Oct 03 2019
Oct 03

Your website’s pages live in the World Wide Web. However, not all of them and not always should be displayed to users just as they are. There are plenty of reasons to control how they are accessed and displayed. 

In this post, we explain why, as well as describe how your website can benefit from one of the most interesting Drupal 8 modules for user access and page display control — the Rabbit Hole.

Why is page access control important?

There are slight nuances of page access control, some of which may not be obvious at first glance. Let’s look at a few.

  • Website page access control enhances your website’s security by prohibiting the views of restricted pages. They may contain sensitive or personal information that should not be seen.
  • Being able to control page access allows you to create interesting access-based functionality (like subscription content).
Paid subscription page in Drupal 8
  • This takes care of your website’s attractive look. Sometimes there are “building blocks” of a page layout that should not be seen by users because, for example, they are not properly themed.
  • For similar reasons, some pages should be hidden from from indexing by the search engines, so page access control also helps your SEO. 

All these and many other tasks can be entrusted to the Rabbit Hole module in Drupal 8. You can always rely on our Drupal team for installing and configuring it on your website and taking care of all page access nuances. In the meantime, let’s take a tour at how the module works. 

The essence of the Rabbit Hole module in Drupal

The Rabbit Hole module in Drupal really stands out from other modules by offering interesting options of what happens when someone is viewing a particular Drupal page (or entity). 

Instead of displaying the Drupal entity, the module can:

  • redirect the user to another page (with the possible use of tokens)
  • show “Page not found”
  • show “Access denied”

This Drupal module’s name might remind you of Alice in Wonderland's story or the concept of parallel universes. The expression “go down the rabbit hole” often means getting into a surreal situation. All this makes sense — with the Rabbit Hole module, your Drupal entities exist but their display is different. 

A few common scenarios (now exactly from the Drupal point of view):

  • You want to grant or deny user access to entity types or specific Drupal entities based on user roles — for example, to display paid content to users with a subscription. Special user roles can be allowed to bypass the Rabbit Hole action.
  • You want to hide the full display of nodes that only serve as building blocks for a Views slideshow or other Drupal page. They also should not be indexed by Google.

So let’s take a closer look at its work and go down the rabbit hole a little bit.

How the Rabbit Hole module in Drupal 8 works

Rabbit Hole module installation

The Rabbit Hole is a complex Drupal module that works with different types of entities — nodes, taxonomy terms, users, etc. 

So, when installed, it offers a bunch of submodules to be enabled alongside the main module. For most common situations, i.e. for working with content, we need the “Rabbit Hole nodes” submodule enabled. However, it depends on the task.

Being able to control page access allows you to create interesting access-based functionality (like subscription content).

Intalling the Rabbit Hole module in Drupal 8

Rabbit Hole module configuration

Rabbit hole settings for an entity type

The module’s page display and user access control settings are found in the entity type’s “Edit” page. You can set the behavior as:

  • Page redirect
  • Display the page
  • Page not found
  • Access denied

After selecting the behavior and clicking “Save,” you can check the result by opening the node page in an incognito window. You cannot see the result as admin, because the admin has the default permission to bypass the Rabbit Hole action. 

Rabbit Hole module options in Drupal 8

The special “Page redirect” option

If the “Page redirect” option is selected, we can enter the redirect path or use available tokens. For the latter case, the Token Drupal module also needs to be installed. 

Using page redirect, we can, for example:

  • redirect the users to the specially created subscription page asking them to subscribe to view the content
  • use one of the tokens like [site:login-url] that will take the user to the login page showing them they need to register to view the content
  • redirect the users from the individual nodes that are part of the slideshow to the slideshow page itself or the homepage.
Rabbit Hole module page redirects in Drupal 8

Rabbit hole settings for an individual entity

On the same dashboard, you can also check or uncheck “Allow these settings to be overridden for individual entities.” 

With this enabled, Drupal Rabbit Hole settings are also found on the particular entity’s “Edit” page.

Drupal 8 Rabbit Hole settings for an individual entity

Rabbit Hole permissions

To give permissions for particular roles to bypass Rabbit Hole action or to administer its settings, go to People — Permissions.

For example, you can create the VIP user role who will be able to view the specific content type, while others will see “Access denied,” be redirected to a subscription page, or login page.

Rabbit Hole module permissions in Drupal 8

Use the best options for access control in Drupal 8 

There are no limits to how deep this rabbit hole goes. The most fine-grained scenarios of page display and user access control in Drupal 8 are possible with the Rabbit Hole module. 

Just ask our Drupal team to create them for you, configure the module, or develop custom modules for your specific ideas!

Oct 03 2019
Oct 03

Someone asked in Slack today how to print the URL of the node that a paragraph is on. I was up to the challenge.

First off, you can do this with php in your .theme file quite easily, but I like to keep my template items in my templates.

Here's the code I used to first get the node id, then the node title, and then create a link from these two pieces of information.

  1. <ul>

  2. Node Id: {{ parent.nid.value }}
  3. </ul>

What this does is:

  1. Set a variable called parent - note is uses parent twice and then entity

    You won't see parent or entity in your kint/dpm/dd output, which is a pity because entity is great - load the entity you want to get information from.

  2. Use parent to then get the node id value and title value parent.nid.value and parent.title.value.
  3. Create a link using this variables.

It's quite simple really. You can now use this approach to get other fields/data from your host node.

Oct 03 2019
Oct 03

The proper use of internal linking can turn any website into a powerful marketing tool. It is a vital part of effective content writing strategies. In this post, we explore why it is so, as well as review a helpful module for smart content linking in Drupal 8 — D8 Editor Advanced Link. Let’s go.

What is internal linking on websites?

Internal linking is known as the practice of placing hyperlinks inside content leading to the other relevant pages within the same domain. Internal links to content often use the keyword-rich anchor phrases. 

Why is internal linking important?

  • It boosts SEO rankings by helping the search engines understand what your pages are about, offering them multiple entry points to crawl your websites, as well as increasing page authority.
  • Session duration grows — users visit more pages per session, which, among other things, is an important search ranking factor.
  • Internal linking enhances user engagement by offering them more and more relevant content. They simply cannot leave!
  • The conversion rate potentially grows because users remain interested. They get closer and closer to making the desired conversion.

Internal linking in Drupal 8

Content links should be handy both for content editors to create and for website readers to navigate through. Of course, it’s possible with Drupal 8! 

First, creating links in Drupal 8 is handy for anyone by default — thanks to the built-in CKEditor with a link icon on its dashboard.

Standard link creation in Drupal 8's CKEditor

Second, there are also tools for creating links in Drupal 8 CKEditor that further extend the standard functionality. They are meant for more advanced internal and, of course, external linking as well. Let’s look at how this job is performed by one of them — the D8 Editor Advanced Link module.

The D8 Editor Advanced Link module

The Drupal module D8 Editor Advanced Link increases the website’s usability both for the content creators and readers in the following ways:

  • Content editors and SEO managers can control more precisely from the CKEditor panel how the content links are displayed. 
  • Content readers can enjoy rich links and more convenient navigation.

These content linking capabilities include:

  • linking directly to exact phrases or even words on the page
  • adding CSS classes
  • making links open in a new or in the same window
  • displaying the link’s title on mouseover
  • adding relationships between the linked and the source page

“This is a super simple module that serves a very cool little purpose,” said Thomas Shean, a famous Drupal contributor, in the video tutorial about the D8 Editor Advanced Link.

The principle of the D8 Editor Advanced Link module’s work

The module provides advanced link creation by offering more attributes to be added to them. Let’s compare. The classic Drupal CKEditor has just one field for the URL during content linking:

Standard link adding form in Drupal 8's CKEditor

Everything is different with the D8 Editor Advanced Link module installed. It enriches the Drupal 
CKEditor’s content linking menu with advanced attributes such as: 

  • title
  • class
  • id 
  • target 
  • rel
D8 Editor Advanced Link module's capabilities

The difference is amazing. More details will be discussed in the “Installation and configuration” part.

Installation and configuration of the D8 Editor Advanced Link

  • Installing and enabling the module

First, we need to install and enable the D8 Editor Advanced Link module on the Drupal 8 website. 

Enabling D8 Editor Advanced Link module in Drupal 8
  • Preparing the text formats

Next, we go to Administration — Configuration — Content authoring — Text formats and editors and open the “Full HTML” format.

Text formats in Drupal 8

We make sure we have the “link” buttons on the active toolbar. If not, we need to drag them there. We will need them, as well as the “source” button.

Configuring Drupal 8's CKEditor dashboard for adding links

We should also look at the "Limit allowed HTML tags and correct faulty HTML" filter. 

  1. If it is unchecked, there is nothing else to do, since there are no restrictions in tags. 
  2. If it is checked, you can add more allowed HTML tags manually (such as "title," "class," "id," "target," and "rel")
  • Using the content linking attributes

When we have prepared everything, we can go ahead with our Drupal content linking. When selecting the part of the text that needs to be linked and clicking on the “link” button, we will see a form with advanced attributes that just need to be unfolded. 

Advanced link attributes in CKEditor Advanced Link module for Drupal 8
  • URL. This is the URL of the destination page.
  • Title: This is the text that is shown as a tooltip when the mouse hovers over the link.

Advanced section:

  • CSS classes. This is the place to add CSS classes. Multiple ones are supported, which should be separated by spaces.
  • ID. This allows you to use URL fragments and lead users to a specific portion of the page. For example, you list “ID2” at the end of the URL tag after the “#” symbol. Then you should mark where the “ID2” fragment begins inside in the source code of the destination page. Like this: <p id="ID2">.
Using URL fragments in Drupal 8
  • Target. This is a simple check/uncheck option as to whether the links should open in a new window or not.
  • Relation (rel). This is for adding relationships between the source and the destination document (e.g. “nofollow,” “noreferrer,” etc.).

Make your internal linking in Drupal 8 more advanced!

With Drupal, there are always more opportunities than you could imagine. Make your content workflows much smarter by installing the D8 Editor Advanced Link module or other modules for internal linking in Drupal. 

Our Drupal team is always there for module selection, installation, configuration, or creation from scratch!

Oct 03 2019
Oct 03

Drupal 8.8.0-alpha1 will be released the week of October 14th

In preparation for the minor release, Drupal 8.8.x will enter the alpha phase the week of October 14th, 2019. Core developers should plan to complete changes that are only allowed in minor releases prior to the alpha release. The 8.8.0-alpha1 deadline for most core patches is October 11. (More information on alpha and beta releases.)

  • Developers and site owners can begin testing the alpha after its release.
  • The 8.9.x and 9.0.x branches of core will be created, and future feature and API additions will be targeted against that branch instead of 8.8.x. All outstanding issues filed against 8.8.x will be automatically migrated to 8.9.x.
  • Once 8.9.x is branched, new alpha experimental modules will be removed from the 8.8.x codebase (so their development will continue in 8.9.x only). The Help Topics and Config Environment modules are new alpha stability modules in 8.8.x.
  • All issues filed against 8.7.x will then be migrated to 8.8.x, and subsequent bug reports should be targeted against the 8.8.x branch.
  • During the alpha phase, core issues will be committed according to the following policy:
    1. Most issues that are allowed for patch releases will be committed to 8.8.x, 8.9.x, and 9.0.x.
    2. Most issues that are only allowed in minor releases will be committed to 8.9.x and 9.0.x only. A few strategic issues may be backported to 8.8.x, but only at committer discretion after the issue is fixed in 8.9.x (so leave them set to 8.9.x unless you are a committer), and only up until the beta deadline.

Drupal 8.8.0-beta1 will be released the week of November 4th

Roughly two weeks after the alpha release, the first beta release will be created. All the restrictions of the alpha release apply to beta releases as well. The release of the first beta is a firm deadline for all feature and API additions. Even if an issue is pending in the Reviewed & Tested by the Community (RTBC) queue when the commit freeze for the beta begins, it will be committed to the next minor release only.

The release candidate phase will begin the week of November 18th, and we will post further details at that time. See the summarized key dates in the release cycle, allowed changes during the Drupal 8 release cycle, and Drupal 8 backwards compatibility and internal API policy for more information.

Bugfixes and security support of Drupal 8.6.x and 8.7.x

Drupal 8 core provides security coverage for the previous minor release as well as the newest minor release. Accordingly, security releases for Drupal 8.7.x will be made available until June 4th when Drupal 8.9.0 is released. Bugfixes that are not security-related will only be committed until Drupal 8.7.x's final bugfix window on November 6th.
Normal bugfix support for Drupal 8.6.x ended in May 2019. However security support is provided for 8.6.x until the release of Drupal 8.8.0 on December 4th, 2019.

Note: June 4, 2020 is both the scheduled release date of 8.9.0 and also the target release date for Drupal 9.0.0. If 9.0.0 misses the June window, its fallback release date is December 2, 2020. Support and security coverage for 8.7.x, 8.8.x, and 8.9.x will remain the same in either scenario.

Oct 03 2019
Oct 03

You will need to download and install the Drupal 8 Build Hooks module just like you would with any other Drupal module.

composer require drupal/build_hooks

Enable the Build Hooks and Build Hooks for Netlify modules.

Build Hooks Modules

There are some permissions that can be set for Build Hooks to determine who can manage the frontend environments and who can trigger deployments. For now we will just keep it for administrators.

Build Hooks Permissions

Go to Admin > Configuration > Build Hooks > Build Hooks Settings. On this page you can configure what entities should be logged. This is important as these “loggable” entities are the entity types that can trigger a rebuild on your Gatsby site. Leaving it at the default will work for our site, but this could vary depending on your needs and if you have other entity types that your Gatsby site uses for content.

Build Hooks Settings

Go to Admin > Configuration > Build Hooks > Frontend Environments and click the Add frontend environment button. In the Netlify section, click the Add new environment button. You now need information from your Netlify site.

Go to the Netlify website and log into your Netlify account. Select your Gatsby site and take note of your Gatsby URL (you will need that for the Drupal form). Click on Settings and under the Build & Deploy section find Build Hooks.

Click the Add Build Hook button.

Add Build Hook

You can give the build hook any name you want, in this example I just called in Content Rebuild. Set it to rebuild your Master branch. Click the Save button.

Build Hooks Configuration

Now take this Build hook URL and the URL for your Netlify site and drop it into the Drupal form. You can set the Label to whatever you want. Copy the API ID from your Netlify site (in the General Settings > Site details) section and drop that in the Drupal form as well. For the Branch name, enter master. For now you can leave the Deployment strategy as Manually only, however, this option is what would allow you to trigger rebuilds on cron run or when content is updated on the site.

Build Hooks Frontend Environment

Now go to an Article and change something. I will just change the title and image of the most recent article, but you could create additional articles or make any changes you want. Once your changes are ready, notice the Frontend environment is listed in your admin menu.

Build Hooks Admin Menu

If you click on the deploy environment you can click the Start a new deployment button.

Build Hooks start Deployment

If you go back to your Netlify site, you will see that a new deploy has been added and the site is rebuilding.

Netlify Build Status

Once it’s finished you can check out your updated Gatsby site!

Note: You don’t have to configure the oauth settings for the Netlify Build Hooks module in order to get this to work. If you want to make your Netlify logs private, then you will need to set up and configure the access token. This is available in the oauth settings on your Netlify account under the Access Token section.

Oct 02 2019
Oct 02

This left me looking for something else to step in as our Swiss Army knife that could help satisfy random functional requirements. After some googling and unsuccessful attempts with other modules I stumbled upon Business Rules. While still a fairly young module, it is already quite powerful and stable. To put it through its paces, I set out to try building a couple of rules in Drupal 8 that we used often in 7.  

Although the workflow is a little different than you may be used to in Rules the concepts and language are pretty much the same. At its’ core you have “Rules” that are the events that will trigger “Actions” when a specific set of “Conditions” and contexts are met. At any point in the process we can use “Variables” to dynamically add values to separate components of the rule. 

Unlike Rules, this module uses different sets of reusable configuration that you can mix and match to create your rule. Here’s a list and a brief rundown of the various parts.

Rule - Rules are the event types, this is where you’ll choose what you want to react on and bring all your other pieces of config together to trigger the desired action.

Condition - Conditions are used to evaluate an expression such as a data comparison, logical AND/OR, etc.

Action - Actions are where you’ll execute your desired functionality, actions can be placed within other actions or be part of conditions or rules. 

Variable - Variables store values for use within conditions and actions and can act as tokens to load in dynamic content where it is needed. 

If you’re a little confused by any of those descriptions I’ve created a little tutorial based on a rule we have used often in the past. It takes advantage of some neat functionality within the module to achieve the end result. 

Tutorial time!

What we’re going to do is create a rule that upon saving a new node of type “Page” it will send out a notification email to all users of a specified role. This is something that was a fairly simple action that could be fulfilled easily with Rules in D7 but is currently absent in the D8 variant without the use of a bunch of patches, one of which unfortunately is to core. You will notice though, that how we’re going to build it using Business Rules opens up the ability to create a list of email recipients from any arbitrary set of filters rather than just role. 

So I’m going to build this in a way that might seem a little out of order if you’re used to the Rules workflow. Trust me, it’ll make sense when it starts to come together. First we’re going to start by building a simple view. Select show “Users” and click save and edit. The only thing you’ll want to do is change the pager settings to “display all items” and add the filter “user:roles” filtered to the role you’d like to send the email to. You’ll then add “user:mail” as the only field, click save and you’re done with views config!

Views Configuration

Now that we’ve created the source of our user list we’ll head over to /admin/config/workflow/business_rules/collection First thing we’ll do in here is click the “Variables” tab and add a new variable. The type will be “View result variable” click continue and give it a label, description and select the view we just created.

Variable Configuration

Variable Configuration


Now that we have our variable setup we can start creating some actions. First we’re going to work a bit backwards and create the send mail action. Click over to the “Actions” tab and add a new action, select type “Send email” and click continue. Most of this form is fairly straightforward, add a label and description. When you get to the “To” field you’ll want to scroll down to the “Available Variable for This Context” fieldset and find the variable you setup. There will be a link that says “click here to see the view fields”, click that and grab the token for the “user:mail” field you setup earlier. Pop that token into the “To” field, fill out a subject and body and you should be good to save.

Action Configuration

Action Configuration

Next we’ll create another action this is where it gets fun, we’re going create and action that will loop through our views variable and perform our send mail action for each result. Click “add action” and choose “Loop through a view result variable” and click continue. On the next page select the variable you setup and then under “Items to execute during the loop” click “add action”. Here we will add our send email action we setup earlier and save. Now we’ve created an action that will loop through our user list and perform our send mail action on each result.

Action Configuration

Action Configuration

The last bit of config to tie this all together will be our rule, so head over to the “Rules” tab and click “add rule”. We’ll select “Entity insert’ for our “reacts on event” and continue. Fill out the usual fields and select “Content” for “Target entity type” and select your desired content type for “Target bundle”. We’ll then add our loop action we just completed under the “Items”  fieldset. We now have a fully functioning rule and as a bonus we get a nifty flowchart at the bottom so we can visualize the order of operations.

Rule Configuration

Rule Configuration

This just scratches the surface of what can be achieved with the module, more custom variables can be created to grab content from the node for use in the email body and logic statements and data comparisons can be used to run multiple branching actions on one event. So far everything I’ve tried to create has worked exactly how i was expecting it to. It’s a worthy replacement for rules which seems to have fizzled out at the moment. I’m looking forward to seeing what we’ll be able to do with it in the future, so get in there, try it out and help get it to it’s 1.0 release.

Oct 02 2019
Oct 02

DrupalCon Amsterdam 2019 is almost here and Amazee Labs has been busily preparing to share our most valuable practices at this year’s open source, community-driven event.

DrupalCon Amsterdam gathers more than 1,500 of the top digital minds that use Drupal for collaboration, knowledge sharing, friendship, and moving their projects forward. As proud sponsors, presenters, and attendees, we can’t wait to bask in so much shared expertise, to help create collaborative solutions, build more relationships, and shape the future of Drupal, open source and the world.

Check out the details on all our Amazee session and other must-see events:

Monday, 28 October

Felix Morgan will be presenting The Good, The Bad, and the Data: Marketing Strategies for Open Source Companies. She’ll discuss how marketing strategies that focus on leads are only addressing one aspect of successful positioning for companies promoting and using open source software. In this introductory session, Felix covers marketing best practices specifically for businesses that are creating, customizing, and contributing to open source software for their clients. Topics covered will include:

  • Personas and Stakeholders: beyond just the buyer.
  • Community and Narrative: the stories we tell are important.
  • Data: what to measure and when.

17:15-1800 in Room G102

Tuesday, 29 October

Jamie Hollern and Mattia Simonato will be presenting a session called Storybook and Drupal: Seamless frontend integration for decoupled sites. This session will explain how to use Twig with Storybook and Drupal to bring all the advantages of UI component libraries into a decoupled Drupal project, and how to build a component library for decoupled Drupal sites. 

16:40-17:00 Room G106

Social Events 

Make sure you join us for the official kickoff on Monday night! Located within the Exhibition Hall, the opening reception for DrupalCon promises to be a great time, followed by The International Splash Awards, celebrating the best Drupal projects in the world. 

On Wednesday, all women, trans* individuals, and those who identify outside of the gender binary are invited to Women in Drupal Luncheon to have lunch, mingle and meet Professor Sue Black and enjoy a small introduction before her Keynote speech: “If I can do it, so you can”.

Wednesday night, test out your Drupal knowledge! In the grand tradition of pub quizzes, capture the title of Drupal trivia champion and win small prizes to boot! You can even SUBMIT TRIVIA QUESTIONS here.

During the con, make sure you stop by Amazee Labs Lounge to kick back and charge up. We hope to see you in Amsterdam for all the passionate presentations and in-person, peer-to-peer discussions with Drupal Leaders.

Oct 02 2019
Oct 02

With its open source software and proven technology, Drupal is the first choice for many business owners when it comes to deciding a framework for their digital commerce business. After all, it’s a great CMS and ecommerce can be added to it through custom-built development (although custom might not be best, more on that later).

So, how about your business? Are you using Drupal and have an integrated or custom ecommerce component? Or, maybe you’re still deciding on which way to go to add ecommerce functionality? If so, let’s talk about the features that you probably wish to have in your website:

  • Are you looking for limitless product presentation and customization options?
  • Do you have plans to set up multichannel marketing and automation for your website?
  • Are you planning to integrate third party systems or run custom social media campaigns?
  • Do you need the flexibility to scale your website with endless options?

If you replied “yes” to any of the above questions, I would say custom-built ecommerce probably isn’t your best option. Nor do I think you need a pre-packaged SaaS solution, either. Before I suggest what you might want to do, let’s first look specifically at why custom ecommerce can present its own difficult challenges you definitely want to avoid.

5 challenges of a custom ecommerce system

Depending upon the complexity of requirements, it can take anywhere from months to years to set up a proper ecommerce site, no joke. Let’s say you’ve decided on building custom ecommerce functionality into your Drupal site. You’ve hired a developer, or maybe an agency or an internal team, to build it and have been able to get the ecommerce functionality that your business needed to get started. Great!

Now, after a year or so, you start thinking of scaling it by adding more features and functionality. This is where you may start running into challenges. Let me outline some of the more critical challenges you may face.

1. Handcuffed to an internal development team or outside agency

This can be a touchy subject but is probably the biggest liability for a company using custom development, so let’s start here. Ideally you’d still want to use that original development team who has all the knowledge of how your ecommerce component was made. But what if you can’t get the same developers or what if you have a falling-out with the agency who built it? Imagine how difficult it might be to onboard new developers when you yourself don’t know the code. Without a predefined standard or framework, how your ecommerce was built is anyone's guess. Significant cost will be added just to get any new developers up-to-speed.

2. Slow to implement new features and/or functionality

If you’re constantly feeling like you are reacting to the market rather than being a proactive innovator, this can be a direct cause of custom development. Simply put, everything you add to your website needs to be built and nothing is ready-made that you can just plug in. There is no time saving options that you can take advantage of to speed things up.

3. Inability to integrate with desired third party platforms

Integrations are one of the biggest benefits of an open source platform so it can be a real problem if you’re not able to integrate quickly and effectively.

Consider the cost that you have to bear when you are introducing something as simple as a new payment system or a new tax rule. Something that should be easy might take far too much time than it’s worth because you don’t have access to an underlying framework that was made specifically to make building these integrations faster.

Or maybe a robust new marketing tool comes in to the market and if you want to take advantage of it by integrating it with your ecommerce site. Let peace be upon you… this larger integration could be a monumental task. Every integration you require means more custom development, more cost, and lengthy timelines to completion.

4. Sacrificing the front-end customer experience

Custom development is built by developers first and so the actual look and presentation is often sacrificed for functionality. This isn’t meant to be a knock on developers, but the simple truth of the matter is that building code and building layout and design are two entirely different specialties. It’s very rare that you find someone with both skill sets. Without good UX and design, your customers will not get the front-end experience they expect which could impact your business performance.

If the makeup of your team includes designers and frontend developers, great! This would alleviate presentation issues, but these extra specialists will add additional expense to your custom build.

5. Unable to take advantage of the community

If all you have is custom functionality, you could be spending a lot of time and money developing features and/or integrations that potentially already would have existed if you had gone a different route. If you think about it, one of the great things about Drupal in general is all of the community-made modules that you have access to for extending your site’s functionality. While you’ll still be able to use them with your Drupal site, the custom ecommerce side of things doesn’t have that benefit. Everything you need must be built and probably only your team of developers can do it.

If not custom development, then what?

So what do you choose when custom development is a hassle and I’ve already mentioned that I’m not pushing you towards a SaaS solution. Well, my suggestion is that you should consider using the Drupal-native ecommerce module, Drupal Commerce. I mean, why marry off your Drupal site with someone else when we have fully compatible Drupal Commerce with us. It has been a proven ecommerce framework since 2011 (view usage stats) and lets you build a secure, scalable, SEO and mobile friendly ecommerce site in whatever way your business needs! It’s framework has been made for extending. It’s documented and has a large community centered around it (which Acro Media is a part of). Maybe you’ve heard negative rumblings about it in the past, and if so, I think you should look again.

Here’s how I justify my view, or rather, how Drupal Commerce can help you fulfill your ecommerce requirements.

Top 7 reasons why you should use Drupal Commerce

Below are the top 7 reasons why you should be selecting Drupal Commerce over any custom or off-the-shelf hosted solutions out there.

1. Commerce and content will easily get along

When we use Drupal Commerce with Drupal, it will let you manage your content strategy right within your ecommerce platform. You can easily manage complex relationship between products and other contents in the site. The CMS part will let you create custom landing pages to attract the attention of users while flexibility in the ecommerce part will make it easier for a site owner to manage new products and its workflow.

2. Requires less development effort

When you need a content site as well as an ecommerce site, With out-of-the-box modules and pre-configured distributions, a Drupal Commerce store can be easily setup without much hassle. Plus, when custom development is required, Drupal’s strict code standards ensure that any competent Drupal developer can easily jump-in and understand what’s going on. You’re not stuck with just a single developer or agency to manage your project. You have the freedom to shop around.

3. Highly customizable and scalable

Unlike most SaaS systems, Drupal and Drupal Commerce can be customized according to the business’s needs. Even though Drupal and Drupal Commerce are architected to be extended limitlessly, all the extensions follow a general standard. This makes sure that when the next person with knowledge in Drupal Commerce comes along, either from a development or administrator standpoint, this person can handle the software easily. New features or integrations can be performed faster which takes the system scalable to the next level.

From a performance perspective, Drupal and Drupal Commerce are more than capable of scaling to meet the needs of small business all the way to enterprise. Need proof, we’ve tested their performance and you can see the results here.

4. Integration with external systems

This is the core strength of Drupal. Drupal modules have been built so that they can interact with one another easily. If you need to connect your ecommerce to payment gateways, marketplaces, CRMs, analytics tools, SEO tools, shipping providers, the list goes on, they can be done as quickly as within a few hours (integration depending, of course). Drupal takes an API first approach which is what you want for integrations now and in the future.

5. Free and open source

Unlike proprietary ecommerce systems, Drupal Commerce is open source and there is no licensing cost or usage limits. Unlike other open source solutions, there are no paid modules within the Drupal community. You have access to it all and can extend and customize it in whatever you like. By saving money on the software, you can instead invest that money in your Drupal based platform and your own business needs.

6. Community support

Drupal has an immensely large community with thousands of active users helping to build and maintain the core software and its extensions. The features you require for your site could be already created by someone else and available on Drupal.org, waiting for you to take advantage of. Various IRC channels, blogs, forums, agencies, etc. will help you in case you are blocked or need advice on almost anything related to Drupal.

7. Solid future version support

With the release of Drupal 8, we are quite clear on how migrations to the next version will happen. If your site is already using Drupal 8, then you don’t have to worry about Drupal 8 being unsupported by community because you will easily be able to migrate your site to Drupal 9 (and future versions) when the time comes.

It doesn’t mean that your Drupal 7 site will be isolated either. The stable Migrate module in Drupal 8 will make a migration of your Drupal 7 site to Drupal 8 easier than ever before, saving time and money when adopting the newer version.

Demo Drupal Commerce today! View our demo site.View a Drupal Commerce demo

To help show you what a Drupal Commerce ecommerce solution looks like, check out our fully functional Drupal Commerce demo site, Urban Hipster.

Here you can click around and “buy” products just like you would using any real ecommerce site. You will see content pages, a best-practice product catalog, a variety of product types, and more. This feature rich demo was made to give you an idea of what your Drupal Commerce site could do, but of course this is just one example. The possibilities are endless.

Plan your move to Drupal Commerce

Leave custom development and integrated ecommerce frameworks behind by starting your move to Drupal Commerce today. Acro Media is an ecommerce consulting and development company that specializes in open source and Drupal Commerce. Take a look at our Drupal Commerce solutions today and let us know if you have any questions. We’d love to help you understand if Drupal Commerce is a good fit for your business.

Oct 02 2019
Oct 02

Mediacurrent works with a variety of customers across many verticals to build secure Drupal applications. We sometimes encounter strict hosting policies, including on-premise requirements.

One of the great benefits of decoupling Drupal from the web frontend is the ability to move Drupal’s CMS to a secured environment that is only accessible from a VPN or private network. Statically generated frontends like Gatsby further reduce vulnerabilities to provide a robust security architecture overall.

This article will outline three options for securing Drupal, two of which include hosting the CMS behind a Firewall only accessible by a user on a secured network. The third option is the more common alternative that provides some security but does not completely lock down the CMS.

 All options provide added security benefits over a traditional hosted Drupal application. Let’s weigh the pros and cons of each approach. 

Option 1 - Self-hosted

self-hosted option with Gatsby, Jenkins, Gitlab, Drupal

The first option runs completely on self-hosted hardware, which could be stood up on-premise if so desired. While this type of approach is becoming increasingly rare, there are still contracts in the government and financial space that require all self-hosted applications. 

This method will keep Drupal locked down on a web server behind a firewall that only privileged CMS users can access. GitLab is a great choice when Git repositories need to be self-managed but still require robust features that GitHub, BitBucket and GitLab’s cloud offerings provide. 

A Jenkins server can be stood up to handle the automation of Gatsby builds. This includes compiling the artifacts that will be deployed to the public web server on the right-hand side. For deployments, a read-only Git deploy key is a secure way of grabbing the latest Gatsby release.


  • Ability to completely lock down the CMS environment and Git repositories


  • Must maintain web servers, Gitlab server, and automation (Jenkins)
  • Most expensive solution to stand up and maintain

Why you would use this solution:

  • Strict security requirements
  • On-premise requirements for servers

Option 2 - Self-hosted + Cloud

self-hosted Drupal setup with cloud

The second option keeps the CMS web server behind a firewall while leveraging Cloud services for the rest of the architecture. As with the first solution, only privileged users will be able to access the CMS server. In this scenario, a Cloud Git service like GitHub will host the Gatsby source files and Netlify’s static host will run the compiled website. Netlify’s CLI can be used by the webserver behind the file server to rebuild artifacts when content is updated. A Jenkins server is a good way to handle the automation of Gatsby builds.


  • Relatively straightforward to set up
  • An easier solution to maintain than completely self-hosted
  • Saves cost over a self-hosted solution
  • Leverage great features from Netlify (High availability, A/B testing, etc.)


Why you would use this solution:

  • Balance security while leveraging Cloud
  • A desire for CMS to be completely locked down from outside access

Option 3 - Private with Cloud

private hosting with cloud

The last solution will not use a Firewall but instead obscure access to the webserver and in some cases add basic auth for additional protections. A CDN is recommended for inline images so that media is server from a service like Cloudfront instead of directly from the server. This method will leverage a Drupal managed host provider like Acquia or Pantheon.


  • Able to use image CDN for inline Media
  • Can add light protections like basic auth
  • No server maintenance
  • Managed host providers provide enterprise support and features


  • Server is still publicly accessible, so less secure than solution behind firewall

Why you would use this solution:

  • CMS does not need to be locked down
  • Security through obscurity, CMS server not indexed which shields from most attacks

Inline Images

One challenge with Gatsby is that it won’t automatically handle inline images coming from Drupal’s CMS. Gatsby does convert images that are served from Drupal’s JSON:API but it does not do anything with image paths that exist in say the body Wysiwyg HTML for any particular page. 

One option is to use the TUI Editor module that converts these images to Gatsby image assets: https://www.drupal.org/project/tui_editor

Another option would be to integrate the Drupal Amazon S3 module. This can be combined with Amazon Cloudfront to serve inline images from a secure server. Whenever a file gets saved it would be pushed up to Amazon S3 through an API and then made publicly available by Cloudfront. The AmazonS3 module allows developers to rewrite image URLs to the publicly accessible URLs that will be served by Gatsby.

Your Feedback

We hope that you have found this article helpful. Want to know more? Talk to our team of experts to discuss a solution that works for your organization.

Comments or questions? Hit me up at @drupalninja

Oct 02 2019
Oct 02

September was another exciting month for the Drupal community, with quite a lot of important pieces of news. Our recap of the top Drupal blog posts from last month covers these, as well as some interesting posts by Drupalers concerning the future of Drupal and open source in general. Enjoy!

Drupal Association Announces Newly Appointed Board Members

We kick off September’s recap with a blog post written by the recently appointed Director of Marketing and Outreach at the Drupal Association, Carole Bernard. In the post, she announces the newly appointed board members and welcomes them into the Drupal association. 

These new members are: Grace Francisco, Lo Li, Owen Lansbury, Ryan Szrama and Leslie Glynn who was selected by Drupal community members for the community-at-large seat. The post includes more information about each of them, as well as personal statements where each of them relates what joining the Association means to them. It concludes with a list of other board members and some general information about Drupal and the DA. 

Read more

Balancing Makers and Takers to scale and sustain Open Source

The next post we wanted to highlight is a truly excellent post by Dries - and, according to him, also the longest one he’s ever written. In it, he addresses the challenge of successfully scaling and sustaining open source. 

The post begins with some background, then Dries opens the discussion by defining the “Makers” and the “Takers” in open source. “Makers” are those organizations that contribute meaningfully to an open-source project, while “Takers” only benefit from the open-source code without really giving back.

To bridge this gap between Makers and Takers and balance them out, Dries suggests three ways of scaling and sustaining open source: appealing to organizations’ fairness principle; encouraging end users to offer benefits to Makers; and experimenting with new licenses.

Read more

Healthy Open Source Maintenance

Published on the same day as the previous post, this one by Lullabot’s Mateu Aguiló Bosch touches the same problematic as Dries’ one - healthy open source maintenance, as the title clearly states. 

The success and growth of an open source project relies on a lot of people contributing to it. But, while a lot of them may be sponsored, there’s a huge number of those who are giving their free time without getting anything in return. Yet they are still expected to put in as much effort and deliver the same quality as the sponsored contributors.

Mateu proposes that we implement a “Healthy Maintainer Manifesto” which would allow individual maintainers to specify to what extent and/or in what way they maintain the project. This would take a lot of pressure off maintainers and enable them to continue contributing in a sustainable way.

Read more

Acquia Acquires Cohesion: Enabling The Fastest Drupal Site-Building

We continue with an important piece of news for Acquia and Drupal - Acquia’s acquisition of Cohesion, creators of the low-code DX8 platform. DX8 enables those with little or no coding skills, such as marketers and site builders, to more easily and quickly create immersive digital experiences. This frees up developer capacity and allows developers to focus their attention on more advanced projects.

The acquisition is perfectly in line with Acquia’s goal of empowering their clients by providing them with a diverse set of tools they’ll need in the constantly shifting digital economy. Since a good customer and user experience are crucial to a business’ success, the ability to more easily provide personalized and relevant experiences will be extremely important for any brand.

Read more

Making Sense of the Vista Investment in Acquia for the Future of Drupal

In the fifth post on this month’s list, Phase2’s CEO Jeff Walpole shares his thoughts on another major piece of news for Drupal and Acquia - namely, the $1B Vista investment in Acquia - and what this means for Drupal going forward. 

He speculates on what both Vista and Acquia are planning to get out of this. For Acquia, the investment will allow it to better position itself on the market of DXP (digital experience platforms) as a worthy competitor to leaders in the field such as Adobe and Sitecore.

For Drupal and open source in general, this means more Drupal and Mautic events; increased contribution to open source code; and an improvement to diversity in our communities. 

Read more

How Content Editors Use the Drupal Layout Builder

The Layout Builder is a recently stable and extremely powerful feature of Drupal that allows for easy creation of pages with a drag-and-drop interface. Suzanne Dergacheva of Evolving Web has conducted a study together with her team to find out how intuitive and user-friendly the module actually is to content editors. 

Participants were tasked with creating and editing blocks, as well as editing the layout and sections, with the Layout Builder. They also performed the same task by using the Paragraphs module and WordPress’ Gutenberg editor, respectively. Paragraphs turned out to be less flexible than the Layout Builder, while Gutenberg was quite similar to it. 

Some of the most common problems that several participants encountered were unintuitive terminology, e.g. they would expect to have the option to “edit” rather than “configure”, and the misleading nature of the “Add Block/Section”. Luckily, there’s a lot of work being done on the Layout Builder, so we can expect the interface to just keep getting better. 

Read more

Commerce 2.14 adds Address Book to core

Next up, we have a blog post by Bojan Živanović of Centarro (formerly Commerce Guys), the creators and maintainers of Drupal Commerce. One of the most highly desired features has been storing and accessing customer information in an address book, something that was possible in Drupal 7 thanks to the Commerce Addressbook module.

In Drupal 8, address book is now a core feature of Drupal Commerce. Bojan’s post discusses the features of the address book’s UX, e.g. an “Address book” tab added to user pages and the ability to turn off the collection of billing information. The new interface is more smoothly navigable and easier to use than that of Commerce Addressbook.

Read more

A Partner for European Digital Agencies

We finish with an interesting post by Dropsolid’s Dominique De Cooman in which he explains their vision for Drupal to improve digital experiences by enabling teams and agencies to better connect. He also emphasizes the need for a foundational European agency to serve as a basis and help other European agencies.

Due to their active involvement in Drupal and the many tools they offer, he proposes Dropsolid as this agency and invites everyone to meet up at DrupalCon Amsterdam and partner up. He concludes the post by listing Dropsolid’s sessions for the upcoming ‘Con, each of which is aimed at helping attendees provide better digital experiences to their customers.

Read more

This was our selection of the top Drupal blog posts from September. We have some cool blog posts planned for this month, so, if you enjoy reading our blog, make sure to check back and make sure you don’t miss any of them! 

Oct 02 2019
Oct 02

Start by going to your Gatsby site on the command line and committing all your changes to the Git repo. If you are using command line git, the following commands should get you where you need to be:

git add .
git commit -m “Create base site that pulls content from Drupal”

Now head on over to Github (you could also use Gitlab or Bitbucket), log in, and create a new repository. You will want to add this new repo as an origin for your local Git repository. Something like the following command (replace the Git repo URL with your correct URL).

git remote add origin [email protected]:smthomas/gatsby-tutorial.git
git push -u origin master

Now head over to Netlify.com and create an account if you don’t already have one. You will need to use your Github, Gitlab, or Bitbucket account so it can pull in your Git repository you just created.

Once you are logged in, click the New site from Git button.

New Site from Git button

Select your Git provider

Select Git Provider

Select the team and branch you want to deploy to Netlify. The basic build settings should be able to be left at the default. You can use the Advanced build settings section to create environment variables. An example of this would be to pass in the Drupal username and password that can be used to authenticate with your Drupal site (this would require changes to your gatsby-cofig.js file). Once you are ready, click the Deploy site button.

Deploy settings

By default it will give your site an interesting and occasionally funny name. This name will be part of the domain name your site will be accessible at. Don’t worry, you can use your own custom domain if you want. It will take a few minutes for your site to build. This will depend on the size of your site.

Note: You will need to make sure your Drupal site is publicly available in order for your website to build. If you wanted to use a local copy of your Drupal site then using the Git deployment method will not work.

New Netlify Site

You can now follow the steps to set up a custom domain or click the created url to view your new live Gatsby site!

Oct 01 2019
Oct 01

Meet Gatsby, an open source React-based framework for building super fast websites and apps. 

In this episode, we talk with Jason Lengstorf to discuss the GatsbyJS project and what it solves.

Audio Download Link

Project Pick:



  • What's your role at Gatsby, when did you start?
  • How did you get involved in the project? 
  • What did you do before Gatsby?
  • What is Gatsby?
  • How do you feel about the response from the community about Gatsby?
  • Did you think it would take off as it has?
  • Why should an org choose it over a traditional CMS?
  • What separates Gatsby from other static site generators?
  • What features is the team currently working on?
  • Closing comments


Oct 01 2019
Oct 01

If ADA compliance was not on your radar screen at the time your website was developed, you are in good company.

But in the current environment, accessibility of your digital assets may be an ADA-mandated fact of life. A recent flood of lawsuits is driving home this reality and the fact is, sometimes the search for fast fixes can lead to unintended consequences. Of course, your objective is to get your website into conformance as efficiently and cost-effectively as possible. 

Even though the time and resources associated with making your website and apps accessible is something that you might prefer to not have to deal with, at Promet Source we’ve discovered that expanding digital accessibility actually provides an incredible opportunity to gain a more expansive, empathetic, and inclusive view of customers and constituents. 

[embedded content]

Your Partner in Accessibility

Interested in learning more about the advantages of both automated and manual accessibility testing and website remediation to help ensure your website is compliant with accessibility standards? With Promet Source, you get a strategically sound, sustainable solution -- the advantage of an accessibility partner who guides you through the process of actually getting your underlying code into conformance with accessibility guidelines. 

Our process reflects the specific recommendations of current Web Content Accessibility Guidelines and the expectations of the ADA.

I look forward to speaking with you about an accessibility solution that incorporates a range of advantages.

Click here to let me know how we can help.

Oct 01 2019
Oct 01

Drupal Modules: The One Percent — Views Send (video tutorial)

[embedded content]

Episode 54

Here is where we bring awareness to Drupal modules running on less than 1% of reporting sites. Today we'll investigate Views Send, a module which permits you to execute personalized mass mailings to recipients referenced in a view.

Oct 01 2019
Oct 01

“Do I really need Drupal support and maintenance services for my website?” 
If this is the question that you have, you probably think that your quest for a public-facing and a customer-attracting tool ends with the development and deployment. Is content updating enough to stay current and relevant? How important is it really to have a support and maintenance plan for your Drupal website? Let me give you five of the most important reasons why you may want to think about Drupal support services–

1. Continuous Safeguarding 

No doubt Drupal is one of the most secure CMS’s today but only if your Drupal website is updated with security upgrades and patches regularly. The Drupal community and the Drupal security team work hard towards building security patches, fixes and upgrades that all add up to building a sustainable ecosystem. These security fixes and upgrades need to be performed immediately to avoid trouble. If you’re still on Drupal 7 (or Drupal 6), migrating to Drupal 8 is crucial to keep your website secure. Drupal 7 support for security will be provided by the community till November 2021. To ensure complete security of your website, you need regular Drupal support and maintenance services.

2. Fixes and repairs

No bug is a small bug. Even the smallest bug/error when ignored, could cost you a customer. Bugs and errors can emerge out of nowhere for multiple reasons. It could be because of a hurried up coding and deployment, insufficient testing, miscommunication, lack of expertise, untrusted third-party tools and more. Some of them are critical and might need immediate attention while some could just lie there unnoticed (which can come to light at wrong times!). Nonetheless, neither of them can be overlooked for a customer focused Drupal website. 

3. Up-to-date

From Drupal 8 onwards, upgrades and minor versions are released more frequently to avoid long waiting times for updates and enhanced features. While Drupal 6 has already reached End-of-life (no security fixes/enhancements), Drupal 7 will continue to only receive security support till November 2021. If you still need Drupal 7 support after that, you will need to contact a vendor who provides Long Term support (like the LTS plan for Drupal 6 support). However, if you need to stay updated and leverage Drupal 8’s new and powerful features, it is about time to upgrade to Drupal 8. Staying up-to-date with Drupal’s latest version will allow you to provide your customers with compelling and fresh digital experiences.

4. On top of things

Growing and scaling up your business calls for proactive and future-proof solutions. If you want to gain an edge over your competition, you have to stay on top of things. Things you will need for this? Frequent content updates and enhanced features. Of course, with Drupal, updating content is easy enough and does not need a technical background. Nonetheless, to remain competitive, you have to add new features and enhancements that can improve your user experience and customer journey. User behaviour is never constant, which is why your website needs to stay fresh and align with your user’s needs and business goals. 

5. Focus on your business goals

An intelligent businessman had once said, “Focus on what you do really well. Let others help you with what you are not good at.”  Making sure that your website needs security updates, fixes, enhancements, updates, etc. needs a lot of time and attention. Businesses are most successful when they focus on what they are best at. Unloading your Drupal support and Drupal maintenance job to a technology partner who is does it day-in and day-out is your best bet.                                                                                                                                     
If your Drupal website is critical to your business, here are a few more reasons you may want to go for professional Drupal support and maintenance: Improve and maintain your Search Engine Optimization (SEO) ranking, Third-party API updates, Drupal core module updates, contributed module updates, scaling your website/application, website performing reporting, Drupal interface improvements, and more.

drupal maintenance

Now that we have established a few strong reasons on why you need Drupal support and Drupal maintenance services, here are a few things you need to know before you choose a technology partner to help you with it.

  • Website Audit – Your Drupal support and maintenance service partners should perform a comprehensive audit of your website. This audit should be able to give you a clear picture of where your website stands in terms of performance, security issues, bugs and SEO status. Your Drupal website’s support and maintenance plan should be based on these factors. 
  • Levels of Support – Different types of websites will need different levels of support. Some of them include-
  • Drupal Security Update Support – Security updates, upgrades and applying patches.
  • Drupal Module Upgrades Support – Module upgrading to leverage better features and/or to remain compatible.
  • Migration Support – Ensuring smooth transition and uptime during migrations, migration bug fixes, content migration support, database migration support, etc.
  • Code Reviews – Reviewing code for structure, quality, logic, performance, testing, design, usability, readability, functionality, etc. 
  • Performance testing and tuning Support – Check and support for performance on website’s expected workload, response time, speed, robustness and scalability.
  • Integration Assistance – Support of existing integrations and during new integrations with third-party applications and APIs.
  • Drupal 6 Support – Long Term Support plan (LTS) and Drupal maintenance
  • Drupal 7 Support – LTS after Nov 2021, Drupal 7 module support
  • Turn-around times – Turnaround and response times for your website depends on the type of an issue/support needed. For emergency issues like a serious bug or a security loophole, the turn-around time should not exceed 24-48 hours. While support for new Drupal features or enhancements or customizations can range from 2 weeks to more depending on the complexity of the task.
  • Dedicated VS Shared Support – As the names suggest, with dedicated support you get a Drupal expert/team of Drupal experts who will exclusively support your website(s). You can pay a monthly fee to carry out Drupal support and maintenance tasks continuously and as and when they arise. This ensures that your website is customized and well looked-after both proactively and on-demand. Most support service providers also offer to utilize your unused support hours into the development of a new feature or enhancing exciting features. 
    You could also opt for shared support where you will be sharing resources with other companies as well. Works best when your website is not very complex does not include customizations and does not require continuous monitoring.
  • Update Release Schedule - Drupal 8 is not just a build-up upon Drupal 7. It has been re-architectured to improve adoption among businesses and Drupal developers by adopting more futurist frameworks (Symfony, Twig, PHP 7+, BigPipe caching, etc.). To be able to stay secure and compatible with the other building blocks, Drupal 8 has adopted a continuous innovation model and releases frequent minor version updates (every 6 months). Your Drupal support and maintenance service partners should ensure regular scheduled updates of Drupal’s version releases, bug fixes, and security releases.


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