May 08 2019
May 08

Drupal released its latest version - Drupal 8.7.0 on 1st May 2019. The latest version of Drupal 8.7.0 accomplishes tasks like making page layouts, media management and decoupled web experiences easier to manage and deliver, conserving production time and effort and it was recently revealed at DrupalCon Seattle 2019.

Core objectives when developing Drupal 8.7 were to:

  • Make Drupal easy for content creators and site builders
  • Make Drupal easy to evaluate and adapt.
  • Keep Drupal impactful and relevant
  • Reduce total cost of ownership for developers and site owners

JSON:API at Core:

The latest Drupal 8.7 update includes JSON:API as a part of the Drupal core!  
This makes Drupal an API first platform for building both decoupled and coupled applications. JSON API module exposes the entities as a standards-compliant web API and data can then be pulled from third-party URLs or API’s.

JSON:API is designed specifically to minimize both the number of requests and the amount of data transmitted between clients and servers. This efficiency is achieved without compromising readability, flexibility, or discoverability.

By enabling the JSON:API module, you can immediately create a full REST API endpoint for every type(content, taxonomy, user, etc.) in your Drupal application. JSON:API inspects your entity types and their bundles to dynamically provide URLs to access every entity using the standard HTTP methods, GET, POST, PATCH, and DELETE.

JSON:API adopts the philosophy that the module should be production-ready. This means the module is highly opinionated about where your resources will reside, what methods are immediately available for them, and allows Drupal Core's permissions system control the access. The configuration pages are no longer present in this upgrade (Drupal 8.7). This means that you can get an API-driven Drupal application up and running with minimal effort.


Watch the JSON:API demohere!

Stable Layout Builder

The Stable Layout Builder was released with Drupal 8.6 as an experimental module and now it is stabilized in Drupal 8.7.

Drupal 8's Layout Builder allows content editors and site builders to easily and quickly create visual layouts for displaying content. Users can customize how content is arranged on a single page, across content types, or even create custom landing pages with an easy to use drag-and-drop interface.

Explore the sections below to find out how to get started with Layout Builder and how to apply it to templated content types. Layout Builder is anchored on one of Drupal’s stronger features – the ability to create structured content; but it faces some of the same accessibility challenges encountered by  WordPress’ Gutenberg editor. Drupal's Layout Builder offers a single, powerful visual design tool for three use cases:

Layouts for templated content: The creation of "layout templates" that will be used to layout all instances of a specific content type (e.g. blog posts, product pages).
Customizations to templated layouts: The ability to override these layout templates on a case-by-case basis (e.g. the ability to override the layout of a standardized product page).
Custom pages: The creation of custom, one-off landing pages not tied to a content type or structured content (e.g. a single "About us" page).

Layout builder

Watch the Demo of Drupal 8 Layout Builderhere!

Media Library

Drupal 8.6 had Media Library in the Drupal core, which was a part of Media Initiative. In Drupal 8.7 Media Library comes with a new stylish and handy user interface. Which makes it nice to look and nice to work with. Media library is now stable.



Third-party library updates

  • Guzzle has been updated from 6.3.0 to 6.3.3.
  • Previously, Drupal packaged a copy of the PEAR Archive_Tar library in a Drupal core namespace. In Drupal 8.7, this has been deprecated and replaced with a proper Composer dependency on this library. The dependency has also been updated to version 1.4.6.
  • Stylelint has been updated from 9.1.1 to 9.10.1. Stylelint version:
  • Coder to ^8.3.1
  • CKEditor has been updated to 4.11.3.
  • Twig has been updated to 1.38.4.
  • A number of other PHP dependencies have also been updated, including:
  • composer/installers to 1.6.0
  • composer/semver to 1.5.0
  • egulias/email-validator to 2.1.7
  • paragonie/random_compat to v2.0.18
  • Most symfony/* components to v3.4.26
  • symfony/http-foundation to v3.4.27
  • symfony/polyfill-* to v1.11.0
  • typo3/phar-stream-wrapper to v2.1.0

Other updates you can find in Drupal 8.7 are:

Internet Explorer 9 and 10 will not be supported in Drupal 8.7

The 8.7.0 release is a final goodbye to Internet Explorer 9 and 10. It removes a workaround that still existed in D8.5 and D8.6 Issue link: Internet Explorer 9 and 10 support dropped from Drupal 8.4.x

Goodbye PHP 5 support

Drupal 8.7 is the last release to support PHP 5. Updates for existing websites that use PHP 5 are still possible, but a warning will be displayed. In release 8.8, Drupal security updates will require PHP 7.

Entity updates will not be automatic

In new Drupal 8.7.0 release, the support for automatic entity updates has been removed. The reason is data integrity issues and conflicts. So the drush entity: updates (drush entup) command no longer works. Changes to entities will now be performed using standard update procedures.

Symfony 4 and 5 compatibility issues resolved

Additionally, numerous critical Symfony 4 and 5 compatibility issues are resolved in this release.

Changes to base themes (Stable, Classy)

This release includes some small changes to the core's base themes (Stable, Classy). Themes that extend one of these base themes should review the following changes. JavaScript messages template changes. Pager CSS ID changed from "pagination-heading" to a unique ID.

These Drupal upgrades are gradually getting us ready for Drupal 9. If you have questions regarding Drupal upgrades we are here to help. Drop us a word at .

May 08 2019
May 08

Your browser does not support the audio element. TEN7-Podcast-Ep-059-2019-Twin-Cities-Drupal-Camp_0.mp3

Chris Weber and Dan Moriarty, volunteer organizers for the 2019 Twin Cities Drupal Camp are today's podcast guests. We'll be talking about the changes to this year's TCDrupal Camp and fond memories of previous camps. 

TCDrupal Camp is a three-day conference for open source enthusiasts, designers, hackers, geeks, developers, UI experts, IT managers and anyone else that wants to find out more about Drupal. It’s a great place to learn, code, network and have fun with your fellow Drupalistas.

Host: Ivan Stegic
Guests: Chris Weber, software engineer at The Nerdery and Dan Moriarty CEO and Creative Director at Electric Citizen
Running time: 32 minutes 

In this podcast we'll discuss: 

  • TCDrupal Camp's location at St. Thomas
  • Format changes: three days instead of four, 45-minute talks
  • Fewer days, but just as many parties! And food trucks, board gaming and karaoke
  • Focus on expanding talks to topics outside of just Drupal 
  • The House of Balls, a Minneapolis institution
  • How TCDrupal Camp's spontaneity is what makes it great
  • TCDrupal Camp's history
  • So much Drupal goodness coming to Minneapolis (DrupalCon 2020) how will we manage it all?



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'm your host Ivan Stegic. My guests today are Chris Weber and Dan Moriarty, two of the volunteer organizers of this year's Twin Cities Drupal Camp.

TC Drupal Camp

IVAN: Chris is a software engineer at The Nerdery, and Dan is CEO and Creative Director at Electric Citizen. Hello Chris and Dan. Welcome to the podcast.

CHRIS WEBER: Hello, hello.

DAN MORIARTY: Hey there. Thanks for having us.

IVAN: Oh, it’s my pleasure. Dan Moriarty, I love saying your name. The whole Sherlock Holmes thing, I just love it.

DAN: Yeah, and I will take that anytime. I'm always happy to reference my evil ancestors. [laughing]

IVAN: [laughing] Oh wait! Relation? Are you related to a fictitious person?

DAN: I’ll claim that.

IVAN: [laughing] That's awesome. Well I'm glad that you are on the show with us today talking about Twin Cities Drupal Camp this year. So, Chris, tell us about the camp itself. When and where is it this year?

CHRIS: Well this 2019 version of our camp, is going to be at St. Thomas which is in downtown Minneapolis. We've had it at St. Thomas for a number of years, so it should be familiar to folks that have gone to the Twin Cities Drupal Camp before. It's a really good location, really large open space, very, very lighty and breathy. We’ll be having it on June 6th through June 8th. June 6th is a training day. The 7th will be filled with excellent talks, sessions. And then the 8th will be kind of something a little bit new that we're doing. We're having an unconference on that day, as well as providing a space for people who want to sprint on core contributions. And we’re very excited to have the camp again here in the Twin Cities.

IVAN: And so that's a little different than how we've done it, I would guess, every year since we started, although I don't remember the first year. But that's a Thursday, Friday, Saturday, as opposed to Thursday, Friday, Saturday, Sunday. So, we have one day of sessions as opposed to two. Dan, do you want to talk through kind of the reasoning behind that, and why we decided to do it that way this year?

DAN: Yeah. So, it's something we've talked about off and on for a few years now, and we really as a group decided a couple of things. One is, four days was becoming a fairly large time commitment for a lot of people to participate in the full range of camp activities. And then another reason is we generally saw a bit of a drop off in attendance when we went from the weekday to the weekend. And so, as sort of a trial thing we're doing this year is reducing it to three days, with keeping our focus on the sessions like we've always done on Friday. But then on Saturday, making it a little more open free form, which is the unconference, which we can get into, just to see what that does for our numbers and helps more people participate than on the weekends.

IVAN: So, is the unconference style going to be very similar to the way we did BOFs (Birds of a Feather meetings) in the past? Or, how's that going to be structured?

DAN: You know, that's how I picture it. Although it is still a matter of discussion between various camp organizers, how exactly we're going to do it. But the way I'm envisioning it—and Chris can correct me if I'm wrong—is we're going to largely be in the atrium area on Saturday as opposed to going to the classrooms, and people will sort of self-organize into different groups around that large space just to have informal discussions about whatever topics they would like. And then ideally we'll have a few moderators available, floating around the room to sort of help facilitate conversations and make sure people are in the spaces that they find most helpful.

CHRIS: That's right. In the unconference format, we're looking for interesting things to talk about. Tim likes to bring up that Tim [Ericson] and Wilbur [Ince] were the genesis of this idea, when we were talking about adding it to the camp. He likes to talk about the law of two feet, where if you're in a conversation that isn't providing you with what you need, you could use your two feet in order to find another conversation that is more engaging. Then in that way, kind of like plan your own day out of what talks are engaging you and finding the information you need. But the format is very much like a BOF. Instead of slides and rooms, and a more instructor-led conversation, where one person is just talking for an hour or whatever, it's more of a conversation, sharing of input and allowing more people to provide information than just one person at a time.

IVAN: I love the idea of doing that. It really allows, I think, the community to drive what the topics are and the discussions that are being had. I think that's a good experiment. I'm looking forward to participating and seeing how that affects our camp next year. I was going to ask about Thursday. Usually we have trainings on Thursdays, right? Can you speak to what the trainings are this year?

CHRIS: It looks like Drupal 8 content migrations. This can be a getting started with building sites with Drupal. There is a Drupal 8 crash course for content editors, marketers and project managers. Then intermediate to advanced CSS for practical peoples. I think those are all of our trainings.

DAN: Those are the four trainings, and then on top of the trainings we're also hosting a mini-camp this year.

IVAN: Oh really? Well, tell me about that. I know Backdrop has always got such a great presence at TC Drupal Camp every year. What is that about?

DAN: So, in the past we’ve hosted sessions on Backdrop. Every year we seem to draw some of the leaders behind the Backdrop community, and we'll do that again this year. Particularly Jen Lampton, who's helped lead and create the Backdrop community, she's coming, as well as several other prominent Backdrop contributors. And, what they've decided to do this year in the form of a mini-camp, is hold the day of sort of sessions, all in one room dedicated to Backdrop. And we as a camp decided to provide a room to sit alongside the training sessions for people that are interested in contributing to Backdrop, or learning about it to attend to this free session.

IVAN: I think that's a great idea. And why haven't I reached out to Jen and Nate about Backdrop? We should totally have them on the podcast.

CHRIS: There you go.

IVAN: That's awesome. We will make sure we do that. If you happen to be listening out there, Jen and Nate, please send us an email before we do. But yeah, we'd love to have you on the podcast. So that's great.

So, trainings on Thursday, Backdrop CMS minicamp as well in one of the rooms, and then sessions on Friday. So, I would imagine there is a keynote on Friday? Let's talk about what the day looks like on Friday.

DAN: I can tell you definitively we've got five rooms. So, five tracks if you will, and each track will have six sessions throughout the day, for a total of 30 sessions. We're starting the morning like we typically do with a welcome session at 9 am, going into our first session around 9:45 and continuing with the last session ending around 5:00. We will have a keynote this year during the lunch hour on Friday, and I'm happy to tell you about that.

That is a local group called the Asian Penguins, a Linux user group made of boys and girls grades 6 through 8, and they're based out of Hmong charter school in St. Paul. Their director Stu Keroff, is coming to tell the story about what they do, how their work is helping bridge the digital divide in the metro area. He works with the students to teach them Linux, and they repurpose old computers installing Linux on them and giving them away to families in need. So, we’re excited. He's going to bring some of his students with him too, and they're going to do a presentation for us on Friday.

IVAN: Oh, that's wonderful. That's really wonderful to hear. So, the Asian Penguins. Wow, how did you guys find out about them? Meet them? Involve them? What's the story behind that?

CHRIS: Matthew Tiff could probably give you the full answer of how that connection was formed. We found out about them through him, and then we were able to find out more about their organization. And it just sounds like a really great opportunity. I know you share an interest in making sure that tech is accessible to kids as well, Ivan, and it's really great to hear what they're doing.

IVAN: I'm not surprised that Matthew is involved in that.

DAN: Yeah. Matthew had hosted Stu on his Hacking Culture podcast a few months ago, and then recommended them as a potential keynote speaker. So, we reached out to them and we're just finalizing the details on that now, and it should be up on the site by the time this podcast comes out.

IVAN: Oh, that's great. I'm looking forward to hearing what they have to say. So, keynote over the lunch hour. Sessions in the morning, sessions in the afternoon. Can you tell me a little bit about a session format? Are they the same as last year? How long are they? What do those look like?

CHRIS: Yeah. We actually had quite a bit of a debate on how long our sessions should be. You know Drupalcon has moved to a format of half-hour talks and longer talks more than an hour. Right? It's like an hour and a half. And we were concerned about what is the appropriate amount of duration, so we wanted to make sure that we've got a lot of talks that people can give on Friday. But at the same time we were concerned that a half hour might be too short. We're trying 45-minute talks out this year. We're gonna see how that goes. And as a result, we were able to fit about 30 talks into that Friday.

IVAN: Is that 45 minutes of speaker time, or is that 45 minutes of session plus questions?

DAN: It gives time for questions at the end of sessions, unlike 30-minute sessions. You know that was a common experience at DrupalCon this year, is, there really weren't any time for questions at the end of those 30-minute sessions and speakers are really hard pressed to fit all their content in 30 minutes. So even though DrupalCon experimented with this and I think that's fine, we as a group felt like 45 minutes was a much better time slot, and I wouldn't be surprised if they go back to that at feature DrupalCons.

CHRIS: I wouldn't be surprised with that either.

IVAN: So, the 45 minutes is inclusive of the questions then?

DAN: Right. I mean, the assumption is that the speakers will have time then to answer questions.

IVAN: Got it. Ok. And so, let's talk about the five rooms and the five tracks you have. What are the tracks this year?

CHRIS: Well the tracks are similar. If you look at the website right now, they're almost identical to the tracks that we had last year. But we're making an effort this year to be inclusive of talks that are tangential from Drupal. Not every talk has to be about Drupal. We've got talks about GraphQL, JSON integrations and Ruby on Rails. We wanted to make sure that we've got some talks about mental health. We've got talks on a wide area of topics and not necessarily specifically about Drupal.

IVAN: That's great. I'm looking forward to seeing the list of sessions come out. I'm hoping, fingers crossed, that my session made it. When is that session list going to be published?

DAN: That's a good question. [laughing] The announcements will have gone out to the accepted speakers well ahead of this podcast being released. I don't know that we'll have them accepted and published on the site at that point, but we'll be publishing them hopefully by, what would you say Chris, mid-May at the latest?

CHRIS: Yeah, hopefully earlier, but that is largely based upon how we can contact folks. As our good friend Joe [Shindelar] was telling us, we've never had somebody tell us they either can't make it, or say that they can and don't show up. We've had a really high success rate, and we’d like to keep that going, but there's always the possibility that the worst could happen. If we don't get a hold of somebody, or we have to strategically plan, it's better to have everything figured out before we publish. And so, we're putting the effort in now in order to make sure that can happen.

IVAN: So, if you're listening to this podcast there's a chance the sessions have been published but there's a chance the sessions have not yet been published [laughing]. And if they haven't been published, we promise they will be published in the next week after you listen to this. So, fingers crossed.

DAN: Absolutely.

CHRIS: Let’s hope it works out.

IVAN: Let's hope it does. Ok. So, one of the things I love—I love a lot of things about the Drupal Camp in Minneapolis—is the parties. There's always the speaker party and the sponsor appreciation party, and then there's the Friday night party and the Saturday night party. But if the camp is one day short of four days, does that mean it's one day short of a party as well?

DAN: Absolutely not. [laughing]

IVAN: Oh good. Let's hear about what’s going on there.

DAN: Right. Well we do have a few changes this year. I think one of the big ones is that our Thursday night party, which is the day that camp opens after the training, we're trying something new, sort of inspired by our friends at Midcamp in Chicago, and that is changing the Thursday night party to the welcoming party. And what this means is that we're extending an invitation to anyone that is involved or interested in participating in our conference to come to the welcome party on Thursday.

CHRIS: That's right.

IVAN: And where is that party this year?

DAN: The unofficial plan right now is that we're going to host that at Pizza Lucé in downtown Minneapolis.

IVAN: And what about Friday? The Friday night party?

DAN: Yeah. So, Friday we're going back to the House of Balls.

IVAN: Oh yeah. I love that place.

CHRIS: Yeah, it's a really great place.

DAN: House of Balls, we’ve been at, I think this is our fourth year at this, sort of amazing, eccentric art studio/event space, just off of downtown Minneapolis. And we're going to have some of the same great things we have every year. We're lining up a food truck. We're going to have free food and drinks and most importantly, we’ve lined up karaoke.

IVAN: Oh yeah. That sounds amazing. I'm secretly hoping that Marc [Drummond] is able to give his five-minute talk about hotdish again.

DAN: Yeah, Chris, are we going to try to do any of the lightning talks this year?

CHRIS: Well I don't know. We like to be flexible. We're kind of a spontaneous crowd. We've got a number of events planned for the day. You know, we're gonna have some board gaming, and it seems like the board gaming thing has gotten even stronger here in the Twin Cities community. We're going to have some food and, of course, there will be Foursquare.

DAN: Foursquare.

IVAN: I hope Les [Lim] brings his ball.


CHRIS: We lean on Les for both the rules and the gamesmanship and the setup of that. We should side note, we should double check with him, if he's going to do that again this year, or if he wants one of us to take that on. And, yeah, in years past we've had lightning talks and we've also had karaoke. I do know for a fact that we will be having karaoke again this year. I don't know if we'll have lightning talks, but there's room still, I think Dan, we just need to put a plan into action to see if we can provide equipment and time for that.

IVAN: I'm a proponent of the lightning talks, so if you need votes you have one from me, and if you do need something to help make that happen, please ask, I'll do what I can.

DAN: Great. I think we've got a volunteer to run the lightning talks. [laughing] 

CHRIS: Sounds great. That's how this works.

IVAN: [laughing] Ok, well, if I get to run it that means I get to give one too.

CHRIS: [laughing] Indeed. You can kick us off.

IVAN: Alright. Let’s do that. Let me know the details, and I'll help make it happen.

DAN: Alright. Sounds good.

IVAN: Alright. So that's Thursday and Friday taken care of, and what are we doing Saturday? Are we doing anything Saturday?

DAN: We will. We'll do our traditional post-camp party. It is at a location to be determined. So, you have to stay tuned to the website or the newsletter to find out when and where that's going to happen.

IVAN: Well I'm glad that's still happening even though we don't have the fourth day. Stay tuned on the website. That's and subscribe to the email list, I'm sure that'll be mentioned in the email as well. One more question. How do you register for camp and what does it cost?

CHRIS: Well you can go to our website at and you can register right there. We've got a nice big link for you right there in the top of the page, just click on that, go on over to registration. Registration remains inexpensive, especially compared to other Twin Cities camps which we've been able to look at the cost of camps nearby. Our camp's only $50. We are providing means for people who want to contribute more. Like myself, I tried to come in at the Community Contributor level. How much is that again Dan?

DAN: Yeah. So that's $150, and that includes camp registration, a free T-shirt, and it also means that you are helping support the camp above and beyond, which is really key to us being able to offer all these things, including the parties and the free training and all the sessions and the venue.

So, that's kind of a new, it's not new, but what's new this year is, is we're really trying to emphasize to anyone that uses Drupal professionally and that can afford it, please consider coming in at the Community Sponsor level, Community Supporter level. It really helps us out. But anyone is welcome to come to camp, and as always if anyone wants to come and can't afford it, please contact us, and we would be happy to set you up for free.

IVAN: What's the best way to contact you?

DAN: Yeah, so, go to the website, go to the contact page and just shoot us a message, and one of us would be happy to get back to you. Or you can hit us up on Twitter as well.

CHRIS: Yeah. Like Dan said, if you fill out the contact form on site, you're sending an e-mail message to the entire team. Someone's going to see that immediately. And, again, we're available over Twitter just like the rest of the Drupal community. We all kind of hang out there.

IVAN: And, there are sponsors again this year, like there were last year. There always seems to be a plethora of sponsors for camp, which is just so awesome to see for our little community. Are there still opportunities to sponsor? What options are left, if they are?

DAN: Please, please, please, always welcome more sponsors. The more sponsors we get, the more we can do. You know, we really are wanting and planning to offer free lunch to everyone at camp this year on Friday, and getting a few more sponsors really help make that happen. And so, we have some great sponsors so far including TEN7, thank you for that.

IVAN: Yeah!

DAN: And, you know, we have a few platinum sponsor slots still available. We have unlimited slots at the gold and silver level. And so anyone who wants to consider both helping the camp out and maybe getting a table to tell people about your organization or what you do, you're very welcome to do that. And again, just come to the website. There's information about how to become a sponsor,  or to just get in touch with someone.

IVAN: So, that URL is, and there's a great little button there that you can visit the sponsor page for more information about the benefits of each of the sponsor levels. Yeah, it's been great to see the same companies coming back to the camp and coming back and providing to the community. It’s always a pleasure for us to do it, and I'm sure it is for you too Dan for Electric Citizen and for the others that are also doing that.

I’ve asked this before of members of our community and of members of the organizing team that always puts on this volunteer event. It's volunteers that do it. I'm amazed that it happens every year. But DrupalCon 2020 is in Minneapolis next year, and DrupalCon just happened last month, and we have our camp in close proximity to it. So, has there been any discussion about what, if any effect DrupalCon in Minneapolis is going to have on our camp next year?

CHRIS: So we've had a lot of internal discussions about it, and while we have a lot of energy in the Twin Cities, it seems like the prevailing wisdom is that we want to try to find a couple of smaller events. The work that we anticipate we're going to put in around DrupalCon is really too close to where we would want to have our camp here in the Twin Cities, to make both the contribution we want to put in to make DrupalCon a success and the contribution we want to put in in order to make our camp a success. That said, it's still kind of up in the air.

We haven't had the powwow that we really need in order to come to a firm decision that, “Hey, we're not going to do a Drupal Camp,” or “Hey, we're not going to do a Drupal Camp like later in the fall sometime that day of the year.” So, I guess the answer that we have right now is that, we want to continue to be active. We want to do things in the Twin Cities surrounding Drupal and getting together an event. And I think we've got different ideas on how to accomplish that, but the main thing we want to do is to continue to talk about Drupal, celebrate Drupal and promote knowledge and learning and inclusiveness.

IVAN: So, "Stay tuned. We're evolving the decision as time progresses," is what you’re saying?

CHRIS: Yeah. So, we don't have a good answer yet. We're all so laser focused on getting this year's camp put together and have it be so awesome, that we've postponed any other kind of discussion of what's next, until we're done.

IVAN: And thank you for being so laser focused on the camp, and Dan and Chris and everyone else that's helped organize the camp, Jer [Davis] and Tim [Erickson] and all of the other volunteers. It's just always so amazing for me to see the camp happen and for all those people to contribute and for there to be so much empathy and care that it happens in the most equitable and fun and cheap and value-based event that we can put on, and I think that's great. So, thank you both for doing that and for contributing.

CHRIS: After this is all done, there’s so much gratitude to make sure people get, based upon their efforts that they've been able to put in to make this thing a success. And the thing that we keep talking about, it's really our deliverable at the end of this is our process, because our process has been pretty good. We keep on iterating on it, so that we can have the confidence that, “Hey, we can put together a camp like this,” and we could feel really good about that process.

DAN: And not only that, but I've been involved in many years of camp organizing for TCDrupal, and I feel like every year is good, but the gang's really getting along well this year to where I'm not even daunted by the thought of doing it again next year.

CHRIS: I would love to do it again.

IVAN: You heard it here first. [laughing] We’re already thinking about the following year's Drupal camp. That's great.

CHRIS: So that's the high we're on right now from all the good work we’re doing. We’ll see how we’re feeling after this.

IVAN: [laughing] No, you can’t go back now. You just said that you're not even worried about it. So, let's actually just spend a minute before we close here, and say this is version 9 of the camp, if I'm not mistaken. I think the first one was in 2011, so, this would be version 9, and so the next one is the 10th anniversary. Right? So, we should celebrate that somehow.

DAN: Well, we are. It's called Drupalcon 2020, [laughing] and what better way to cap off 10 years of active community growing, stewardship, caretaking, whatever you want to call it. I myself came to this Drupal community group as a lone wolf developer looking to find some other group of people that I can nerd out about Drupal with. And my story is basically the story of how successful this community has been. Thanks to all of the people who have welcomed me in and made me feel like I belonged. I'm here today helping plan the next one.

IVAN: I love it. I think it's precious and amazing, and I'm always amazed by all of that. So, yeah. I hope I'm right about it being the 10th anniversary, because I feel like there were different incarnations of the camp before 2011, but I think 2011 was the first official one, right?

DAN: It was. Yep, you're absolutely right.

IVAN: Ok, good. Well, thank you both for spending your precious time with me today. It's really been a pleasure talking with you Chris and Dan.

CHRIS: Same here, man.

DAN: Yeah, thanks so much for hosting us.

IVAN: Chris and Dan are two of the volunteer organizers of Twin Cities Drupal Camp happening from June 6th, a Thursday to June 8th, a Saturday, at the University of St. Thomas in downtown Minneapolis. Tickets are still available and they're reasonably priced starting at $50, and we're hoping that includes lunch as well.

So, head on over to and register now. You can find the camp on Twitter, Facebook and Instagram. The handle is @tcdrupal. And, of course, the Twin Cities Drupal group is also on for other local events that happen outside of camp, and they happen every month, whether it's the happy hour or something else, it is on.

You’ve been listening to the TEN7 Podcast. Find us online at 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.

May 08 2019
May 08

Last month, we wrote a neatly diverse selection of blog posts: one related to the Drupal community, one about a major recent change for our company and two that were more business-oriented. In case you missed some of them, here’s a quick overview of all of them to get you up to speed. 

6 remote staffing challenges and how to tackle them

Our first post from April discussed the challenges businesses face when opting for a partnership with a digital agency to increase their development capacity. Of course, we also presented very effective solutions to them, which we have employed to great success.

To recap, these challenges are: communication issues, differences in culture and location, challenges with trust in and monitoring of remote teammates, cost and ROI, and miscellaneous, unexpected issues that are beyond one’s control. 

If you or your company are currently contemplating remote staffing, we suggest you read the entire post more thoroughly and arm yourself with the knowledge to make a more informed decision and effectively manage a remote team. 

Read more

Our brand new Ljubljana office

In case you didn’t know - April also marked our Ljubljana team’s transition into shiny, brand new offices! We seized the opportunity and wrote a short blog post about it, documenting our reasons for the move and the teambuilding-like moving process, as well as looking ahead to what this move means for our company. 

The move into bigger offices was a necessary next step if we wanted to stay true to our vision, grow our team even further and scale our business by working on an even greater number of interesting and challenging projects. 

We’ve already had both AgileTalks and AgileFoods in our new offices, and we’re looking forward to running our first free Drupal course at the new location this weekend.

Read more

Interview with Ruben Teijeiro, Drupal hero at 1xINTERNET and co-founder of Youpal

After almost two months, we returned with our Drupal Community Interviews series! This time we spoke with the lively Ruben Teijeiro, Drupal hero at 1xINTERNET and co-founder of the Swedish Drupal agency Youpal

We loved learning about the meaning and responsibilities of a ‘Drupal hero’, as well as his beginnings with Drupal, when he was deciding between at least 10 different technologies. As soon as he encountered Drupal, though, he knew that the CMS was a perfect fit for him. 

Apart from spreading Drupal awareness and meeting diverse Drupal communities, Ruben is really excited about the JavaScript modernization in Drupal and is looking forward to the initiative bringing together the two communities. 

Read more

5 key benefits of remote staffing

The last post we wrote in April was a sort of parallel to the first one; while the latter discussed the challenges of remote staffing, this one focused exclusively on the benefits of this particular outsourcing strategy. 

Without beating around the bush, the main benefits of remote staffing that we wanted to point out are: scalability, redundancy, flexibility, faster acquisition of developers and the ability to get exactly the kind of skillset that a certain project demands. 

All of these smaller benefits add up to the number one benefit of this type of outsourcing: they enable you to better navigate the constantly shifting landscape of digital agencies and grow your business more efficiently. 

Read more

Well, this is it for our blog posts from April. We hope that you enjoyed them and that you were able to learn something new from them. Make sure to check back for our upcoming posts!

May 08 2019
May 08

HTTP Status Code is a new module to manipulate HTTP status header.

Main reason for doing this module is that in some cases you need to do manual fixes on the server side to create 410 Gone headers for paths that you want to remove from Google search index, with this module active you could setup the paths directly in Drupal.

You can find the the module at Normaly install should be done with composer - composer require drupal/http_status_code.

The module supports all Headers used by Symfony\Component\HttpFoundation\Response - with that said - HTTP headers should be used with caution. So make sure what you understand the impact then you manipulate the HTTP Header - like adding a 301 Redirect Header will be real bad when you not have a redirect in place.

If you remove a page, the request for the path of the page normally then gives a 404 not found in the HTTP header - as it should. But Google does not think this really means that the page is gone forever, just temporarily, so to make Google understand it is gone for real, you could set up the path for the path at /admin/config/http_status_code/http_status_entity and select that the path would throw a 410 Gone header. Then Google removes the path from the search index.

Road map:

- Automate rules - like if you unpublish a node of certain type you get a an 410 Gone header for the path.
- If you publish the node again, or another node with same path, remove the 410 Gone header for the path.
- PHP unit tests (needed to get module into beta)
- Nice to have: Wildcard support

May 07 2019
May 07

Back in September 2018, Dries Buytaert, founder and project lead of Drupal, announced, 

Drupal 7 will be end-of-life in November 2021, Drupal 9 will be released in 2020, and Drupal 8 will be end-of-life in November 2021. 

You can read the announcement and get further information on this here -

Since that announcement, Cheeky Monkey Media has been in a lot of conversations with businesses of all shapes and sizes, not-for-profit and for-profit, that are currently on the Drupal 7 CMS platform and are considering migrating to Drupal 8.

The first thing everyone needs to realize is the move to drupal 8 will be painful, and almost as expensive as building a Drupal website from scratch.

The second thing everyone should realize is that once they’re on Drupal 8, the move to Drupal 9 will be relatively painless.

As Dries announced in a later article, should be much easier to upgrade to Drupal 9 than it was to upgrade to Drupal 8. Drupal 9 will simply be the last version of Drupal 8, with its deprecations removed.

You can read the full article here - 

Cheeky Monkey Media has completed several migration projects to Drupal 8, both for our agency partners and our clients.

We’ve approached these projects in several different ways to help organizations make the migration “less painful” from process and a budget perspective, and I’m going to share them with you now.

First let’s make an assumption. 

Whenever we have conversations with organizations about the migration to Drupal 8, in addition to the migration there is typically some issues or challenges our clients want to address with their website while in the process of migration. 

They either want to fix issues with features and/or functionality, design, or all of the aforementioned. 

So let’s assume that you're not entirely happy with how your current D7 site is functioning, and/or you might be considering a redesign. I mean it makes sense. You’re looking at rebuilding your site anyways, so you might as well improve the results you’re getting from it in the process. 

To help illustrate the different approaches and how they will impact your budget, I've also included some mock budgets and timelines to illustrate the budget difference between the approaches. 

I know nothing about your site at this point except that it’s likely on Drupal 7. So, I decided to use nice round figures of $100,000 - $120,000 for option #1 below, which you might be thinking is your only option at this point, but our past projects have shown that this is not the case. 

Again, these budgets and timelines are by no means accurate, they’re just provided as reference.

Let’s take a look:

Option #1 - Discovery, migration to D8, fixing functionality issues and a redesign = $100,000 - $120,000, 8-10 months timeline


  • Solve all your problems in one fell swoop… kill all your birds with one stone?... you get the picture :)


  • It’s difficult to see what makes the difference for your business. Was it improved performance based user experience that made the difference? Was it improved design user experience? Was it improved features/functionality?
  • It’s a big expenditure going out in a fairly short period of time.

Option #2 - Discovery, migration to D8, fixing functionality issues, no redesign = $90,000 - $110,000, 6-8 months


  • You’re getting a lot accomplished and solving a lot of problems with this approach.
  • You’ll have a better idea what changes had the biggest impact.


  • This may not be the approach you want to take if a redesign is part of your overall plan, as you would be paying for front-end development twice.

Option #3, Part 1 - D7 site assessment, fixing functionality issues, discovery/planning D8 migration = $30,000 - $40,000, 12 months

Option #3, Part 2 - D8 migration, no redesign = $60,000 - $70,000, 6 months


  • This gets you where you need to go and allows you to measure success along the way without doing things twice unnecessarily, or paying for them to be done twice.
  • It’s like cleaning your house and doing a purge before you move. No-one wants to move a bunch of problems and stuff you don’t need to move. Fix performance issues, fix functionality/feature issues (at least the ones that make sense), and clean-up your code and your content. These will all be decisions you won’t have to make and challenges you have to figure out when you migrate.
  • There’s a 1.5 year draw-down of budget or expenditure, which might be an easier pill for some organizations to swallow.


  • Again, as in Option #2, this may not be the approach you want to take if a redesign is part of your overall plan, as you would be paying for front-end development twice.

If you want to discuss either or all of these options to help you decide which path to D8 is best for you, feel free to reach out to us.

We’re happy to share our experiences with these various approaches and help you decide the best way for you and what your budget might look like.

May 07 2019
May 07
Date: 2019-May-07Vulnerability: Drupal 7 and 8 release on May 8th, 2019Description: 

The Drupal Security Team will be coordinating a security release for Drupal 7 and 8 this week on Wednesday, May 8th, 2019.

We are issuing this PSA in advance because according to the regular security release window schedule, May 8th would not typically be a core security window.

This release is rated as moderately critical.

The Drupal 7 and 8 core release will be made between 16:00 – 21:00 UTC (noon – 5:00pm Eastern).

May 8th also remains a normal security release window for contributed projects.

May 07 2019
May 07

The Field Permissions module in Drupal 8 allows you to set permissions (enter, edit or view) on a Drupal field, based on the role the user belongs to.

In order to demonstrate how this module works, we are going to create a content type called "Essay" for the website of a school.

There will be 2 roles:

  • Freshman
  • Sophomore.

The Freshmen permission will not be allowed to choose the subject of the essay, whereas the Sophomores will have the possibility to choose between literature and history. However, there will be no possibility to change the subject once a student has made a choice.

Let’s start!

Step #1. Install the required modules

There are many ways to install a Drupal module. One of them is to use Composer.

  • Type into your terminal application:

composer require drupal/field_permissions

Define Role Based Field Permissions in Drupal 8

  • Click Extend.
  • Scroll down until you find the Field Permissions module and mark the checkbox.
  • Click Install.

Step #2. Create the Roles

  • Click People.
  • Click the Roles tab.
  • Click Add role in order to add the Freshman role.

  • Enter the role name.
  • Click Save.

  • Repeat the process for the Sophomore role.

Step #3. Create the Users

You have to create two users, one for the Freshman role and one for the Sophomore role

  • Click People > Add User.
  • Create a user and check the Freshman box.
  • Click Create new account.

  • Repeat the process for the Sophomore role.

  • Click the Permissions tab.
  • Mark the following permissions for both roles you just created:
    • Essay: Create new content
    • Essay: Edit own content (students are able to change their essays, however, they will not be able to change the subject choice once they save the form the first time)
    • Access the content overview page
    • Use the administration pages and help
    • Use the Toolbar
  • Click Save permissions.

Step #4. Create the Essay Content Type

The Essay content type will have only two fields:

  • Body
  • Subject choice.

The field Subject choice will be only available to the Sophomore role, however, once a student has made a choice, they won’t be able to change it anymore.

  • Click Content > Content types > Add content type.
  • Add a proper Name and leave the default values.
  • Click Save and manage fields.

  • Click Add field.
  • Select List (text) as the field type.
  • Click Save and continue.

  • Enter the two possible values in the Allowed values list.
  • Leave the default allowed number of values (1).
  • Click Save field settings.
  • Mark this field as required.
  • Check the Custom permissions radio button.

Sophomores will be able to enter a value for this field, to view it and to view the subject choice of other sophomore students. Freshmen will only be able to view the choice of their elder classmates.

  • Mark the corresponding checkboxes.
  • Click Save settings.

Step # 5. - Create Content

  • Log out from the site and log back in as a Sophomore.

  • Click Content > Add content.
  • Enter a proper body.
  • Choose one of the two available subjects.
  • Click Save.

You can now see the node. Let’s suppose the student wants to change the content of her essay.

  • Click the Edit tab.

You will see that the subject choice field is not available anymore.

  • Log out and log back in as a Freshman student.
  • Click Content > Add content.
  • Enter a proper body.
  • Click Save.

As you can see, this role does not have the possibility to make a subject choice. If you go back to the homepage of your Drupal installation, you will see both teasers.

  • Click the “Sophomore” essay.

The Freshman student is able to view the subject choice of his sophomore classmates.

I hope you liked this tutorial and it will help you improve your site building skills. The Drupal 8 Field Permissions module works not only with nodes but with other entities like users too.

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.
May 07 2019
May 07

We're excited about a feature built by a member of our community and recently deployed on to give more human context to discussions in the Drupal issue queue, you can now choose to display your primary language, pronoun, and location.

Update your profile now

This is an opportunity to bolster human context within an online medium where tone and posture can be difficult to read. Providing this level of detail allows for visibility into the global composition of our community — such as when a person's primary language is not English or when a person resides in a distant time zone.

It is important to recognize what being global means and drawing attention to the details that remind us about the people behind the project helps us all to have a greater understanding of one another.

@rachel_norfolk and @baddysonja sharing screenshots with this new feature in action.

Thanks to @justafish for working on and requesting this feature. Thanks also to everyone who participated in the issue!

Screenshot of comment submitted by justafish with patch for this feature. Shows the feature in action with pronoun, location, language details.

You can enable this new feature by editing your user account and adding pronouns to the personal information tab, and location language on the Language/location tab. Finally, you can opt into what you would like shown inline in comments under the "comments" tab.

May 07 2019
May 07

Drupal 8.7 was released couple of days ago on May 1, 2019. As you might know, new features are added with each minor release of Drupal 8 (e.g. between 8.6 and 8.7) which occur in 6-month intervals. Originally 8.7 was supposed to be released in March 2019. But the timing of Drupal's releases has historically occurred 1-2 months before Symfony's releases, which forces Drupal community to wait six months to adopt the latest Symfony release. In order to be able to adopt the latest Symfony releases faster, Drupal community shifted Drupal's minor releases to May and December in a plan to allow adoption of latest Symfony releases within a month.

This is penultimate version of Drupal 8, which will be concluded with Drupal 8.8 in December 2019, after which we expect release of Drupal 9 sometime in June next year!

Beside bug fixes and dependency updates lets see what new features Drupal 8.7 brings!


Taxonomy terms and custom menu links are now revisionable, which allows them to take part in editorial workflows which was until now only possible for Content types and Custom blocks.


JSON:API in Core

Drupal 8.7 will provide an out-of-the-box JSON:API implementation, marking another major milestone towards making Drupal API-first.

Now you will be able to generate an API server that implements the JSON:API specification with zero configuration. Once you enable the module, you are done.

Developers and content-creators can use it to build both coupled and decoupled applications and pull content from Drupal into iOS and Android applications, chatbots, decoupled frontends such as ReactJS, voice assistants and many more!

Layout Builder module is now stable

Layout Builder module was originally added as an experimental core module in Drupal 8.5 and is now stable and ready for production use!

layout builder

If you haven’t heard about it Layout Builder is offering a single, powerful visual design tool for site builders to create templated layouts and custom landing pages.


PHP 7.3 Is Now Supported

PHP 7.3 was released in December 2018 and comes with numerous improvements and new features. Also with this release new Drupal sites can only be installed on PHP 7.0.8 or later. Installing Drupal on older versions results in a requirement error.

Drupal PHP 7.3


However, existing sites will still work on at least PHP 5.5.9 for now, but will display a warning

PHP stopped supporting version 5.5 on July 21, 2016 and Drupal security updates will begin requiring PHP 7 as early as Drupal 8.8.0 (December 2019), so all users are advised to update to at least PHP 7.0.8 now or preferrably to PHP 7.3.


As part of continuing GDPR compliance improvements in Drupal core, Comment module no longer logs IP addresses for comments by default. Existing sites will still continue to log IP addresses but this can be changed by changing comment.settings.log_ip_addresses to FALSE in the site configuration using settings.php.


This was just a short brief into the new features. For a full list take a look at official release notes:


May 07 2019
May 07

To be competitive with enterprise form builders, the Webform module for Drupal 8 needs to support the downloading and exporting of submissions as PDF documents, as well as sending PDF documents as email attachments.

The Entity Print module does a great job of generating PDF documents from entities and fields, but webform submissions don't use Field API. This limitation has required site builders and developers to create custom Entity Print integrations for the Webform module.

The Webform module now includes a Webform Entity Print integration module, which handles downloading, exporting, and attaching generated PDF documents. Additionally, the Webform module allows the generated PDF document's header, footer, and CSS to be customized.

When enabled, Webform Entity Print module automatically displays a "Download PDF" link below all submissions and adds a download "PDF documents" option to the available export formats. Attaching PDF documents to emails requires that you add an "Attachment PDF" element to a webform and then configure email handlers to "Include files as attachments."

The below screencast and presentation walks through customizing the PDF link and template, exporting PDF documents, and attaching PDFs to emails.

Scratching my own itch

Adding PDF support was not a sponsored feature. I wanted the Webform module to support this advanced feature; so I created it. I was scratching my own itch.

When contributing to Drupal, the goal is often to optimize the project for personal needs ("scratching our own itch"), but it has to be bigger than that.


The bigger itch/the challenge that I am always scratching at is:

The Webform module should provide all the features expected from an enterprise proprietary form builder combined with the flexibility and openness of Drupal.

Competing with other form builders

Competitive enterprise, and also Open Source form builders, tend to put this PDF functionality behind a paywall. For example, WordPress's Gravity Form ( and Ninja Form ( charge for this type of functionality. This defeats some of the purpose behind Open Source, which is to foster collaboration. For example, both of these form builders then had to implement PDF generation using custom APIs.

Ben shared his code

In the Drupal community, we openly share our code and APIs. Ben Dougherty (benjy), the maintainer of the Entity Print module, shared his code with the Drupal community. The Entity Print module is one the most well thought out and cleanly executed Drupal 8 modules that I have seen. Ben’s hard work made it easy (and enjoyable) for me to add PDF support to the Webform module.

Thanks, Benjy

Everyone should thank Benjy for building and maintaining the Entity Print module.

If you want to thank and encourage me to continue scratching my own itch, please also consider backing the Webform module’s Open Collective and help make the Webform module that much more awesome and more sustainable.

Almost done…

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

OKSubscriptions powered by Strikingly

May 07 2019
May 07

For many Drupal 8 projects that have minimal interaction with their users, the need to set up a notification system quickly comes to the forefront. Being notified of a new comment, a response to a comment, a new publication on a particular subject, or a user, are recurring needs.

To satisfy this type of need, we can rely on the Message module (and the Message stack) which can allow us to achieve this type of result with the help of the Flag module. But we are not going to talk here about these two generic modules, which can do much more, but about a new module Entity Activity whose sole purpose is to log all types of actions performed, by users, according to their subscriptions, on a project.

The Entity Activity module will allow us to generate any type of message, on any type of content entity on the tree main operations of the content life cycle: its creation, its update and its deletion.

Global configuration

The initial configuration of the module is quite quick to set up. The majority of the configuration to be done is done from the menu Configuration > Content authoring > Entity Activity

First, you need to activate on which types of entities you want to be able to generate notifications. And so of course allow users to subscribe to these entities.

Entity Activity Settings

At the same time, you can configure a purge of the different notifications (based either on overall time or a maximum number of notifications per user) if necessary.

Multilingual support

For multilingual projects, subscriptions are also multilingual in the sense that a user can subscribe to content for each of his or her independently available translations. Notification messages are then generated in the current language when the operation is performed. You can force the generation of a log message in the user's preferred language (if defined), by checking the corresponding option in the general settings.

User preferred language option

Warning. This option is costly in performance because each log message must be regenerated for each owner of a subscription. Use it only if you really need log messages to be generated in the user's preferred language.

Configuration of activated content entities

In a second step, we will configure the display modes of the entities we have activated, to display a Subscribe on widget that will allow users to subscribe (or unsubscribe) on each of the entities.

Article subscribe on

You can then display on the different view modes required, on the different content types, this Subscribe on button, as above with the example of the Article content type.

From now on, users, with the appropriate permission, will be able to subscribe and unsubscribe on each activated and configured entity. And they will be able to find from their account a summary of all their subscriptions.

User's subscriptions

Note that the Remove button on each subscription is present because it has been activated in the Subscription entity view mode from the Configuration > Content Authoring > Entity Activity > Subscriptions settings > Manage display configuration page.

Configuration of notification generators.

Thirdly, we must configure which messages will be generated from which operation and for which subscriptions. To this end, we can create as many Generators as necessary according to the needs of a project.

Entity Activity Generators

Each notification generator has a base of four plugin types corresponding to the four main content entity types of a Drupal 8 project, namely content, taxonomy term, user and comment. It is possible to add as many plugins as necessary for specific project needs, but we will have the opportunity to look at this later.

The configuration of these Plugins is identical and follows the same logic.

Plugin log generator

The possible configuration options are as follows.

  • Enable: whether the plugin is active or not
  • Published: option to generate a notification only if the target entity is published
  • Operation: the type of operation from which the plugin must generate a notification (insert / update / delete)
  • Bundles: it is possible to limit the action of a plugin to only one or more bundles of a content entity type. You can leave blank to apply the plugin to all bundles regardless.
  • Subscribed on: this is the configuration option in a way master. It allows you to define from which subscriptions the plugin will generate the notification. The two possible options are Source Entity and Entity Referenced. The first (Source Entity) is the most basic and allows you to select the subscriptions that have been made on the entity itself (content, user, etc.). The second option (Entity Referenced) will allow you to select the subscriptions made on a referenced entity (from an Entity Reference field so) by the current entity. The typical use case is to be able to generate a notification for all users subscribing to an Alpha theme (Taxonomy Term) when new content is published on that theme, or another use case is the generation of a notification when publishing a comment about a content. But the possibilities here are extremely varied and countless use cases can be covered with this second option. In the example above we have chosen here to generate a notification when publishing content to all users who have subscribed to the author of the content.
  • Include parent term: this option allows to include all parent terms in case the entity on which subscriptions are searched is a taxonomy term. Useful if you want a user who has subscribed to the taxonomy term Fruit, for example, to also be notified if content is published with the taxonomy term Orange, which would be a child of the term Fruit.
  • Log message: This is of course the message that will be generated and notified to users. You can configure the text format to use, and of course you can use all the tokens related to the target entity type of the plugin.
  • Use cron: this option allows you to disable the generation of the actual notifications of the operation performed on the entity. Indeed, depending on the number of subscriptions, generating all notifications can be a long and costly process in terms of performance. This option then allows to delegate to the scheduled tasks the generation of these notifications, so as not to penalize the user who performs the operation in question. This option is highly recommended.

You can then create and activate as many notification generators to cover all the business needs of your project, each notification generator can itself have several plugins in charge of generating the notification itself.

Configuring notifications

To finalize the implementation of your notification system, you can then configure two elements on the Log entities of the module that carry these notifications.

From the Configuration > Content authoring > Entity Activity > Log settings > Manage Display

Log manage display

You can activate the extra field Remove log, which will expose a button allowing the owner of the notification (the user who subscribed) to delete this notification (if he has the appropriate permission).

And you can also configure the base field Read, with the Log read / unread field formatter, which will expose a button allowing the notification's owner to change the status from Not Read to Read or vice versa.

Inform the user of new notifications

All this is only really useful if users can be easily informed of the presence of new notifications. To this end, the module offers a block called User log block, which must be placed and configured in the appropriate region of the project theme.

User log block settings

The purpose of this block is to display the total number of unread notifications. For this purpose you can add a (short) text that will be displayed next to this number, you can use an icon font to display an icon next to this number (using the classes of this font), but also configure the maximum number of notifications that will be embedded as well as the view mode used to display them, as well as add a link to the user's page listing all his notifications, whatever their status. Of course you can overload the Twig template to customize the rendering of this block.

Extension of the Entity Activity module

Since notification generators rely on a  plugin type, it is possible to create easily your own plugin to add a very specific logic to a project, overloading the basic methods used, or simply to support a new content entity type from a contributed module.

Plugins must be placed on the Plugin/LogGenerator namespace and may look like this for example if you want to overload and add a very particular logic on one or more of the methods of this Plugin type. 

 * @LogGenerator(
 *   id = "my_custom_node",
 *   label = @Translation("My custom Node Log Generator"),
 *   description = @Translation("Generate custom log for the entity type Node or for related entities referenced."),
 *   source_entity_type = "node",
 *   bundles = {}
 * )
class MyCustomNodeLogGenerator extends LogGeneratorBase {

  public function getEntitiesSubscribedOn(ContentEntityInterface $entity) {
    // Stuff.
  public function preGenerateLog(ContentEntityInterface $entity, AccountProxyInterface $current_user = NULL) {
    // Stuff.

  public function generateLog(array $settings) {
    // Stuff.


The module also exposes two parameters that can be overridden from the settings.php file of a project.

$settings['entity_activity_max_log'] = 100;

This setting overrides the maximum number of notifications (default 50) that can be bulk marked as read by a user. Indeed, it has a button on its page listing its notifications which allows you to mark all its notifications as read. This parameter therefore defines the number of notifications that will be processed per pass in the update process that will then be launched.

$settings['entity_activity_purge_user_always'] = TRUE;

This parameter allows you to force the purge per user (maximum number of notifications per user) each time a cron task is executed. Indeed, this method of purging can be very costly in terms of time and performance, depending on the number of users to be treated. Also by default, this method is only executed once a day, at night. This parameter therefore overrides this default behavior.

In addition, the notifications and subscriptions provided by this module are themselves content entities. As such, they can be customized by adding additional fields. In this case, it is up to the project to define the value of these fields in a programmatic way according to business needs. To this end, events are dispatched for each hook implemented by Drupal on the CRUD cycle (presave, postsave, update, insert, delete, etc.).

Finally, the entities provided by this module (Log and Subscription) have a basic rendering that can be used in many cases. The rendering of these entities is heavily based on a Twig template that you can then override to meet your needs.

Possible developments

To date, Entity Activity allows you to quickly configure a project to generate notifications for users based on their subscriptions. It can also be easily extended using Plugins to add specific business logic if necessary. A natural evolution would be to be able to generate and send by email (according to a frequency chosen by the user) a list of the last unread notifications, even if for the moment this feature is not part of the functional scope of the module. But a Drupal 8 developer can easily add this functionality (either in the module itself or in another contributed module), the foundations laid opening up many possibilities in relation to this recurring theme on community projects.


To conclude, Entity Activity is a simple configuration module, as it focuses exclusively on generating notifications, or logging events occurring on a Drupal 8 project. But this simplicity is not at the expense of the necessary modularity as to the generation (and their underlying conditions) of the different notifications to cover most, if not all, of the recurring use cases and needs.

May 07 2019
May 07

Looking for a Drupal 8 rating module that should be:

  • easy to install
  • easy to configure
  • easy to use
  • conveniently flexible
  • and user-friendly?

And maybe you “crave” for some nice-to-have features, as well:

  • enabling users to add a short review
  • multiple ratings: enabling users to vote on several aspects of your product/service, such as price, quality, ease of use?

What are your options? What working (and stable) modules for rating and reviewing are there in Drupal 8? 

We've done the research for you, evaluated all the modules for rating in Drupal 8 and come up with a list of 6 best... rated ones:

Keep in mind that this Drupal 8 rating module doesn't provide a voting mechanism, packed with all the key voting features. Instead, it structures the voting data for other rating modules to leverage.

What it does provide you with is a standardized API and voting data storing schema. Therefore, it streamlines the whole process of retrieving and organizing the voting results for various pieces of content on your Drupal 8 website.

Top features:

  • multi-criteria voting
  • caching the voting results (and it does that in a highly efficient manner, with no need to recalculate them...)
  • enables users to rate any type of content on your Drupal site (users, comments, nodes)
  • automatic tabulating of the voting results

Note: keep in mind that, for now, we only have a pre-release version of the module for Drupal 8...

2. Flag Rating, A Highly Popular Drupal 8 Rating Module 

An extension of the Flag module, that allows you to either:

  • use the default SVG icon 
  • upload your own icon (jpg, SVG or PNG) for each flag

Drupal 8 Rating Modules- Flag Rating

Furthermore, you even get 2 templates to override to your liking:

  • flag-rating.html.twig
  • flag-rating-icon.html.twig

A Drupal 8 rating module that you can use to turn the “select tag” option of the Star Rating module into a more user-friendly, clickable icon.

Drupal 8 Rating Modules: Star Rating Form Display

To “unlock” its functionality just:

  • navigate to Structure > Content type
  • select the “Manage form display” option
  • scroll down to your star rating field
  • click “Star rating clickable”
  • in the Settings screen, configure the custom display to perfectly fit your needs

If you're looking to integrate a voting functionality exclusively for the authors of the articles submitted on your website (hence, not for the end users), Flag Rating is the module you're looking for.

Drupal 8 Rating Modules: Star Rating

Take it as a simple, yet useful module that provides you with a display formatter and a star rating field. In short: with the “bare necessities” for the authors to be able to rate the uploaded articles.

Say you have a review website — a hotel review website — and you want to add multiple star ratings to a node:

  • customer service
  • en suite and private facilities
  • food, etc.

... with a different icon for each node. Then, you just need to use the star rating field that this module provides...

Top features:

  • built-in support for the Views module
  • it doesn't require other modules (e.g. the voting API module) to work
  • it allows you to add a different icon type per field and per view mode

The Drupal 8 rating module that simplifies the entire voting process: it encourages users to express their votes through an intuitive thumb illustration.

Drupal 8 Rating Modules: Vote Up/Down

Top features:

  • code voting support for your pre-defined products/services
  • interchangeable themes for your voting widget
  • the possibility to set up your own custom widgets using ctools plugins

The END!

These are your 5 best options when it comes to working Drupal 8 rating modules that should be both easy to configure and easy to use. 

Have you discovered another way of integrating a reviews feature to your Drupal 8 website?

Image by mohamed Hassan from Pixabay  

May 07 2019
May 07

Freelancing: a growing trend

It seems the trend nowadays is for workers to take the freelancing route. With 36% of the U.S. population currently being freelancers, it seems that this trend is slowly gaining traction. But what does this mean for businesses. It seems that hiring freelancers definitely has its benefits, however it also has its challenges. In this article I’m going to talk about the potential drawbacks that come with hiring a freelancer.

1. Hiring the wrong freelancer

Hiring the right person for the job is a complicated process even for a regular full-time employee. However, when it comes to hiring a freelancer, the interview should not be the same process as when hiring a full-time employee. Working from home requires a high degree of self-motivation, resourcefulness and self-discipline. On top of that, the freelancer should also be resilient to loneliness, since freelancing usually lacks the same social engagement that a conventional workplace can provide. If the freelancer doesn’t have these qualities, then he is going to be unhappy during the 30-40 hours he is working, which is bad for business and bad for humanity.

2. Too many options

After posting a job advertisement a client might be suddenly bombarded with a lot of replies from freelancers who are out to get the gig. But how does the client choose from so many options? Well, some freelancers will set up automatic bots that are automatically replying to the job post based on a few parameters. Most of the time, these type of freelancers will not have read the job requirements. They are not taking their time to make sure that they are a great fit for the job. Then there is another type of freelancers. The ones that report a great  amount of experience, yet they are charging suspiciously low rates. This type of freelancers either don't value their own work or the quality of the work provided is questionable and they use low rates as a cover-up. A client might feel overwhelmed by the options they have at their disposal. The best way to avoid this is to have an effective way on how to screen the freelancers.

3. Communication problems

Another big challenge that comes when hiring a freelancer is one of communication. As the name implies the freelancers are free to work whenever they want or feel inspired. What this means is that as a client you might not receive updates on the status of the work that the freelancer is doing. These can raise a lot of uncertainty for the client as he is kept in the dark with regards to the progress of his project.

4. Payment issues

Freelancers are not like regular employees. Naturally, this means that the payment process is going to be different than that of regular employees. First of all, the freelancer will not appear on the companies payroll, meaning that other alternatives for making the payment have to be found. On top of that, if the freelancer is outsourced from another country, the cost of transferring the money has to be taken into account. It's important to find a way to transfer the money that is advantageous for both the client and the freelancer, this way, confusion regarding the time until the payment is done and high fees when doing the payment through international banks are avoided. Some services that are good to use when paying outsourced employees are Paypal, Skrill and Payoneer. 

5. Being clear in requirements and feedback

In order to avoid frustration on both sides, the client has to be clear in their requirements and in the feedback provided by the freelancer. Otherwise, the client might risk to see the completion of his project in a totally different light than he was expecting. In order to be able to receive the project in the way that he envisioned it, the client has to be as thorough as possible when describing the job requirements. On top of that, regular feedback has to be provided. This way, the client will surely be able to increase the chances that the result he is going to receive is satisfactory.

6. Different language and culture

When it comes to effective communications, speaking a common language is of essence. In most cases, this language is going to be english. Finding a freelancer that is able to communicate at an advanced enough level of english to be able to discuss work related subjects might be difficult. On top of that, the culture of a country also has to be taken into account. Keeping in mind that different cultures have different communication approaches. For example, the difference between low context societies and high context societies, where one relies on explicit communication while the other on implicit communication. On top of that low context and high context are valuing non-verbal communication and cues to different degrees. Being aware of these differences can make communication easier and more pleasant for both parties.

7. Lack of commitment

Freelancers have the possibility to undertake multiple projects from different clients. What this means is that a freelancer will not be able to fully commit to your project, especially if another project is more challenging, exciting or more financially rewarding. On top of that, a freelancer will always prioritize the projects that make more sense from the point of view of the before mentioned aspects, pushing other projects to the side. This can cause a lot of frustration for the client, however, in order to avoid the frustration, the client has to make his project as appealing as possible from every aspect. For example, make sure that the project is challenging and exciting enough to keep the freelancer engaged. On top of that, clients should avoid paying below market-rates for freelancers because that can work as an open invitation for the freelancer to find new clients.

8. Missed deadlines

Another challenge that clients have to face when hiring a freelancers are missed deadlines. Freelancers are having more freedom when it comes to planning their working routine, as long as the contract does not stipulate specific working hours. This means that there is an increased risk of life events happening. Events like weddings, a relative getting sick, funerals seem to be happening at a larger frequency than for regular employees. These events can interfere with the ability of the freelancer to be able to deliver the project in time, thus resulting in a missed deadline.

9. Misunderstandings

Since freelancers don’t work in the office as every other regular employee, they are harder to supervise. What this means is that they are not there for the client to be able to get regular updates, or to provide feedback or to train them. If clear enough instructions were not provided, the freelancer can finish the project in a different manner than the one envisioned by the client. This misunderstanding will lead to frustration on both sides, since the client will demand adjustments and the freelancer will deliver these adjustments while not getting paid for them.


Hiring a remote employee is always a challenge. Especially in these days when the working culture has not fully adapted to the flexibility of the freelancers. However, being aware of the challenges of hiring a freelancer will make it easier to adapt and foster a productive relationship between you and your outsourced employee. So, embrace change and think about the possibility of hiring freelancers.

May 07 2019
May 07

If your organisation uses CiviCRM with Drupal, and would like to do in the future, we need your help!

Over the past few years lots of amazing work has been done on the unofficial Drupal 8 CiviCRM release.
The CiviCRM core team have looked at this and are now in a position to complete the work to make this an official CiviCRM release. This means they will make changes so

  • CiviCRM can easily be installed with Drupal 8
  • They will ensure CiviCRM works with Views in Drupal 8
  • Going forward future CiviCRM releases will be tested with Drupal 8

What about Drupal 9? Isn't that being released soon?

Both Drupal 7 and 8 are officially supported until November 2021. But the move from Drupal 8 to Drupal 9 will not be the same as previous Drupal major updates. It will be much easier to migrate existing sites between Drupal 8 to 9. For more information see

The CiviCRM core team has looked at this and the code changes required to ensure CiviCRM works with Drupal 9 should be minimal.

So very importantly this Make It Happen work is also preparation for Drupal 9.

If your organisation uses CiviCRM with Drupal then please contribute to this Make It Happen.

May 06 2019
May 06

Using UI pattern libraries in Storybook allow us to build a collection of front end UI components that can be used to build bigger components, even full web pages. However, frontend/backend integrations can be fraught with difficulties. In this piece, I’ll explain our process to make these challenges easy, even when using GraphQL fragments inside Twig templates.

What Drupal and GraphQL do well

At Amazee Labs, we build decoupled web applications using GraphQL and Drupal. We’ll touch on the reasons that we use this approach in this article, but if you’d like to know more, check out these blogs:

Drupal is known for its complex and unwieldy theming and rendering system. Data to be rendered comes from across the system in the form of templates, overrides, preprocess functions and contributed modules such as Panels and Display Suite. Sometimes trying to track down where data is being generated or altered is like a murder mystery. 

Thankfully, GraphQL Twig simplifies the situation massively. Each template has an associated GraphQL query fragment that requests the necessary data. This “pull” model (as opposed to Drupal’s normal “push” model) means that finding where the data comes from and how it is structured is really easy. We don’t need to worry about preprocessing or alteration of data, and this method lets us keep the concerns separated.

Advantages of UI component libraries

The main advantage of using a UI component library (also known as a pattern library) is that it facilitates the reusability of components. This means that when a component is created it can be used by any developer on the project to build their parts of the front end and in turn can be used to make larger and more complex components.

There are multiple extra advantages to this, the most obvious being the speed of development. Since all components are simply made up of smaller components, building new ones is usually much quicker, since we don’t need to reinvent the wheel.

This also makes maintenance a breeze, since we’re only maintaining one version of any component. If we decide that all buttons on the frontend need to have an icon next to the text, we simply change the button component and this change will apply everywhere that the component is used.

Finally, the reusability of components in a pattern library means that the UI is consistent. Often, web projects face difficulties where there are multiple versions of various components, each with their own implementation. This is especially true of larger projects built by multiple people, or even multiple teams, where no single person knows the entirety of the project’s implementation details. Thanks to the reusability of our components, we only have one implementation per component.

Challenges of using Drupal, GraphQL, and Storybook together

If done poorly, using pattern libraries like Storybook can be difficult and cause problems during the integration phase(s) of development. The main issue is usually that the frontend and backend developers have different approaches and different goals when developing. 

The frontend developer wants to create the best UI they can in the most efficient way possible, using the paradigms and approaches that are standard or preferred. Unfortunately, at times the implementation doesn’t sync well with the data structure that the backend developers receive from Drupal, so the frontend needs to be refactored or the data structure needs to somehow be altered.

How to make it work

I won’t go into detail on our implementation of the Storybook library, but we keep Storybook in the same repo as our Drupal application, outside the root. We then define a base storybook theme and using the Components module (built by my talented colleague John Albin), we define our path to the Storybook Twig templates as a component library in our .info.yml file. This way, the Drupal theme has access to all of our templates.

      - ../../../../storybook/twig

We then create our project-specific theme, which extends the base Storybook theme, and start to work on our integration. A generic page.html.twig file might look like this:

query {
{% extends '@storybook/page/page.html.twig' %}

{% block header %}
  {% include '@storybook/navigation/header.html.twig' with graphql only %}
{% endblock %}

{% block content %}
  {{ page.content }}
{% endblock %}

{% block footer %}
  {% include '@storybook/footer/footer.html.twig' with graphql only %}
{% endblock %}

So, how does GraphQL tie in here? Well, this is the really clever part. Our developers can create the GraphQL snippets to get the data needed for a specific component, and Storybook allows us to use JavaScript to use this data as mock fixtures. This means that the frontend can be built with realistically structured data, so no refactoring of templates or data alteration on the backend is needed. And since we already have the GraphQL snippet, this automatically works when run in Drupal. 


At Amazee, we use a UI component library because it makes sense to build a maintainable, reusable and consistent set of components for our frontend that also encourages faster development. We also try our best to streamline our integration processes so that all of our developers are more closely aligned and developing solutions that make it easier for their colleagues to use, learn and extend easily. 

Storybook gives us the power to build a component library using mock data that is structured in the exact manner that our GraphQL queries deliver it. This means no refactoring, building both queries and templates only once and an overall smooth integration process. 

Want to know more about using GraphQL and Twig? Check out our webinar

May 06 2019
May 06

In a world where global positioning systems appear to have a handle on every square inch of the roads we’re traveling on, doesn’t it seem like there should be automated website accessibility testing tools that function as well as -- if not better -- than manual testing? 

The fact is ... it’s complicated.

There are efficient automated testing systems that reveal important findings -- many of which you can easily access and apply to your site. But the web accessibility testing landscape is littered with offers of automated testing solutions that claim to provide fast fixes for the full spectrum of your digital assets. You might have already received an offer based on an unsolicited test of your site, alerting you that your site is a prime candidate for a website accessibility lawsuit. 

If that notification and offer does not include a comprehensive web accessibility testing checklist, it’s likely to be laden with pitfalls. One unsolicited finding, based on automated accessibility testing, does not reflect how your site is faring on all accessibility metrics. Automated accessibility testing tools simply cannot detect every potential issue that would cause your site to be noncompliant. Nor does an automated test provide adequate information for web accessibility remediation or mitigate your legal risk.

Avoid Unintended Consequences

Too often, overlay accessibility solutions create a scenario in which one fix leads to unintended consequences in your code and results in the need for further fact-finding and fixes. Subsequent changes to your site’s UI tend to break the overlay, setting in motion a constant cycle of diagnostics and fixes. 

Keep in mind that many automated ADA web accessibility testing tools are free to use and can produce relatively robust results. It might be just as easy for you to conduct this kind of test on your own, and gain a cursory understanding of accessibility issues affecting your site. Consider giving a web accessibility testing tool such as Code Sniffer a try.

Automated accessibility testing tools overlook critical information -- especially when the testing has occurred without your knowledge by someone with whom you have not had a conversation about your objectives and the full scope of your digital assets.

Get it Right the First Time

Promet serves as an ADA accessibility partner that conducts both automated and manual testing holistically from the perspective of the full spectrum of disabled users and available Assistive Technology. We guide clients through the remediation process, actually fixing the code to conform to WCAG 2.1  guidelines. We also provide tools and resources that enable your team needs to maintain your site in conformance moving forward

Our ADA accessibility testing tools and processes go deeper and wider than what automated testing can reveal. We explore a range of issues that require hands-on, manual testing. We look into the unique features of your site, and we take your organization’s mission into account. 

During our engagement process, we start with the development of your scorecard, which reports on our analysis of your site from several different angles. 

Understand Your Options

The scorecard is not intended to serve as a thorough report or to provide formal recommendations. It functions instead as a high-level overview for purposes of starting the conversation that will help you to choose the best path.

For example, we might find that you are using a content management system that is designed to adhere to ADA accessibility requirements, but that your content developers aren't using appropriate techniques when posting. Fixing existing content issues without understanding the reason the issues exist, simply means your site will quickly fall back into noncompliance. A simple process change might be all that’s needed to fix this situation. 

Other fixes, however, might require a fundamental overhaul of your site. If your site was created on a platform that is out of sync with ADA accessibility guidelines, it might be more cost effective to rebuild rather than to launch a series of workarounds. 

As experts in this field, we are clear on the fact that quick fixes, which sound too good to be true, usually are. Our objective is to create real accessibility solutions that enable you to move forward with the confidence that your site is accessible to all people with or without disabilities and that you reduce your risk of being faced with a lawsuit due to noncompliance. 

Leverage Expertise

The decision process associated with web accessibility remediation can feel overwhelming. It is outside of the core competency of most organizations. That's why it’s important to work with a trusted web accessibility consultant. 

The scorecard that we offer as part of your remediation process serves as a critical starting point for helping others in your organization to get an overview of your site's noncompliance and the level of effort that will be involved in the remediation. 

We find that when all stakeholders have an understanding of the process and are vested in the importance of doing the right thing, remediation comes into focus.

We are happy to review with you any emails concerning non compliance that you may have gotten by surprise -- or any unsolicited emails full of dire warnings about a potential lawsuit. 

As a leading expert on web accessibility testing tools, we’ve witnessed untold versions of quick fixes that have given rise to a whole host of complications. If you are looking to get it right the first time with the added benefit of value-added solutions, contact us today.

May 03 2019
May 03

Have you ever installed a menu module for one of the following reasons?

  • Adding a class to specific menu items
  • Setting a menu item's target
  • Setting a relationship between linked content
  • or pretty much any other arbitrary attribute.

With the Menu Link Attributes module for Drupal 8 you can satisfy all of those needs in one easy setup. We recently worked on a project that had strict accessibility requirements that we needed to follow and dealing with the menu was a specific pain point for us. Drupal has the basic requirements covered but specific cases required us to set certain attributes on menu items. Normally this is not easily achievable without some major custom work and hard to pass on to the client to maintain themselves for any future menu additions.

Our main problem was setting attributes to not get dinged for duplicate menu links in our menu structure. Let’s take a look at how this module enabled us to quickly setup the attributes we wanted to make available to the client. The config is pretty straight forward, we use YAML to build the form that will appear on the menu item edit page.

We’ll start by declaring the wrapper.


We'll then add all of our options, for our needs we had to create two settings.


We will then add our options to each and we'll have a complete form.

      'true': 'True'
      'false': 'False'
      presentation: Presentation

This is how our settings will appear on the form.

Menu Link Attributes

That’s all there is to it, it’s a really simple module that gives you some really powerful options that take a lot of the headache out of menu config.

May 03 2019
May 03

Have you ever installed a menu module for one of the following reasons?

  • Adding a class to specific menu items
  • Setting a menu item's target
  • Setting a relationship between linked content
  • or pretty much any other arbitrary attribute.

With the Menu Link Attributes module for Drupal 8 you can satisfy all of those needs in one easy setup. We recently worked on a project that had strict accessibility requirements that we needed to follow and dealing with the menu was a specific pain point for us. Drupal has the basic requirements covered but specific cases required us to set certain attributes on menu items. Normally this is not easily achievable without some major custom work and hard to pass on to the client to maintain themselves for any future menu additions.

Our main problem was setting attributes to not get dinged for duplicate menu links in our menu structure. Let’s take a look at how this module enabled us to quickly setup the attributes we wanted to make available to the client. The config is pretty straight forward, we use YAML to build the form that will appear on the menu item edit page.

We’ll start by declaring the wrapper.


We'll then add all of our options, for our needs we had to create two settings.


We will then add our options to each and we'll have a complete form.

      'true': 'True'
      'false': 'False'
      presentation: Presentation

This is how our settings will appear on the form.

Menu Link Attributes

That’s all there is to it, it’s a really simple module that gives you some really powerful options that take a lot of the headache out of menu config.

May 03 2019
May 03

Be part of Drupal's future. and drops falling into clear water making round ripples

This month, we're running a membership campaign to grow our base of support and connect with more of the Drupal ecosystem. We're challenging you to take one step this month to brighten Drupal's future: invite your colleagues and clients to join the Association for Drupal's future.

By building a broader membership base, we're securing a financial future for supporting the Drupal community. A large, global base of members who contribute to sustain the Association are a force! Every member who participates is making an impact and a statement that Drupal is here to stay.

Thank you for taking the time to share this campaign.

The campaign page is full of information on our work toward current goals that help fulfill our mission. If you are using Drupal or contributing to the project, there's some part of what we do that helps you and the community at large.

May 03 2019
May 03

I am about to present about Drupal 9 at DrupalCamp Belarus in May and then at Drupal Developer Days Transylvania in June . I already presented an Acquia webinar with Dries Buytaert on the topic, and was on the Lullabot Podcast discussing Drupal 9 with Angie Byron and Nathaniel Catchpole. I am a firm believer that this know-how should spread as far and wide as possible. I should not be needed to travel around the globe to present the topic and people should not spend the same time again to redo slides for their local presentations. There is no intellectual property here to hide, as many people should be aware and excited and participating as possible. The topic should be presented at Drupal Meetups, Camps, and inside your own companies. So the natural next step for me was to create an open source slideshow.

Screenshot of the first 16 slides of the 1.1 version of the slideshow

I took all that we learned from the webinar and Dries' keynote at DrupalCon Seattle as well as new technology that emerged since then. I also used a free slide template and Google Slides so you can make a copy for yourself and add your own contact information as well as edit the slides down to shorter or longer timeslots. The 51 slides in my test run for about 35 minutes, leaving 10 minutes for discussion in a 45 minute slot. You would likely need to cut content for shorter sessions. There are only basic buildup animations, so if you need to present offline that is also an option. Edit in your contact/introduction info and export and present as PDF.

The 1.0 version of the slides have been presented by Christian Fritsch at DrupalCamp Munich last week and I updated some content to the current 1.1 version as it is available now. I'll keep updating slides based on all your feedback. I shared the slides with public comments allowed, so keep the feedback coming there, comments here or some other way you can get ahold of me.

Resources to watch/listen to learn more include:

  1. Dries' State of Drupal presentation from DrupalCon Seattle
  2. Lullabot Podcast on Drupal 9
  3. Acquia Webinar on Drupal 9

Thanks to Acquia for funding me to create this slideshow and thank you for presenting it!

May 02 2019
May 02

Part of me is suspecting that I may be one of the lucky 10,000 today but I figure it's worth putting this out there because if I wasn't aware of this then there may be others too. It turns out that the version of Drush that you just installed may not be the version of Drush that executes your command.

So, as it happens there's a number of ways to install Drush. Older OSs may have it in the package management system, you may have just installed it globally using the instructions on the site, or, if your project is managed by composer it may have been installed as a site-local version. In my case I had messed it up just a little and had multiple versions hanging around and, despite having definitely downloaded and installed drush 8.2.3 to /usr/local/bin/drush and I confirmed that this was being called via which drush when I ran drush --version it informed me I was running version 9.6.2.

The thing that I didn't know... Drush will check the directory the site is in to see if there is a local-site version installed and pass off the request to that. So despite having Drush 8.2.3 installed and called from the command line the request was finding the local copy and returning results from that. If it wasn't for the fact that this was a Drupal 7 site and I'd inadvertently installed Drush 9.x locally via composer (Drush 9.x doesn't support Drupal 7.x) I'd never have known that this was how it worked.

Big thanks to Kirill for correcting my brain meat on this.

May 02 2019
May 02

Release offers all-new stable layout builder, meets web accessibility guidelines
Washington D.C., Wednesday, May 1, 2019 - The Drupal community announces an update to Drupal 8. This new version — Drupal 8.7.0 — is a leap forward in the Drupal content manager experience as a creative tool streamlining workflows and improving efficiency within teams. Drupal 8.7.0 also maintains the project's commitment to web content accessibility guidelines, enabling screen readers or keyboards to navigate options — meaning this version is accessible to all. 
Drupal's newly stable Layout Builder module enables a drag-and-drop editing experience, which means no custom code or theming is required in order to lay out pages. But Drupal goes far beyond similar offerings by competitors, empowering content editors with increased power and flexibility: enabling management of templated layouts, support for powerful overrides based on content-type, and support for one-off landing pages. 
“Not only can this version support basic use cases, it also supports advanced use cases,” said Drupal Founder Dries Buytaert. “These types of templated layouts and workflow updates are not available in competitors’ layout building tools.” 
Drupal 8.7.0 provides significant improvements over all past versions of Drupal, particularly by including JSON:API as a stable module in core. By enabling the JSON:API module, all Drupal entities such as blog posts, users, tags, comments and more become accessible via the JSON:API web service API. This is a powerful, standards-compliant, web service API to pull content into JavaScript applications, digital kiosks, chatbots, voice assistants and more. This propels Drupal further into the lead among headless content management systems, making it the clear choice for the backbone of digital experiences beyond the web.
Drupal 8.7.0 provides the JSON:API for reading and modifying resources, interacting with relationships between resources, and filtering, sorting, and pagination of resource collections. It also supports complex workflows, allowing for a staging or approval process. 
Tim Lehnen, Executive Director of the Drupal Association, said, “Drupal 8.7 is a milestone release for the Drupal project. It simultaneously extends Drupal's lead as a powerful, API-first content framework, and leapfrogs competitors' tools for content editors.” 

In addition to being incredibly powerful, JSON:API is easy to learn and put into practice, and uses all the existing tooling to test, debug, and scale Drupal sites. 

“This feels like the dawn of a new chapter for Drupal and its authoring experience and we’re certain we’ve only scratched the surface,” said Caroline Casals, a developer at Phase2 - a digital experience agency. 
Overall, this version streamlines the user experience for Drupal content creators and site builders, allowing front-end developers to work easily and efficiently. More than two years’ of commits from the open source community built this rigorous release. 
“On behalf of the Drupal Association and the Drupal community, I want to thank all of the contributors who made the Drupal 8.7.0 release possible,” Lehnen said. 
About Drupal
Drupal is content management software. It is used to make many of the websites and applications you use every day. Drupal has great standard features, easy content authoring, reliable performance, and excellent security. What sets it apart is its flexibility; modularity is one of its core principles. Its tools help you build the versatile, structured content that ambitious web experiences need.
About the Drupal Association
The Drupal Association is dedicated to fostering and supporting the Drupal project, the community and its growth. The Drupal Association helps the Drupal community with funding, infrastructure, education, promotion, distribution and online collaboration.


May 02 2019
May 02

“After soliciting input and consulting others, I felt JSON:API belonged in Drupal core.”

Dries Buytaert, creator of Drupal

Here is the news that will make the supporters of API-first Drupal simply lose their breath. Among the new features of the freshly released Drupal 8.7.0, is JSON:API in Drupal core! It is now part of Drupal 8 web services responsible for data exchange with third-party applications. Let’s learn more about JSON:API’s work, its road to Drupal’s “main squad,” and why JSON:API in Drupal core as of the release 8.7 is a significant achievement.

API-first Drupal future has arrived

New times dictate new trends. Businesses today can benefit from much more than just websites. They can embrace different channels through the “Create Once, Publish Everywhere” (COPE) method. Their content can “fly” to mobile applications, Internet of Things devices, and so on, via an API.

Being API-first means being fully ready for this interaction. API-first Drupal future has been the Drupal community’s priority in a recent couple of years. The new Drupal 8 in 2015 came packed with a REST API, which became more and more enhanced in the subsequent minor releases. This is the result of the API-first Drupal Initiative and hard work of the community.

In addition to Drupal 8 core RESTful web services, there emerged an ecosystem of projects for API-first Drupal:

  • contributed modules like GraphQL, Simple OAuth, Open API, Consumers, RELAXed Web Services, Subrequests etc.
  • decoupled distributions Contenta CMS, Reservoir, and Headless Lightning
  • Waterwheel.js SDK

Among the tools, of course, the JSON:API contributed module, which has now finished its way to Drupal core. Congrats!

The road of JSON:API to Drupal 8 core

The JSON:API specification was increasingly popular in the JavaScript community. Dries Buytaert in 2017 recommended the young JSON:API contributed module for Drupal 8 core. As the Drupal creator said, he felt JSON:API belonged there. Still, enormous work was ahead.

The module’s main creator and maintainer was Mateu Aguiló Bosch (e0ipso). But Dries asked Wim Leers and Gabe Sullice of Acquia to devote as much time as possible to helping to get this module ready for the core. Overall, as Wim Leers wrote in his article, the project had as many as 103 contributors.

According to Dries Buytaert, by the time JSON:API was committed to Drupal 8.7 branch, it had taken:

  • 28 months
  • 450 commits
  • 32 releases
  • 5,500+ test runs

Record-breaking module: immediately stable in core!

Usually, Drupal contributed modules are added to the core as experimental and only become stable when polished to perfection. However, JSON:API was the first module in history to be added to Drupal core as stable from day first! This is what Mateu Aguiló Bosch, the module’s main creator, said.

How JSON:API module works

When enabled, JSON:API in Drupal core immediately makes your Drupal entities (blog posts, users, comments or whatever) available via a web service API. For JSON:API, your entities are resource objects. It creates URLs by which the entity types and bundles can be accessed using HTTP methods.

According to Dries, both developers and content editors can create their content models directly in the Drupal user interface. In addition to the great authoring experiences, Dries said, they get a powerful and standards-compliant web service API that allows to pull this content to JS applications, digital kiosks, chatbots, voice assistants, and so on.

It is possible to:

  • fetch the selected entity fields only (for example, blog titles)
  • include relationships (for example, blog authors) and avoid additional requests
  • filter the resource collections
  • sort the resource collections
  • do the pagination of the resource collections

and much more.

What this news means for the users of JSON:API contributed module

According to Wim Leers, the users of JSON:API 8.x-2.x contributed module on Drupal 8.5 or 8.6, can simply update to Drupal 8.7 and delete the contrib. There should be no disruption in its work. Please note that the contributed module will no longer be supported by the end of 2019.

Update to Drupal 8.7 and enjoy JSON:API in core!

Congrats again to the tireless team of JSON:API creators! The API-first Drupal approach gives us an unlimited freedom in fulfilling our customers’ third-party integration ideas. So if you wish to: smoothly update to Drupal 8.7 create data exchange solutions with JSON:API in Drupal core expand your business reach to new channels Contact our Drupal developers!

May 01 2019
May 01

The spring is in full bloom — and so is Drupal development. On May 1st, we officially meet Drupal 8.7.0 release that is bursting with new features. And, of course, they are worth a good review. After the previous release in September, we discussed media handling capabilities in D8.6 as one of many interesting updates. Today, let’s take a closer look at what’s new in Drupal 8.7.0.

What's new in Drupal 8.7.0

Drupal 8.7.0 release is a big step forward that makes the CMS even more modernized, competitive, and user-friendly. It is now API-first, featuring handy UIs for editors, using the latest PHP, speaking more languages, and so on. The details come right now.

JSON:API as a new stable module in Drupal core

Here goes what Drupal's creator Dries Buytaert called an important milestone in its evolution towards being an API-first platform for both decoupled and coupled apps.

In the new release, the JSON:API module was added as a stable module to Drupal 8.7 core — skipping any experimental phases! JSON:API immediately exposes entities as a standards-compliant web API, so the data can be pulled by third-party applications.

The module is now the fifth module in D8’s ‘Web services” package. This means Drupal is now more open than ever to data exchange and third-party integration.

JSON_API is a new stable module in Drupal 8 core

Layout Builder stable and improved in Drupal 8.7

The “great drop” deserved a handy tool to create layout templates — and it got one. Layout Builder appeared in D8 core as of 8.5 release and immediately became popular.

It has been improved a lot in terms of keyboard navigation accessibility, precise permissions, layout overrides, column width selection, and much more. And now we officially have stable Layout Builder in Drupal 8.7 core, ready to work on live sites.

The module lets you create layouts for content types and other fieldable entity types. You can also design the look of individual content items. Constructing pages “brick by brick” by combining elements, configuring the blocks, and drag-and-dropping them around is easy and enjoyable.

Layout Builder stable in Drupal 8.7.0 core

New Media Library user interface

When discussing what’s new in Drupal 8.7.0 release, we need to mention the Media Library’s new, stylish, and handy user interface. It’s both nice to look at and to work with.

Finding media items in the Library, bulk uploading them from the computer to the Library, selecting media items and embedding them into content is a pleasure.

The Media module that works together with the Media Library is already stable. The Media Library is still experimental but its stability will not be late in the coming — it’s planned to be in release 8.8. The creators still have great surprises like WYSIWYG support. 

New Media Library interface in Drupal 8.7.0

New Media Library interface in Drupal 8.7.0 (2)

Umami demo now multilingual

The most delicious Drupal demo — Umami Food Magazine — has been translated into Spanish in Drupal 8.7 release. Umami was created to give a chance to explore the CMS’s capabilities thanks to plenty of demo content and configuration. This includes content types, media types, taxonomy, display modes, views, menus, and much more.

And now, in addition to all the above, Umami also showcases multilingual features configured out-of-box that anyone can study. Umami is available as one of Drupal installation profiles alongside the “Standard” and “Minimal.”

Umami demo translated into Spanish in Drupal 8.7.0

End of PHP 5 support

Drupal 8.7 is the last release to support PHP 5. However, it is already impossible in D8.7 to install new websites with a PHP version lower than 7.0.8. Updates for existing websites that use PHP 5 are still possible, but a warning will be displayed. In release 8.8, Drupal security updates will definitely require PHP 7.

In any case, it’s important to remember that PHP 5.6 reached end-of-life in December 2018. So it’s time to update PHP due to both safety and efficiency reasons. You can entrust this to our website support team.

Revisionable custom menu links & taxonomy

Custom menu links and taxonomy terms have been made revisionable in version 8.7.0, which allows them to fully participate in editorial workflows.

Removal of automatic entity updates

In new Drupal 8.7.0 release, the support for automatic entity updates has been removed. The reason is data integrity issues and conflicts. So the drush entity:updates (drush entup) command no longer works. Changes to entities will now be performed using standard update procedures.

Third-party library updates

The new release has also introduced the updates of important libraries to newer versions. For example, Guzzle to 6.3.3, Stylelint to 9.10.1, Coder to 8.3.1, CKEditor to 4.11.3, Twig to 1.38.4, as well as numerous PHP dependencies.

Drop of support for Internet Explorer 9 and 10

The 8.7.0 release is a final goodbye to Internet Explorer 9 and 10. It removes a workaround that still existed in D8.5 and D8.6 and allowed the inclusion of 32+ stylesheets.

Update to Drupal 8.7 smoothly!

This has been just a brief rundown of what’s new in Drupal 8.7.0. Follow our next blog posts, because we plan to review new features in more detail.

The day of the new release also marks the end of security support for D8.5.x. So it’s time to move forward — let your website enjoy the new features and stay protected. For the smooth update, rely on our Drupal support team.

May 01 2019
May 01


The Drupal community has just announced the winners of the inaugural Global Splash Awards. Drupal development and design leaders from around the world gathered in Seattle for the awards ceremony in mid-April, where 14 winners across 13 categories were announced, with 1 tie. The awards were held in conjunction with DrupalCon Seattle 2019.

The Splash Awards recognize the best Drupal projects on the web. Each digital experience represents a step forward in digital innovation, and a new model for others to follow.

Michel van Velde, co-founder of the awards, said, "It is wonderful to see the Splash Awards come both to North America and to a global audience for the first time." Co-founder Baddy Breidert added, "With the wider reach of audience, we saw an outstanding level of projects nominated and showcased at this ceremony."

The Nominees

A total of 109 nominations were submitted, across 13 categories. In the tight field, there was a tie for project of the year: Lullabot for JSON:API and the City of Detroit, Michigan for their government municipal site Other categories and winners include: 

  • E-Commerce: Rob Edwards Freelance, Apex Running 
  • Corporate: Elevated Third, Central Square 
  • Design/UX: Burst, Chupa Chups 
  • Non-Profit: Made It Digital, Memory of Nations 
  • Education: Connect-i, Opigno 
  • Government: City of Detroit, 
  • Publishing / Media: Lemberg Solutions, Monda Magazin 
  • Tools / Apps: Genuine Interactive, FotoOppTM 
  • Social / Community: Phase2, Pinterest 
  • Theme: Last Call Media, 
  • Care / Healthcare: Mediamonks, Montefiore - Orthopedics 
  • Best module: Lullabot, JSON: API

Edgar Montes from the City of Detroit, Michigan, and tied winner for Project of the Year, said, “We like to believe that our dedication to the people of Detroit has helped us deliver a website that can serve the needs of the city and its people; a majority of the web team lives within the city and we make a point of trying to understand the needs of every part of the site and how to best convey the information it contains. It's important to us to try to demonstrate that great things continue to come out of a city which has seen its fair share of struggles and triumphs.”

Both the Splash Awards and the DrupalCon conferences bring the world community together; big agencies and small independent developers, all using Drupal and harnessing the power of open source. The next European Splash Awards will be held in conjunction with DrupalCon Europe 2019, taking place in Amsterdam, Netherlands in October 2019.

About Drupal

Drupal is content management software. It is used to make many of the websites and applications you use every day. Drupal has great standard features, easy content authoring, reliable performance, and excellent security. What sets it apart is its flexibility; modularity is one of its core principles. Its tools help you build the versatile, structured content that ambitious web experiences need.

About the Drupal Association 

The Drupal Association is dedicated to fostering and supporting the Drupal project, the community and its growth. The Drupal Association helps the Drupal community with funding, infrastructure, education, promotion, distribution and online collaboration at


May 01 2019
May 01

At this year’s DrupalCon, held earlier in April in Seattle, Drupal founder Dries Buytaert gave attendees a preview of the newest version of Drupal: 8.7. Now, the wait is over. Drupal 8.7 is launching today, May 1, adding a new suite of features and fixes that will improve the Drupal experience for everyone with an up-to-date platform.

drupal 8.7 was released on may 1

In his keynote, or “Driesnote,” Dries laid out what made this new release so special. Speaking to the Drupal community at large, Dries shared that the Drupal team had several core objectives when developing Drupal 8.7:

  • Make Drupal easy for content creators and site builders
  • Make Drupal easy to evaluate and adopt
  • Keep Drupal impactful and relevant
  • Reduce total cost of ownership for developers and site owners

Each one of these goals represented a major challenge, but the newest version has delivered a variety of updates that each make Drupal a more robust platform.

Empowering content creators

One of the biggest features in Drupal 8.7 is the newly stable Layout Builder tool. The product of the efforts of 123 contributors and 68 supporting organizations, Layout Builder makes designing pages more user-friendly. As the name implies, the Layout Builder tool enables editors to manually adjust the design and format of a page. With this tool, editors can make changes to the layout without having to involve developers every time. Dries displayed a demo of the Layout Builder tool during the Driesnote, which can be found below.

Along with layout builder, the other major content improvement ushered in by Drupal 8.7 is the updated media module. As of this most recent update, reusable media, images, video and drag-and-drop features for the media module are all stable, with the media library currently in the “experimental” state. Combined with layout builder, these updates make Drupal 8.7 a great update for content editors.

Out of the box functionality

While Drupal 8.7 certainly makes life easier for editors, it doesn’t stop there. New out of the box features make Drupal easier to adopt than ever. New to the Umami theme in Drupal 8.7  are demo articles containing Spanish translations by default and improved accessibility throughout the theme, with new labels and focus styles highlighted. This helps to show Drupal 8.7’s capabilities in terms of both multilingual and accessibility right out of the box. Additionally, the “Welcome tour” feature makes it easier for agencies to demo the platform. All of these features are included with the new update automatically.

Staying relevant

To remain a driving force in the market, Drupal needs to keep up with the times. The biggest breath of fresh air Drupal 8.7 brings to the platform is the addition of the JSON:API to the core. This development extends Drupal’s “API-first” philosophy, enabling decoupled and headless solutions. If this type of buildout is what your organization needs, the Drupal 8.7 update makes developing these popular solutions much easier.

Lowered costs

Because Drupal 9 (D9) is built on the same codebase as D8, the eventual upgrade process will be much easier than a conventional website upgrade. Previously, upgrades were major undertakings that required a lot of development effort. Now, as long as a site is not using any deprecated code, upgrading to D9 will be very straightforward. A tool called drupal-check is already available to check for deprecated code, so it’s already possible to start getting a site ready for D9. In the meantime, Drupal 8.7 offers a number of new features and enhancements and is another step toward the eventual D9 upgrade..

There’s certainly plenty to enjoy with this new release, but the updates don’t stop here. With Drupal on a six-month release cycle, there will be a new version of Drupal on November 1. Drupal 8.8 promises an updated WYSIWYG editor along with a potentially updated Admin UI, an ongoing project for the Drupal team. Beyond that is D9, the latest edition of the platform.

Duo can help you make the most out of Drupal 8.7’s newest features while also planning your roadmap for upgrading. If you’re ready to see what the future of Drupal has to offer, reach out to us today.

Explore Duo

May 01 2019
May 01

Online stores with decoupled architecture have all the chances to gain more happy customers. How does this work? Let’s see in this post. The “decoupled” or “headless” architecture is an increasingly popular trend in the Drupal world — especially now that the JSON:API module is in the core. So welcome to this review of the principles of decoupled Drupal Commerce and how it helps online stores engage users.

What is decoupled Drupal Commerce?

In decoupled, or headless Drupal Commerce, the presentation layer is separated from the e-commerce backend. Fast and reactive JavaScript interfaces communicate with powerful Drupal backends via a REST API. Decoupled, or headless architecture gives developers unlimited flexibility to create enhanced shopping experiences.

Decoupled approach as a priority for Drupal Commerce

Commerce Guys, the creators of Drupal Commerce, clearly focus on JavaScript-based solutions for online stores. They have a special team engaged in this area, including lead developers Bojan Živanović and Matt Glaman.

The team keeps polishing Drupal Commerce for headless setups and improves Drupal core in this process as well. They complete the documentation, help developers with their projects, and create an ecosystem of contributed projects in the “decoupled” sphere. Among them:

Commerce Demo project

Let’s see in more detail, with examples and quotes, what benefits make decoupled Drupal Commerce deserve so much attention.

The benefits of decoupled Drupal Commerce

Super high speed

“One thing we’ve all heard about it is it's fast and reactive. You get a quicker response time and the person is more engaged. Customers have an attention problem, so they get easily distracted on a website. So the faster you can give them what they want, the more likely they are to give you their credit card.”

Nothing to add to the words of Matt Glaman, the main creator of the Commerce Cart API and the Cart Flyout modules. He shared this in his speech “The road to a headless Drupal Commerce future” at Drupal Europe 2018.

It is already a known and undoubtable fact that JavaScript front-ends are very quick. In addition, this setup does not overload Drupal, which is reflected in performance.

Matt Glaman said his demo’s product page began to load faster from 130 milliseconds to 60 milliseconds with the decoupled cart. One of the reasons was Drupal no longer had to render a form. All actions with the cart are done on the client side and do not involve the Drupal rendering system.

“The pages are so much faster now because we don’t have to be concerned about Drupal rendering a form or the cart block and all this extra data,” said the developer.

It’s nice for performance that caching can be done without Drupal. According to Matt Glaman, “your product page can be behind the Page Cache module or behind Varnish, and you never have to hit the server to render the cart form, because the JavaScript will do it for you.”

Rich and interactive features

Decoupled Drupal Commerce allows developers to enrich the shopping interfaces with interactive features. Users who enjoy the shopping are more likely to make conversions.

Among these features are:

  • push notifications
  • real-time updates for the shopping cart and all the other forms
  • real-time previews with changed product attributes (like the clothing colors)
  • the ability for the customer to change the order details without the page reloading

and much more.

For example, on the Commerce Demo project, every time a user clicks “Add to cart” or clicks on the cart icon, the cart flies out and shows the contents. The price is updated dynamically as the user changes the product quantity. We see the Commerce Cart API and the Cart Flyout in action.

Commerce Cart Flyout

On the Eldum Rétt website, the price is dynamically updated when the user selects the package size, and cart sidebar also flies out. This project uses a React native app combined with decoupled Drupal Commerce.

Dynamic cart updates in decoupled Drupal Commerce

Freedom in front-end changes

With a decoupled approach, front-end developers are free to implement experiments and changes to improve user experience and application design.

While implementing them, they do not interfere with the backend setup and do not have to worry about it at all. There is no need to edit the database and the code, or redeploy the ecommerce platform.

So, in addition to the flexibility of customizations, decoupled or headless Drupal Commerce saves your time and money. Even small changes in traditional setups would often require the editing of several layers of code.

Front-end technologies of your choice

Your headless ecommerce store can send its data to a mobile app, web app, static site, and so on. You can also enjoy omni-channel commerce with the same store data presented in many ways. Hence the large choice of front-end technologies.

You will not be restricted with what is offered by only one platform. When combined, platforms multiply their benefits.

Your decoupled Drupal Commerce setup is here

If you are interested in decoupled Drupal Commerce tailored to your business needs, contact our Drupal team. We love to create ecommerce projects and work with the latest JavaScript technologies.

So entrust us with any kind of tasks in this area — from decoupling your commerce to creating a new decoupled website from scratch.

May 01 2019
May 01

Drupal is known to be a complex and great CMS. However, if you are planning on starting to learn Drupal 8, you will soon notice that it is more complicated than Drupal 7 and other content management systems. Drupal is known to have a steep learning curve, which makes it more challenging to pick up and get started. In this article, I’m going to show you some great books that help you learn Drupal in a systematic, beginner-friendly way. My blog post is going to include 7 Drupal 8 books that are covering the basics and are beginner friendly, books that will challenge the skills of seasoned Drupal developers and books that are teaching specific Drupal skills. Pick your poison!

May 01 2019
May 01

Every year at DrupalCon, we aim to bring together people with a common interest who need to move a potential initiative forward or work together in other ways to help grow Drupal.

In Seattle, we brought together a room full of event organizers. This is the story of two hours locked in a room, deep in the heart of the Seattle Convention Center…


Thomas Scola, Michael Miles, Karthik Kalimuthu, Jessica Dearie, April Sides, Aimee Decker, Aimee Degnan, Michael Hess, Kaleem Clarkson, Jesse Hofmann-Smith, Jared Stoneberg, Rick Hawkins, Michael Anello, Leslie Glynn, Dan Moriarty, Kevin Thull, Jeremy Rasmussen, Quincy Austin , Brian Gilbert, Dori Kelner, Suzanne Dergacheva, Gábor Hojtsy, Steven Hughes, Raul Solano, Owen Lansbury, Dane Rossenrode, Juan Pablo Novillo Requena, Stephanie Lüpold, Kazu Hodota, Baddy Sonja Breidert, Nick Switzer, Elli Ludwigson, Matthew Saunders, Kelly Albrecht, Narcisse Mbunzama, Shawn Duncan, Pat Gilbert, Oyekan Abiodun, Mark Casias, Darren Oh, Gregg Marshall, Anson Han, Raed Al-khurayji, Gaurav Mishra, Shadab Ashraf,, Hussain Abbas, Jordana Fung, Josef Dabernig, Tushar Thatikonda, and myself - Rachel Lawson.

If I have missed any of your names, I apologise. Please let me know and I will update. Thank you to all who attended and especially to Avi Schwab who volunteered to take notes.


Some weeks before DrupalCon Seattle, I consulted with a number of people and devised a series of questions to pose to the room, to get the conversations started. I then divided the audience into groups and assigned each one of the questions, asking them to get together and prepare a five-minute “presentation” without recourse to audiovisual aids like a screen. I want to hear what they have to say, not look at fancy slides. There then followed 15 minutes of discussion including the whole room.

Once the round table began, we initially did a quick voting exercise to ensure we worked on the topics in priority order, plus some custom ordering to take into account not everyone can be in the room for the whole two hours. It is DrupalCon after all!


More topics were initially set than were discussed. We took a group decision to spend more time on each topic, so lower priority items fell off the bottom until another day.

The following represent notes taken during the day and some reflection on the general flow of the discussion.

Event Organizers as an “Official” Group?

We discussed whether we should look to form an “official” group, with a charter etc, that looks to help events coordinate and collaborate.

  • Fostering the next generation of Drupalists
  • Surfacing smaller events on
  • Marketing camps to students and young people
  • More case studies and paired sessions “How Disney/WWE/J&J made their website”
  • Get agencies to engage clients. Win (camp) win (agency) win (client).
  • How do we create value?
  • We already have revenue, discussed below how we might turn that into value?
  • Regional financial entities
  • But maybe higher level organization to help create them
  • Example: National Endowment for the Arts - national grants
  • Regional, local all their own organizations
  • Group representation:
  • Globally diverse
  • Diverse among camp sizes
  • Intentionally contracting to do work and solve our problems
  • Two separate things
  • Global “Just enough” organization to support events
  • Fiscal sponsorship & financial
  • Who should this organization report to?
  • Dries? DA?
  • The DA is listening now. They’re good at doing events.
  • Dries is only one Human Being
  • Fewer and fewer working groups are reporting to him
  • Global working group as CONNECTORS between groups. Some groups need very little, some need help being lifted up. How do we pool our resources together to solve event org problems?

There was certainly the will to create an official group and to put the necessary work into making it representative of the global event community. I’m highly encouraged by this and looking forward to this happening.

What can we (Dries + DA) do to help you get your event to the next level?

We wanted to understand how the Drupal Association especially could provide the right support to events.


  • Form for organizers to fill out before and after the event
  • Drupal Association could help organize resource library for organizers
  • Events would like to have some consistent opening slides that describe and promote the Drupal Association
  • DA to promote Ticket sales
  • Events want to be able to register as Drupal Association Supporting Partners under a new level just for them.


  • DATA is worth its weight in gold - we all benefit by collecting data about each event in terms of numbers of attendees, sponsorship revenues, speakers, etc.
  • Data could go into standardized letter for requesting sponsorship
  • Templates for requesting sponsorships, also for saying thank you.
  • Educate potential sponsors the value of these events
  • Should a standardized CoC be required for DA support? What happens if someone doesn’t check the “We have a CoC” checkbox? Is it just required?
  • Could we enforce participation through enforcement of the trademark?
  • That might make more work for Dries in defending it
  • Put other value behind agreement
  • Could tie into CWG initiative to train CoC people
  • Create a Speaker Directory for diverse speakers
  • Incentivizing getting into the “Speaker Directory” could be a great honor
  • Add to form: where did we find the speaker?
  • Speaker Selection Panels
  • D.o profile list speaking engagements
  • Site distro for camps/starter kits/COD
  • Drupal Europe is out there
  • We have the resources in $$$, could gather resources and hire someone to do it
  • Separation of Tasks from the Drupal Association

It seems that the greatest input the Drupal Association can have right now for event management is related to data and, especially, on We should look to create a plan that takes input from this discussion, Suzanne Dergacheva ( and Rachel Lawson’s ( ) discussion documents on what that data should be. 

We should look to represent data on wherever possible, rather than Google docs.

Define a mission statement for why we organize events and how to measure success

One of the key factors to success of the project is coordination across all the places people interact with it. Having a common agreed-upon description of what in-person events are attempting to achieve would help. We wanted to know what would be involved in reaching such a common understanding through a mission statement.

  • Taxonomy?
  • Set up focus group to define a common taxonomy.
  • What kind of sessions does a camp want?
  • Is the event mission-based or just regional
  • Grow the community, awareness thereof, and lead collaboration across open source communities
  • Scaling only happens when there’s demand
  • Focus on the higher-level goals will pull up the lower ones
  • We’re not doing any benefit to ourselves if we just keep talking to the same group of people
  • How do we implement the data collection?
  • Define & measure our KPI’s.
  • Cross-pollinate camp participation
  • Dashboard to improve visibility and encourage participation
  • “Help people exploit and promote drupal”
  • Improve skills
  • Improve the product
  • Connect people to resources, clients to solutions, providers to clients, etc
  • How do we measure success?
  • D.o signups for the event (groups.d.o is… not super)
  • Add Drupal Ladder status to profile pages (and track how that coincides with event attendance)
  • How do you use Drupal? (and check change over time)
  • Reporting how many people participate in contribution
  • Social media mentions
  • Connect to a tag 

A good discussion on exactly why we run events and defining what we want to achieve with them. Great to hear people saying that it is not enough to simply keep talking to the same people - part of an event’s mission should normally be attractive to people new to Drupal so we continue to grow.

The room agreed that a good mission statement for events would be “Help people exploit and promote drupal”

Focussed Output

Dries had a very powerful slide in his Driesnote that set the focus for the upcoming year, for the whole project.

 1 Improve Diversity & Inclusion in our community, 2 Start removing the use of deprecated code now, 3 Refocus on the automated upgrade problem
Slide from the Driesnote, photo by Rachel Lawson 

I was keen to walk out of the room with an agreed focus for the group and we settled on the following, in order:

  1. Let’s do what’s needed to make the group official
  2. Let’s work on the ecosystem - how do we provide things like fiscal sponsorship across events of all sizes in US?
  3. We need to start collecting data from events in a single place.

Next Steps

Sticking to the focus above, the group who attended and others will be looking into the requirements for an official group to be formed, with a charter etc. Activities here should be updated as blog posts in

Lessons Learned

My own lesson out of the exercise is that everyone has a very full timetable at DrupalCon and to make the invites much earlier before the event, to give people lots of preparation time. This also needs to be more clear of the facilities available in the room!

I will also look into adding the round tables into the official program, still as invite-only events but at least people can see them more easily and plan their days.

I Want to Hear from You

I want to continue to hold round tables in the future on this and other topics of interest in the community. 

What community initiatives should we be getting people together to look at the future? Let me know in the comments!

May 01 2019
May 01

Web development has moved forward from writing websites by developing codes to a place where people can assemble the websites. And that is where the Drupal community is focusing on to advance - building assembled web experiences.

Drupal 8.7 releases today, on 1 May. It is in sync with that same roadmap (building assembled websites) providing enhanced customization, stable features, better UI and what not?

Here’s a quick and comprehensive guide for you to track what’s new in version 8.7 and how it paves the way for Drupal 9.

Drupal 8.7 Features and Updates

This is a significant update. It brings with it a stable Layout builder and Media Library, JSON API at the core, tour integration, seamless working of Content Moderation and Workspaces together, and a continued stabilized migration path.

Drupal 8.7 update retains the relevance in the emerging world of web technologies and competition. Riding on its API capabilities, new changes are aimed to be user-friendly.

Here’s a look at the host of features it brings along.

  • JSON:API at Core

    The update brings with it JSON:API at the core, marking another milestone towards making Drupal API-first. API-first means using the flexibility of Drupal to integrate it with other systems and be able to use content anywhere, display as you please.

    Content creators can, now, create their content models without having to write a single line of code.

    JSON:API module for Drupal 8 in action

    The JSON:API module is meant for creating high-performance APIs to expose Drupal data in JSON. It works by creating API endpoints and requires no configuration and the module instantly accesses all Drupal entities.

    Developers and content creators, now, can create their content models without having to write a single line of code. It not only provides a great authoring experience but also a powerful, standards-compliant, web service API to pull that content into JavaScript applications, digital kiosks, chatbots, voice assistants and more.

    This makes it easier for Drupal’s core ecosystem, of web services responsible for third-party content and application, to integrate.

  • Stable Layout Builder

    Released in 8.6 as an experimental module, Layout Builder is stabilized in Drupal 8.7 update. The module allows you to build layouts with ready-to-use multi-column layouts and Drupal blocks without the intervention of a developer.

    It is unique since it can support multiple and different use cases from templated layouts applied to dozens of pieces of structured content, to designing custom one-off pages with unstructured content.

    [embedded content]

    Drupal Layout Builder in action

    Here’s how it can be used in three different use cases:

    • Layouts for templated content: The creation of ‘layout templates’ can be used for a specific content type. Example, blog posts.
    • Customizations to templated layouts: Can customize the layout templates on a case-by-case basis. Example, to override the layout of a standardized product page.
    • Custom pages: The creation of custom landing pages which are not in sync to any particular content type or structured content. Example, a single ‘About us’ page.

      The Layout Builder is more powerful when used with Drupal's other out-of-the-box features such as revisioning, content moderation, and translations.

  • Workflow

    The workflow module enables you to create arbitrary workflows in Drupal and associate them with entities.

    The support for more revisionable properties would allow the staging of both content and associated properties

    However, taxonomy terms were not revisionable.

    The main issue with non-revisionable terms is site-wide previews of not yet published content (nodes, media items, taxonomy terms, menu links, etc.), through the Workspaces module.

    Taxonomy terms are now revisionable using the new API. This comes as part of the Entity system that helps retrieve an entity for converting the schema of a content entity type from non-revisionable/ non-translatable to revisional/translatable.

    This works well with other pre-existing data for the entity type whose schema has been changed and comes handy with content revisioning. The support for more revisionable properties would allow the staging of both content and associated properties.

    EntityDefinitionUpdateManage is now deprecated with no replacement.

    At the moment core only supports sequential revisioning, parallel revisioning support will be added in 8.8.

  • Media Library

    Shipped as an experimental module in 8.6, Media library is now stabilized and good to use.

    It provides a visually appealing interface for browsing through all the media items in your site. With the new version, multimedia properties can be added to content either by selecting from existing media or by uploading new media through bulk upload support. Once uploaded, users can remove or reorder any images ready for import.

    [embedded content]

    Media Library in Drupal 8.7

    It provides an easy way to upload several media assets in your Drupal website quickly. Let’s you add alt-text, check the images before uploading.

    Powered by Views, it allows site builders to customize the display, sorting, and filtering options.

  • Configuration Management

    The configuration management system in Drupal 8 is quite decent and allows configuration to be synced between installations of the same site in different environments. Configuration Management is part of the Configuration Management 2.0 Initiative which aims to include core support for extended workflows.

    The current workflow presumes that the configuration will be exactly the same in different environments. Developers have to edit the configuration when it is not present.

    The idea behind CM 2.0 is to the use case of sharing reusable packages of configuration among multiple sites

    The major drawback which comes as an API for both the DX and API architecture is:

    It allows modifying the sync storage as it is manipulated but since it has no concept of intent, the developer has to know which methods are called in which order of both the import and export process to correctly interact with it.

    Configuration Management 2.0 in version 8.7 allows the altering and importing the configuration. The idea is to the use case of sharing reusable packages of configuration among multiple sites is on (at least!) a fully equal footing with that of staging configuration on a single site.

    This allows the site administrator to review and safely import available configuration updates from installed modules, themes, and the install profile without overriding customizations made on the site. With 8.7 it can add the ability to select and use an existing configuration directory or storage at install time.

    Configuration Transformer API as the fundamental cornerstone has been added to bulk update configuration. It makes it easier for configuration on dev to be different from production

    New/expanded configuration management UIs for the issues (mentioned above) added to par with a new-to-Drupal site maintainer persona in mind. Experimental module for allowing environment-specific configuration has been introduced in 8.7.
    D8.7 INFOGRAPHIC (1)

And Drupal 9 readiness...

In order to give people reasonable upgrade time from Drupal 8 to Drupal 9, Drupal 9 will be released no later than a year before Drupal 8 goes end of life, that is in 2020.

Also, Drupal 9.0 is skipped, as it's intended to be only deprecated code removals, no new capabilities.

Other Important Information

Some other important information to take note of, are:

  1. Removed support for PHP 5

    Drupal 8.7 would no longer support the obsolete versions of PHP. Version 5.5 reached the end of life in 2016 and 5.6 in December 2018 meaning it no longer receives bugfixes, even for very serious bugs that (might) impact Drupal development. Moving forward Drupal encourages to use PHP V.7 or above.

    Since Drupal 8's automated tests require the PHPUnit library, continued use of obsolete version can put security at risk.

  2. End of support for Internet Explorer 9

    Due to a limit of 31 style sheets per page, Drupal dropped support for Internet Explorer 9 and 10 in 8.4. Since Drupal 8.5 and 8.6 retained a workaround to allow 32 or more stylesheets, this workaround has been removed in 8.7.

    Sites dependent on Internet Explorer 9 support should enable CSS aggregation (preferred) or install the IE9 Compatibility contributed module.

  3. Better Symfony 4 and 5 compatibility

    Drupal 8.7 will provide better compatibility with both Symfony 5 and Symfony 4 for faster web development, since Symphony 3 enters the end of life in November 2021. This includes changes in the Container and Translator Interface Symfony components, as well as resolving critical compatibility issues.

    Additionally, numerous critical Symfony 4 and 5 compatibility issues are resolved in this release.

What to Expect from Drupal 8.8?

Here’s what you need to look forward to in Drupal 8.8.

  • The Welcome Tour
    Adding Tour content for those unfamiliar with Drupal. This would help to teach people Drupal with hands-on experience, explaining backend/frontend choices made to build Umami.
  • Composer Support in Core
    Involves making an official method for starting a Drupal site with the composer kickstart template.
  • Admin UI and Javascript Modernization
    The new admin theme is part of the Admin UI and JS modernization initiative and will be released with Drupal 8.8.

    The goal is to create and update the admin look, that defines a complete set of principles while also consisting of visual and behavioural components to combine into a user-friendly interface.

    This will be based mostly on Seven’s styles theme.

    The navigation pages on the admin UI has been designed with an emphasis on readability, and reusability of existing styles from other components.

    Mockup of the interface with text written using the Devanagari writing system

    This would come with various benefits, including improved performance and better support for various writing systems. Using system fonts will also make the UI feel more familiar to the user since it will be closer to the users' environment.

    Drupal 8.8 Feature Freezes: October 2019
    Drupal 8.8 Releases: December 2019

    With Drupal’s commitment to reinventing itself to enable ambitious digital experiences, the community is getting ready for the launch of Drupal 9, and current updates are well in sync with it.

    Have questions about Drupal 8 features or 9 and how it might impact you? Already chalking out an upgrade plan? Our team of Drupal experts and range of Drupal development services are ready to help.

    Drop us a line at [email protected], and get the conversation started.

    Srijan is Signature Supporting Partner to the Drupal Association. With 140+ seasoned Drupalers of which 56+ are Acquia Certified, Srijan has the largest team of Drupal experts in Asia. 

Apr 30 2019
Apr 30

In 2018, the state of California passed the California Consumer Privacy Act, or CCPA, as a consumer-rights focused bill to protect user privacy. Similar to the GDPR, the new law would require businesses to be upfront about what data they are collecting, who they are sharing it with, and allow consumers to request their data be deleted.

This changes the equation significantly for US-based organizations. You may be fairly certain your site’s visitors are US-based, but what about the state they live in? What if they are from California? Similar to other laws originating in California, the mere presence of a law like this begins to affect how all the states treat issues of privacy.

As recent as April 2019, lawmakers were pushing several news bills to reign in some of those protections, on behalf of employers and businesses who found the new law too broad. The tech industry is somewhat discouragingly behind a lot of the lobbying as well. The original law was set to take effect by 2020, but some of the details are still being debated.

It seems certain, however, that some form of the law will be implemented soon. And much like the EU and GDPR, the first step as site owners will be more transparency on data collection, and making it easy for users to opt-out, or request their personal information be deleted. Listing your privacy policy is also a requirement.

The CCPA doesn’t appear to apply to everyone, however. It is targeted towards businesses with annual gross revenues over $25 million, and/or companies whose annual revenue primarily comes from selling users personal information. And unlike the GDPR, it is more of an “opt-out” law than “opt-in.” Websites don’t have to ask before applying a cookie, and businesses don’t have to ask before selling personal information. They do, however, need to offer an easy method to opt-out.

Apr 30 2019
Apr 30

Heather Rocker will lead the Association in supporting the global Drupal community.

Washington DC, April 30, 2019 - The Board of Directors of the Drupal Association has voted unanimously to appoint Heather Rocker as Executive Director to lead the Drupal Association.

Adam Goodman, chair of the Drupal Association Board, said, "Drupal is for ambitious digital experiences. Heather’s experience matches this ambition as we seek to increase adoption, diversify and invest in our community, and grow opportunities for builders, agencies, content creators and marketing decision makers. Heather brings seriousness of purpose, character consistent with our values and principles, and lively good humor — just what the Board and I were seeking out for our next leader."

The Drupal Association's mission is to unite a global community to build, promote, and secure the open source Drupal software. Since 2008, the organization has supported a global network of open source contributors; a robust business ecosystem; and has hosted events across 4 continents and more than 20 countries.

Heather Rocker said, "It’s an incredible honor to serve the Drupal Association in this capacity.  This opportunity is not only in alignment with my skills and experience but also with my core belief that outstanding things can be achieved through a dedicated and diverse community of volunteers and partners.  I look forward to building on the solid foundation and collaborative spirit that exists today. "

Heather will begin her work with the Association at the beginning of June.

Heather Rocker

About Heather

Heather Rocker joins the Drupal Association with a strong history of leadership in technology and the nonprofit world. She was the first executive director of the Women in Technology Foundation, as well as the CEO of Girls Incorporated of Greater Atlanta. Most recently she acted as the Managing Principal of Systems Evolution, Inc. in Atlanta, Georgia. She also serves as Immediate Past-President of the Board of Directors of Georgia FIRST Robotics.

Dries Buytaert, founder of the Drupal project, said, "I’m confident that Heather will move the Drupal Association into its next chapter. Her skills and experience at building relationships in both the non-profit and technology spaces will be a tremendous asset.  I also believe she’ll be a great partner with me to move forward the Drupal project as a whole."

About Drupal

Drupal is content management software. It is used to make many of the websites and applications you use every day. Drupal has great standard features, easy content authoring, reliable performance, and excellent security. What sets it apart is its flexibility; modularity is one of its core principles. Its tools help you build the versatile, structured content that ambitious web experiences need.

About the Drupal Association

The Drupal Association is dedicated to fostering and supporting the Drupal project, the community and its growth. The Drupal Association helps the Drupal community with funding, infrastructure, education, promotion, distribution and online collaboration at


Media Contact: Rebecca Pilcher
Phone: 503-405-1159 x 705
Email: [email protected]

Apr 30 2019
Apr 30

Heather Rocker will lead the Association in supporting the global Drupal community.

Washington DC, April 30, 2019 - The Board of Directors of the Drupal Association has voted unanimously to appoint Heather Rocker as Executive Director to lead the Drupal Association.

Adam Goodman, chair of the Drupal Association Board, said, "Drupal is for ambitious digital experiences. Heather’s experience matches this ambition as we seek to increase adoption, diversify and invest in our community, and grow opportunities for builders, agencies, content creators and marketing decision makers. Heather brings seriousness of purpose, character consistent with our values and principles, and lively good humor — just what the Board and I were seeking out for our next leader."

The Drupal Association's mission is to unite a global community to build, promote, and secure the open source Drupal software. Since 2008, the organization has supported a global network of open source contributors; a robust business ecosystem; and has hosted events across 4 continents and more than 20 countries.

Heather Rocker said, "It’s an incredible honor to serve the Drupal Association in this capacity.  This opportunity is not only in alignment with my skills and experience but also with my core belief that outstanding things can be achieved through a dedicated and diverse community of volunteers and partners.  I look forward to building on the solid foundation and collaborative spirit that exists today. "

Heather will begin her work with the Association at the beginning of June.

Heather Rocker

About Heather

Heather Rocker joins the Drupal Association with a strong history of leadership in technology and the nonprofit world. She was the first executive director of the Women in Technology Foundation, as well as the CEO of Girls Incorporated of Greater Atlanta. Most recently she acted as the Managing Principal of Systems Evolution, Inc. in Atlanta, Georgia. She also serves as Immediate Past-President of the Board of Directors of Georgia FIRST Robotics.

Dries Buytaert, founder of the Drupal project, said, "I’m confident that Heather will move the Drupal Association into its next chapter. Her skills and experience at building relationships in both the non-profit and technology spaces will be a tremendous asset.  I also believe she’ll be a great partner with me to move forward the Drupal project as a whole."

About Drupal

Drupal is content management software. It is used to make many of the websites and applications you use every day. Drupal has great standard features, easy content authoring, reliable performance, and excellent security. What sets it apart is its flexibility; modularity is one of its core principles. Its tools help you build the versatile, structured content that ambitious web experiences need.

About the Drupal Association

The Drupal Association is dedicated to fostering and supporting the Drupal project, the community and its growth. The Drupal Association helps the Drupal community with funding, infrastructure, education, promotion, distribution and online collaboration at


Media Contact: Rebecca Pilcher
Phone: 503-405-1159 x 705
Email: [email protected]

Apr 30 2019
Apr 30

Drupal is to release its latest version, Drupal 8.7, on the 1st May 2019. Review the entire Drupal product roadmap here.

Drupal 8.7 is a significant update for Marketers, Copywriters, Site Managers, and Creatives. It brings a new Media Library and Layout Builder, Drupal’s first drag-and-drop content manager, recently revealed at DrupalCon Seattle 2019

[embedded content]

 DrupalCon Seattle 2019

This update sees Drupal 8 retain its relevance in an emerging world of instant site builders, like Squarespace and Wix. Where Drupal has always stood out for its back-end capabilities and flexibility with API integrations, the new Layout Builder empowers Content Managers and Marketers. The user-friendly system allows Content Editors to maintain control over their content, throughout its journey to the end user. It also provides enhanced reactivity to the customer experience, as Site Managers can make edits without the assistance of a developer.

Of course, this isn’t just a standard drag-and-drop editor. Drupal 8.7 comes with a whole host of features you won’t find on low-end editors. These include instant multi-page management and the flexibility of powerful editorial workflows.

What is the Drupal Layout Builder?

The Drupal Layout Builder is a drag-and-drop content management tool. It allows non-technical individuals to design layouts in a structured way that adheres to the standard across the site. The new Layout Builder encourages users to take control, introducing blocks which help them to achieve designs and functionalities previously only editable in the developer's domain.

Key features include:

  • Modular template builder
  • Drag-and-drop paragraph editor
  • Permissions workflows
  • World-Class Accessibility 

[embedded content]

 Drupal 8.7 Layout Builder Recording


Simple, Reactive Page Management

Using the layout builder, Site Managers and Marketers can create new pages from templates. To build on these templates, users can insert new blocks from the pop-out sidebar that do not exist elsewhere on the site. Once the Site Manager has added a block, they can preview it instantly. At this point, if the editor isn’t happy, they can swap out blocks or replace images, text, buttons and more!

Users have recognised that it can be challenging to move huge, pre-built blocks and paragraphs in full preview. Using the preview toggle, users can now switch out of the full ‘Content Preview’ mode to a slicker block view. This simplified interface makes reordering blocks quick and easy. This differs from alternative drag-and-drop editors as the collapsed block editor sits within the same page. Therefore, editors can drag blocks across columns, as well as up and down.


The Drupal project has a long-standing commitment to accessibility and has been a leader in accessibility for many years. In 2018 Drupal Founder, Dries Buytaert, reaffirmed this commitment by stating that the forthcoming Layout Builder must be fully accessible.

The full 8.7 system is navigable by keyboard, in order to conform to Web Content Accessibility Guidelines, as recommended by the World Wide Web Consortium. This means that the drag-and-drop editor was designed with consideration for Site Managers, Marketers and Developers amongst us with specific accessibility requirements. Ultimately, the latest Drupal update will make agency life and in-house marketing that much more accessible to everyone.

[embedded content]

 Navigating Layout Builder by Keyboard


The Layout Builder supports essential activities such as adding, saving and previewing content, or publishing data. The latest update also supports more complex features, such as content staging or approval workflows, using granular controls and notifications for the governance of each layout. This is a great win for marketing teams, as it de-centralises the content management process. Site managers can submit site updates safely, with version controls and final permission escalation.

For more complex updates, Drupal 8.7 supports workflows which push pages through multiple teams. For example, an initial submission which is then passed via testing teams, SEO managers, translation and localisation experts for international audiences, and final senior sign off.


The Layout Builder also includes a templating feature, useful for sites with large quantities of content. For enterprise sites, Content Managers can edit collections of pages all at once using the Layout Template Editor. Not only can they be edited in unison, they can also be rearranged while retaining their unique content. The ability to re-structure multiple pages at once saves a huge amount of time when one block needs to be changed across multiple locations.

Layout-Builder-template-modeThe Layout Builder in template editing mode

The Drupal Layout Builder was built entirely on Open Source contributions made by 123 contributors and 68 worldwide organisations.

Drupal 8.7 Layout Builder Contributors

The 123 contributors (DrupalCon Seattle 2019: Driesnote)


Media Library

Drupal 8.7 included the release of a Media Library, to make asset management faster for Site Managers, particularly within the drag-and-drop format.

[embedded content]

 The Media Library in action


The Media Library is a pop-out window from which images and video can be inserted into the webpage. The library pulls content from the organisation’s existing bank of images, hosted within Drupal. Or, users can upload media directly from their cloud or hard drive.

The addition of the Media Library allows Site Managers to insert or change images or video more efficiently than ever. The user selects the area where the image will be added and opens the Media Library. They can then select from existing images or upload multiple new assets at once. Once uploaded, users can remove or reorder any images ready for import. Once happy with the images, the user can add metadata and any extra information (like links), or change the format to video.

The Media Library was made possible by Open Source contributions from 310 individuals and 122 organisations.

Drupal 8.7 Media Library Contributors

The 123 contributors (DrupalCon Seattle 2019: Driesnote)


Technical updates

There have also been a host of additional updates and tweaks to Drupal, improving its speed and background functionality. Such updates include adding JSON:API as a core module and providing a consistent way of displaying JavaScript Messages. For the full list of technical updates, visit the Drupal website here.

What’s Next?

Administration UI - Drupal 8.8 or 8.9

The administrative side of Drupal, where site managers navigate the back end and manage content, has been close to untouched for the past 10 years.

The User Interface (UI) is currently being redeveloped to be aligned and reflect the software behind Drupal, giving it a modern look and feel. This includes better use of space (and white space) and more contrasting features. The additional space also means its more accessible, and will receive a WYSIWYG integration.

Drupal 8.8 UI

Proposed UI for Drupal 8.8


Sign up to email alerts to find out more or talk to our Drupal Web Development Experts about upgrading your Drupal Platform.


Get in touch
Apr 29 2019
Apr 29

Our testing approach was two-fold, with one underlying question to answer: what is the most intuitive site structure for users?

Test #1: Top Task survey

During the Top Task survey, we had users rank a list of tasks we think they are trying to complete on the site, so that we have visibility into their priorities. The results from this survey informed a revised version of the navigation labels and structure, which we then tested in the following tree test. The survey was conducted via Google forms with existing Center audiences, aiming for 75+ completions.

We then used these audience-defined “top tasks” to inform the new information architecture, which we tested in our second test.

Test #2: IA tree test

During the tree testing of the Information Architecture, we stripped out any visuals and tested the outline of the menu structure. We began with a mailing list of about 2,500 people, split the list into two segments, and A/B tested the new proposed structure (Variant) vs. the current structure (Benchmark). Both trees were tested with the same tasks but using different labels and structure to see with which tree people could complete the tasks quicker and more successfully.

Apr 29 2019
Apr 29

Recently recognized as Google Cloud Platform partners, Achieve are adding additional services, products, and capabilities in light of this new partnership. We sat down with our CTO, Nick Falcone, to go over some specifics on this partnership and what it means for Achieve and our capabilities moving forward.


When did we decide becoming a GCP partner was a necessity for Achieve moving forward?

With Achieve being Apigee System Integrations Partner for the past 3 years and Google acquiring Apigee, we realized it was only a matter of time before Apigee would rolled up into the larger GCP Partner Program and ecosystem.

Are we recognized as an authorized or premier partner, and what does that mean for Achieve?

Achieve Internet is recognized as a GCP service partner. We are looking to add the Cloud Migration and Application Development specializations over the year with while working towards attaining the Premier Partner designation. Being partners with Google gives us the ability to help our clients use the most advanced technologies to drive innovation and be faster to market.


In what ways does this change the game for Achieve and the clients we work with?

GCP is one of the leading cloud providers today and adding new cutting edge services daily. Being able to partner and co-market with Google is a no brainer. The GCP Partner program give us access to a wide array of tools, training, and roadmap information that puts us in the best position to meet market demand while leveraging cutting edge cloud technologies.


Have we added services/products inlight of this partnership?

Yes, we will be growing and adding additional capabilities around CI/CD with Kubernetes, lift and shift migrations, Apigee Hybrid, ML/AI, and GCP application development, and microservices. We want to ensure we can help our clients regardless whether their environment is on-prem, hybrid, or multi-cloud.


Is this a completely new line of business for AI or an extension to our current offerings?

It’s a combination of both. We have been recognized as Apigee Edge and Drupal DevPortal experts for a number of years, but we are continuing to add additional capabilities to be recognized a full stack provider and directly expand around services around Apigee. As we continue to expand our digital transformation expertise, we are adding services that directly support our clients’ needs GCP application development, Apigee Hybrid, Anthos, and lift and shift cloud migrations.

Apr 29 2019
Apr 29

Learning how to manage communication and support within the Webform issue queue is something that makes me very proud. I also want to keep improving everyone’s experience within the Webform issue queue. A while back, I started welcoming new contributors and saying thank you. Frequently, I have to direct general support questions to Drupal Answers. Occasionally, I have had to remind people to be mindful of their tone. I am continually seeking ways to improve my process and communication within the Webform module's issue queue.

At Drupalcon Seattle, I took part in a discussion about strategies for effective and inclusive group communication where I was introduced to the "nudge theory".

A nudge makes it more likely that an individual will make a particular choice, or behave in a particular way, by altering the environment so that automatic cognitive processes are triggered to favour the desired outcome.


Besides nudging people towards the desired outcome, which is a healthy and sustainable Open Source collaboration, clearly defining these nudges will also make it easier for everyone to improve the overall support and community within the Webform module's issue queue.

Types of nudges

There are three types of nudges within most issue queues - they can be categorized as:

  • Welcome and thank you

  • Values and principles

  • Guidance and directions

Welcome and thank you

Saying a proper welcome and thank you helps set the overall tone of our collaboration. The act of saying "welcome" to a new contributor establishes that we are an inclusive community where everyone is welcome to join. Saying 'Hi' (aka nudges) to new users also reminds other members of the community to be understanding and supportive of someone entering a new community.

Following up someone's contribution with a thank you comment or even handshake (aka nudges), acknowledges and values their hard work and encourages them to keep contributing.

Value and principles

Digital spaces provide anonymity with a lot of freedom of expression. We want everyone to feel comfortable with their own identity and respectful of their unique contribution to Open Source. Ultimately we want everyone to play nicely together, which is why online communities establish a code of conduct. The Drupal community has a code of conduct which embodies the community’s values and principles. Codes of conduct can be perceived more as rules meant to prevent conflicts, while values and principles lean more towards ideals and beliefs. Reminding someone of Drupal's values and principles can feel like a more subtle nudge versus citing misconduct. In the Drupal community, our code of conduct and values and principles are so closely intertwined there is a lot of overlap; values and principles sound less finger-pointy and disciplinary. Values and principles foster engagement and provide growth, support, and direction.

Guidance and directions

Providing guidance with good directions make everyone's experience better. Honestly, no one knows exactly what they are doing in Open Source and Drupal because we are building software through one giant collaboration with a community that is in a constant state of flux. When entering a new community, it’s nice to have some direction and guidance on how to interact and contribute to the community. Within the Drupal community, people should understand how they should interact with the code, issue queue, each other, and where they can find help.

Updating the Webform module's issue submission guidelines

Providing clear information and guidelines helps to improve our collaboration. It is important to nudge and remind ourselves that everyone has good intentions when creating a ticket in an open source project's issue queue. Below are the updated submission guidelines for the Webform module. I know these guidelines are verbose and require some scrolling. At the same time, they also provide us with little 'hello' snippets of useful nudges that can be cut-and-pasted within issue queue comments, which can help everyone get the most out of our collaboration and community

Below is the updated submission guidelines, which everyone will now see when creating a new ticket in Webform module's issue queue.

Welcome and thank you

Welcome to the Webform module's issue queue, everyone is invited to participate.

Everyone is a volunteer. Please have patience and respect - we are all here to help one another and share our ideas, code, and passion.

Thank you for helping make the Webform module and our community a little better and stronger.

Values and principles

Guidance and directions

Even though all documentation and issues are in English, not everyone in the Drupal community is a native English speaker. Please take your time writing and reading each other's issues, comments, and communications. If something is confusing, please ask or provide clarification.

Please read the issue queue handbook before posting. Follow the priority and status guidelines. Only set the priority to "critical" if you are reporting a bug that causes data loss.

To prevent duplicate tickets, please search the issue queue before creating any new issues. If you find an open related issue, feel free to join the discussion by posting a comment. Generally, old and resolved issues should remain closed and linked to from a newer related ticket.

Please use the issue template to provide a detailed and focused summary for a single issue. This will make it easier for everyone to help you solve or fix your problem or challenge.

The Webform module's issue queue is for bugs, feature requests, and planning. Please post general support questions to Drupal Answers. You can also ask questions or help answer questions on the #webform channel on Drupal Slack.

Check out the Webform module's articles, video tutorials, and cookbook to find additional help and documentation.

Please review attached patches by applying them to your local development or by using

Patches and ideas are always welcome. Please provide automated test coverage for bug fixes and improvements, which can cause regressions or unexpected issues.

Almost done…

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

OKSubscriptions powered by Strikingly

Apr 29 2019
Apr 29

Dries Buytaert recently published a great post on how to prepare for Drupal 9. He explains how we build Drupal 9 in Drupal 8 using deprecations and the tools to use to detect use of deprecated code. One of the tools I worked heavily on with Zoltán Herczog in the past few weeks is Upgrade Status, and Zoltán just released the alpha2 version. It is definitely worth a try!

Here is how it works:

The module provides an overview of all the contributed and custom projects you have on a Drupal 8 site. It groups custom modules based on the directory structure and takes contributed projects from the update module. For contributed projects it also displays the available updates information inline. This is because if you keep contributed modules up to date, they should eventually improve Drupal 9 compatibility. We also plan to allow project maintainers to inform users about the best way to engage with them on the way to Drupal 9. This is dependent on new project fields on which we plan to use to pull information to this dashboard.

Looking at the project list, the UI allows you to run a report on all of the projects to find any known Drupal 9 incompatibilities. Because running the full report takes a really long time, the UI also allows you to run reports on projects one by one. Or rerun the report on specific projects as you are working on improving their codebase. You can export the full report and each report individually.

The reporting backend and the report output is based entirely on the fantastic work of Matt Glaman on drupal-check at Centarro (formerly Commerce Guys) which is in itself based on phpstan by Ondřej Mirtes. We use the same tools that are used in drupal-check, the best command line tool available to check for deprecation errors (and other code quality issues). If you plan to include Drupal 9 compatibility checking in your build or continuous integration system, then drupal-check is your best bet.

Matt is also working with Ondřej to include the @deprecation annotation text in errors, which would improve the usefulness of the reporting of both tools immensely. Until then Upgrade Status links to for documentation where you can find the deprecation documentation as well and learn about how to fix it.

The alpha2 version of the module was just released including support for recovering from PHP fatal errors (that legitimately happen in parsing some projects), as well as better chunking of project parsing so huge projects like Drupal Commerce will not result in timeouts or memory limit issues. We plan to improve the interactive experience further as well as fix any bugs reported, so please keep the reports coming. Looking forward to your experience with Upgrade Status!

Apr 29 2019
Apr 29

Drupal has been the choice of the world’s multiple large and top-notch organisations, across various fields. The royal family of the UK, the Greenpeace Greenwire, Oxford University, Warner Music Group, Tesla, Red Cross, and now the Australian Government - everyone is using Drupal. Security and the scope of customisation are two of the major reasons behind the selection of Drupal over other CMS platforms. In fact, the govCMS was also formed using Drupal to resolve the multiple issues faced by Government agencies viz. Security, cost, extraordinaire functionalities, flexibility, smooth process of procurement, et al.

As a dedicated Drupal-er for more than 6 years, AddWeb has worked on multiple enterprises and large-sized Drupal projects. And hence, we are cognizant of all the strengths that Drupal contains. This is exactly why we confirm with the Australian Government’s decision of choosing Drupal for creating govCMS.

There are multiple reasons that make govCMS an apt choice for Government organisations. govCMS is well-equipped to meet all the requirements of the Government organisation, along with following their guidelines of the web world.

Advantages of govCMS:

The Australian Government created the govCMS distribution by combining Drupal Core and a specific set of Drupal modules. So that uniformity is maintained across all the Australian Government’s websites and it the creation of the same also becomes easy. Let us how else does this, govCMS distribution proves to be advantageous:


Individual web hosting and creation of the sites demand time and money. The higher the security and quality of these sites, the higher the costing. govCMS saves on both of these factors and simplifies the entire process by choosing a single provider and hosting platform on Acquia Cloud Site Factory PaaS Service. In fact, whenever there’s an increase in resource usage, one can always upgrade the platform, which is eventually beneficial to all the other govCMS sites also.

Government Standards Compliance

The entire govCMS is created in a way that it perfectly complies with the standards of the Federal Government. Hence, this makes the further process quite smooth and sorted. Secuirty being one of the major concerns while creating a website for such Government organisations. And hence, govCMS has complied with their guideline by completing the program process of Information Security Registered Accessors. Plus, every issue that is found and rectified in govCMS will also automatically be implemented to other govCMS sites too.

Software Maintenance

Drupal is one of the largest open-source platform available today and hence it has a large team of 600 expert community members, who work on making govCMS a consistently growing and highly efficient product. This is taken care by Acquia, which also provides 24x7 assistance for govCMS at application and hardware level.   

Security Compliance

One constantly needs to confirm that there are no issues with the govCMS sites, for which a continuous process of testing, bug-fixing and other such process is required to be followed. This is very well taken care of, when it comes to govCMS and hence the security of this platform is kept intact. In fact, an automated testing process has also been set across the entire network by using Behat.


In today’s day and age, a website that is not responsive is outdated. Fortunately, govCMS has been created with a base-theme that is responsive by default. This provides the developers in quick-creation of custom themes. This also helps in the creation of a standard look and feel of the Australian Government’s website, which converts into a user-friendly experience.

Accessibility Compliance

Every single Government website needs to be in compliance with the Web Content Accessibility Guideline (WCAG) AA 2.0. And hence, WCAG AA 2.0 has been at the base of creating the base-theme and hence it’s in complete compliance with the Government standards. This also helps in elevating the user-friendliness of the website. govCMS also provides a list of the accessible elements either via the content pages or the WYSIWYG editor.

Data Retention

Backups are a very critical and significant part of any website. So when it is a Government website, the stakes are even higher. The creation of govCMS is done in complete compliance with the National Archieves of Australia Standards. This includes about 7 years of data retention on backups, which is a highly beneficial factor that works in the favour of these govCMS-based Australian Government’s websites.  

Closing Words:

govCMS is a pool of perfection when it comes to a platform meant for Government - highly secure, affordable and effective! AddWeb is glad to have worked on the creation of the govCMS website with all our expertise and experience over Drupal. We’ll be delighted to share more about it in our future blogs. If there’s anything specific in your mind that you wish to learn about govCMS then feel free to write to us in here. Also, we’re looking forward to creating and contributing more towards govCMS projects.


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