Updates from Drupal 8 core initiatives for February 2017

Posted by Drupal core announcements - 17 Feb 2017 at 15:24 UTC

Now that Drupal 8.3 is in beta, it is time to look at progress around core initiatives again and see how you can help move one or more of them forward. Once again I asked initiative contributors to help compile this post to inform you all of progress across the board. This is just a sampling of some improvements, there are a lot more that we could not cover here.

Default content and new core theme

The default content and new core theme teams decided to join forces because the goals are intertwined. The teams found it hard to demonstrate good default content without a supporting visual look and vice versa. The plan to go with a farmer's market site changed to a more general publication site, but that still allows for plenty of things to showcase. We are looking for a designer / art director for the project (deadline today!).

Use the Slack channel if you want to help or if you just want to follow our progress. Get an invite at https://drupaltwig-slack.herokuapp.com/.


The media team held a sprint in Berlin in December. Unfortunately none of these media improvements landed in Drupal 8.3, however we are very close to complete the base media functionality early in Drupal 8.4. There was significant progress on the visual media library too. Next step is to finalise the plugins for images, documents and oEmbed.

Join in the #drupal-media channel on IRC.


The Migrate API became beta in Drupal 8.2.x with 8.2.5 and will apply to 8.3.0 as well. On the other hand other parts of the migration system like the Migrate Drupal API are still alpha stability and received some big updates. Two huge additions are the migration path for Drupal 7 node translations to Drupal 8 content translation and support added for configuration translations (and implemented initially for user profile fields).

Join in the #drupal-migrate channel on IRC.


Most of the recent progress on the multilingual initiative was in collaboration with the migration team and that is still heavily ongoing. Further feature development around multilingual features is not on the table currently, as most contributors moved on to more pressing areas given the advances achieved in multilingual with Drupal 8 already. Therefore it is being proposed to officially remove the multilingual initiative from the list.


The work in the PHPUnit initiative is focusing on converting a large part of old Simpletest web tests to PHPUnit based browser tests. The goal is to commit a larger patch on February 21st to the Drupal 8.3.x branch. After that one third of Drupal core’s web tests would be converted to PHPUnit browser tests. We are also discussing the timeline for deprecating Simpletest.

We are also working on improving our JavaScript browser tests in multiple issues. For documentation there is also a Javascript browser test tutorial now!

If you want to convert your tests in your contrib / custom module, please read the PHPUnit browser test tutorial and help out on https://www.drupal.org/node/2794285 in case you run into problems. Please follow the PHPUnit initiative issue for status updates. Join us in IRC in #drupal-phpunit.

(This update written by klausi & dawehner)


The biggest user facing change with workflows since the last update is the introduction of the Workflows module as a separate concept from content moderation. Now other modules can use workflows for user levels, commerce and other needs as well, when the workflow has nothing to do with content moderation. Many API changes were also made including support for moderation of non-translatable entity types and entity types without bundles (as long as revisions are enabled). Publishing entities implementing EntityPublishedInterface is also possible now, not just nodes.

Wondering how to join an initiative? Meeting information for each initiative is listed at https://groups.drupal.org/node/514585

A big chunk of old tests using WebTestBase wil be converted to PHPUnit BrowserTestBase on Feb 21st

Posted by Drupal core announcements - 17 Feb 2017 at 14:29 UTC
Start:  2017-02-21 18:00 Europe/Vienna Event type:  Online meeting (eg. IRC meeting)

As part of the PHPUnit initiative a considerable part of Simpletests will be converted to PHPUnit based browser tests on February 21st 2017. A backwards compatibility layer has been implemented so that many Simpletests can be converted by just using the new BrowserTestBase base class and moving the test file. There is also a script to automatically convert test files in the conversion issue.

Developers are encouraged to use BrowserTestBase instead of Simpletest as of Drupal 8.3.0, but both test systems are fully supported during the Drupal 8 release cycle. The timeline for the deprecation of Simpletest's WebTestBase is under discussion.

The Lullabot Approach to Sales

Posted by Lullabot - 16 Feb 2017 at 21:00 UTC
Mike and Matt sit down (literally!) with Lullabot's sales team. Learn how Lullabot does sales, and what it takes to sell large projects.

Beginner’s guide to Mail System in Drupal 7 and 8

Posted by Valuebound - 16 Feb 2017 at 18:40 UTC

This blog is all about How Drupal handles the Mail system & the stages it has to go through.
In Drupal to sends an email we need to take care of two rules

  1. Declare all the required properties under hook_mail().
  2. Call drupal_mail() with argument for actually sending the email

However in the scenario like bigger & complex site the above steps won’t be enough. But Drupal gives us a Flexibility to customize email sending process, before that it’s necessary to know how stuff works behind the scenes first. In this article I’ll show you how you can customize and extend the Drupal mail system to fulfill your needs.

While sending an email drupal_mail() function uses system class for…

What skills should a Drupal Developer have?

Posted by Valuebound - 16 Feb 2017 at 16:14 UTC

With the ever growing Drupal Community, a beginner is many a times lost in the vast number of resources, with increasing number of developers in Valuebound, I spoke to some of the seasoned developers on their opinion about the skills that a Drupal developer should have and also sifted through tons of materials from Stackoverflow and some more places.
The skillset that we are discussing here will give a clear idea about where you stand, what you know, what you do not know and of course fill me up with what I have missed, and I will quickly add up the suggestions. Before this I have …

Why Performance Best Practices Aren't Speeding Up Your Site

Posted by Zivtech - 16 Feb 2017 at 14:00 UTC

There's no shortage of generic web performance optimization advice out there. You probably have a checklist of things to do to speed up your site. Maybe your hosting company sent you a list of performance best practices. Or maybe you use an automated recommendation service.

You've gone through all the checklist compliance work, but haven't seen any change in your site's speed. What's going on here? You added a CDN. You optimized your image sizes. You removed unused code. You even turned off database logging on your Drupal site and no one can read the logs anymore! But it should be worth it, right? You followed best practice recommendations, so why don't you see an improvement?

Here are three reasons why generic performance checklists don't usually help, and what really does.

1. Micro-Optimizations

Generic performance recommendations don't provide you with a sense of scale for how effective they'll be, so how do you know if they're worth doing?

People will say, "Well, if it's an improvement, it's an improvement, and we should do it. You're not against improvements are you?" This logic only works if you have infinite time or money. You wouldn't spend $2000 to make changes you knew would only save 1ms time on a 10s current page load.

Long performance checklists are usually full of well-meaning suggestions that turn out to be micro-optimizations on your specific site. It makes for an impressive list. We fall for it because it plays into our desire for completion. We think, "ROI be damned! There's an item on this list and we have got to do it."

Just try to remember: ABP. Always Be Prioritizing.

You don't have to tackle every item on the list just for completion's sake. You need to measure optimizations to determine whether you're adding a micro-optimization or slaying a serious bottleneck.

2. Redundant Caching

In security, the advice is to add more layers of protection. In caching, not so much. Adding redundant caching will often have little to no effect on your page load time.

Caching lets your process take a shortcut the majority of the time. Imagine a kid who takes a shortcut on her walk to school. She cuts through her neighbor's backyard instead of going around the block. One in 10,000 times, there's a rabid squirrel in the yard, so she takes the long way. Her entrepreneurial friend offers to sell her a map to a new shortcut. It's a best practice! It cuts off time from the original full route that she almost never uses but it's longer than her usual shortcut. It will save her a little time on rabid squirrel days. Is it worth the price?

The benefit of a redundancy like this is marginal, but if there's a significant time or cost investment it’s probably not worth it. It's better to focus on getting the most bang for your buck. Keep in mind that the time involved to add caching includes making sure that new caches invalidate properly so that your site does not show stale content (and leave your editors calling support to report a problem when their new post does not appear promptly.)

3. Bottlenecks or Bust

Simply speaking, page load time consists of two main layers. First there is the server-side (back-end) which creates the HTML for a web page. Next, the client-side (front-end) renders it, adding the images, CSS, and JavaScript in your web browser.

The first step to effective performance optimization is to determine which layer is slow. It may be both. Developers tend to optimize the layer of their expertise and ignore the other one. It's common to focus efforts on the wrong layer.

Now on the back-end, a lot of the process occurs in series. One thing happens, and then another. First the web server routes a request. Then a PHP function runs. And another. It calls the database with a query. One task completes and then the next one begins. If you decrease the time of any of the tasks, the total time will decrease. If you do enough micro-optimizations, they can actually add up to something perceptible.

But the front-end, generally speaking, is different. The browser tries to do many things all at the same time (in parallel). This changes the game completely.

Imagine you and your brother start a company called Speedy Car Cleaning. You want your customers to get the fastest car cleaning possible, so you decide that while you wash a car, your brother will vacuum at the same time. One step doesn't rely on the other to be completed first, so you'll work in parallel. It takes you five minutes to wash a car, and it takes your brother two minutes to vacuum it. Total time to clean a car? Five minutes. You want to speed things up even more, so your brother buys a more powerful vacuum and now it only takes him one minute. What's the new total time to clean a car?

If you said five minutes, you are correct. When processes run in parallel, the slowest process is the only one that impacts total time.

This is a lesson of factory optimization as well. A factory has many machines and stations running in parallel, so if you speed up the process at any point that is not the bottleneck, you'll have no impact on the throughput. Not a small impact - no impact.

Ok, then what can we do?

So is it worthless to follow best practices to optimize your speed? No. You might get lucky, and those optimizations will make a big impact. They have their place, especially if you have a fairly typical site.

But if you don't see results from following guesses about why your site is slow, there's only one sure way to speed things up.

You have to find out what's really going on.

Establish a benchmark of current performance. Determine which layer contributes the most to the total time. Use profiling tools to find where the big costs are on the back-end and the bottlenecks on the front-end. Measure the effects of your improvements.

If your site's performance is an issue, ask an expert for a performance audit. Make sure they have expertise with your server infrastructure, your CMS or framework, and front-end performance. With methodical analysis and profiling measurements, they'll get to the bottom of it. And don't sweat those 'best practice' checklists.

AGILEDROP: Drupal Logos in Human and Superhuman Forms

Posted by Agiledrop.com Blog - 16 Feb 2017 at 09:45 UTC
Every brand needs a logo. When Dries Buytaert decided to release the software behind drop.org back in 2001, making Drupal an open source project, he needed a symbol too. So, Kristjan Jansen and Steven Wittens joined their powers and stylized a Druplicon, a drop with eyes, curved nose and a mischievous smile. Since then Druplicon has been an indispensable part of the Drupal Community. Druplicon is relatively easy to manage, moderate and share, so people in Drupal Community like to work with it very much. Back in December 2016, when it was Christmas time, we presented you the possibilities of… READ MORE

Product Display: Contextual Field Output in Drupal Commerce

Posted by Drupal CMS Guides at Daymuse Studios - 16 Feb 2017 at 00:42 UTC
Learn Product Display Contextual Field Output in Drupal Commerce Video Tutorial

Learn how to contextually output field data in Drupal Commerce with the Product Display tool. YouTube Video Tutorial included for e-commerce projects.

DrupalCon Vienna Program Changes

Posted by Drupal Association blog - 15 Feb 2017 at 16:59 UTC

It is our goal at The Drupal Association to be sustainable, so we can deliver on our mission for years to come. In 2016 we reorganized to achieve this goal, which moved us into healthier financial waters. However, we still have work to do.

After financial analysis, we can see that some programs sustain themselves and some do not. The good news is, most do. Unfortunately, DrupalCon Europe often does not. In the past, we’ve taken a loss because DrupalCon Europe is an important way in which we serve the community. Now, with renewed focus on our financial health, we need to rethink how we achieve this event in a more sustainable way.

To make sure we are balanced between serving our mission and making this event sustainable, The Drupal Association and Board created a DrupalCon Europe task force. After looking at the event financials we determined the best way to achieve notable expense savings was to eliminate our Monday programming and activities. This cut includes full day training sessions, the Community Summit and Business Summit, and one day of sprinting.

DrupalCon training and Business Summit registrations have noticeably declined in attendance in recent years, making them most reasonable to eliminate. The Business Summit cancellation is balanced through increasing value in business track programming, CEO dinner, and organically organized BOFs throughout the week.

Cancelling a day of sprints was a tough decision, however recent feedback shows that numerous sprints are a contributing factor to burn-out, and the eliminated sprint is just one of many we offer during DrupalCon. The sprint was a healthy choice to eliminate both financially and programming-wise.

While some of those individual activities generated revenue or directly supported mission work, the most direct way to achieve notable savings is to eliminate one full day of production: the cost for staff to prepare a venue, run heating and cooling, provide and service WiFi, and catering. Some of the traditional Monday activities will shift to later in the week, for instance, the opening night reception will move to Tuesday evening.

The other direct cost saving we can realize without eliminating programming, is to no longer offer free attendee t-shirts and physical tote bags. We know, the free t-shirts are awesome and this is not fun to read. The upside is that sponsors - who do an amazing job helping fund DrupalCon - always bring their t-shirt-best to the exhibit hall. We are evaluating if we can provide a collectible t-shirt for purchase as an alternative option. Additionally, we will be providing electronic tote bags with giveaways from sponsors.

We wanted to communicate the notable changes above as soon as possible. But some other, more minor details are still being ironed out. For instance…

We aren't approaching this puzzle from just an expense standpoint. We are also looking at plans to make the event more financially accessible for attendees. We are researching options like ticket discounts for qualified attendees and early bird discounts for Drupal Association members. These are not set in stone, just explorations at this point.

Beyond the financial accessibility of a DrupalCon ticket, we are looking to expand DrupalCon attendance by inviting new attendees. We need more contributors, a next generation of sprint mentors, on-site DrupalCon volunteers, and enthusiasts who go home and champion Drupal to their colleagues and peers. We will be launching support campaigns to introduce new audiences to DrupalCon, and equip our partners and sponsors with the tools and support to promote DrupalCon to their own circles.

This plan is still evolving and things may change. There may still be additional changes as we learn and see the impacts of the decisions we’ve already made. We're working hard to balance costs with benefits, and preserve the strong community experience that makes DrupalCon special. We will continue to communicate as we go - we know DrupalCon is as important to all of you, as it is to us.

247: Diversity, Differentiation, Value(s) with Tim Deeson

Posted by Acquia Developer Center Blog - 15 Feb 2017 at 16:38 UTC

While passing through London in late 2016, I sat down with Tim Deeson, lead at the Deeson agency. We talked about the history of his company, delivering value with Drupal is more than delivering code, and Tim's revelations and action regarding diversity at his company and in the tech industry.

Resources / Mentioned
  • White men in digital - our privilege is blinding - Deeson blog, September, 2016
  • A progress update on creating inclusive teams at Deeson - Deeson blog, January, 2017
  • The ten actions Tim and Deeson committed to in 2016 to improve diversity in their company:
    • Begin annual salary audits to check for bias and rectify imbalances
    • Report on our progress when we do our quarterly planning
    • Implicit bias training for everyone
    • Stop attending conferences that don’t have a credible Code of Conduct
    • During hiring, take a more nuanced view on whether a developer has made open source contributions
    • Stop participating in all male conference panels
    • Improve our Careers page, including clarity on parental leave
    • Stop asking for previous salary during hiring – it can perpetuate pay inequality
    • Create dialogue and feedback channels within the company to offer better support
    • Stay informed and signpost groups working in the industry
Conversation Video

[Full Conversation Transcript] The Deeson Origin Story

jam: Tim Deeson, you run what’s now called the Deeson Agency. Is that right?

Tim: Yes, that’s our social media name, but just “Deeson.”

jam: Deeson.

Tim: Yes.

jam: What’s the history of Deeson?

Tim: Deeson is a family business. It was started by my grandfather in the ‘50s, and was a contract publishing company. In 2001, we started the digital agency and that’s the main part of business, but we, actually, still have a small publishing company, too.

jam: You and I talked several years ago now on the podcast about the origins of the business and coming from print to digital and all of those things, but it’s really one of those stories about like, “Yes, I can build a website, Dad!”

Tim: Yes. I came back from backpacking and a family friend, when I lived in San Francisco, a family friend who worked for Apple, he taught me how to hack around with Macs and stuff. I kind of came from backpacking, needed some money. This was kind of in pre-CSS days, actually, I started making websites, kept picking up clients and kind of went from there. In about 2007, we started doing Drupal.

jam: Pre-CSS.

Tim: Yes. This was Adobe GoLive ... CSS was just starting to come out there.

jam: Do you still write your HTML in all caps?

Tim: Yes. I don’t write HTML anymore.

jam: Do you still use spacer gifs?

Tim: Yes, and I shrink a massive table and it’s mostly made of one-pixel gifs That’s the only way I know, unfortunately. CSS passed me by.

jam: They let you do the managing now.

Tim: Yes. More the spreadsheets and the blog posts, probably more where my talents lie, in reality.

Delivering Value with Drupal

jam: Can you talk about the difference between delivering code or delivering Drupal and delivering value higher up the value chain?

Tim: Yes. I guess, I always look at these things as kind of nested, you know, often clients don’t necessarily have a strategy that they work to. Looking – things like Drupal are tools that nested within a strategy, you can deliver value because they have certain attributes, but it’s starting, for me, to the top or the bottom to understand if we want to grow sales in Europe, for example. It’s, then, looking at ways to do digital channel to that and how – what’s a cost effective long-term way of delivering their sales reliably and where does that keep stacking up.

jam: “I want a website” or “I have a website” is no longer transformational, right?

Tim: No. Absolutely. We work really hard with clients to make sure that they understand what’s the business change. We always treat our projects and change management and transformational projects--no one actually wants a website. What they want is happier customers or better-informed surgeons. We’re always looking at the KPIs that will actually measure the business impact of the platform that we’re going to build rather than who should be biggest on a home page or is a carousel a good thing or a bad thing? Whenever we get into those debates, we know that we’ve lost sight of the some key goals that, for the business, are the things that really matter.

jam: The flipside of that coin is delivering websites, whether Drupal or whatever, is also not necessarily a differentiator anymore.

Move up the Chain

Tim: No. Certainly not. Digital agencies, generally, are fighting a kind of commoditization. We think about agency work as kind of, “Do it for me”, “Help me think” or “Think for me”.

“Do it for me”, is just do what exactly what you're told, and it’s very easy to make that kind of commoditized.

“Help me think”, starts to get into the UX and design side of the work. I want you to help me work out what the features are on the site.

“Think for me”, is the strategy. So, they’re coming to you with just a relatively short brief often of, “I need all of the the surgeons in Europe who do heart surgery to understand these training techniques. What are you going to do about it?” That’s where we, actually, can work with them on that kind of overall strategy which will have a strong digital element if they’ve come to us, but it’s an open brief, effectively.

jam: “Do it for me”, “Help me think”, or, “Think for me.” Okay.

Tim: We kind of look at that as a kind of commoditization curve, really, within the market where if you're just delivering exactly what you’ve been asked to deliver, then that’s very easy to niche or offshore, for example, and you're really competing on cost.

jam: Or Squarespace or Wix or wordpress.com, right?

Tim: Yes. And increasingly, those tools get more and more sophisticated that the client can actually deliver those solutions themselves. There’s not – you're not adding much value. You're not adding much intellectual value anymore, which means it’s, potentially, not going to be good for rates and retention.

jam: Right. So, not only do you have to deliver more value, but you have to differentiate, right?

Tim: Yes. Those things are often interlinked, but understanding what is the value that you really adding. Some of them is really hygiene value and reliable code, secure working platforms, but, increasingly, amongst the good agencies. There are not endless amounts, but there are certainly competitor agencies, it’s a significant kind of chunk that I would count as great agencies. How do you, then, differentiate amongst yourself, amongst those agencies, as well?

Diversity and Differentiation

jam: You and I have been talking a bit about one of the things that we might consider a differentiator. I was wondering if you could talk about your recent journey in the worlds that we’ll broadly define as diversity.

Tim: Yes. Probably about nine months ago, we were looking at DrupalCon Europe sponsorships, and it’s been an issue that has been in the back of my mind if do we really – are we representing the kind of communities that we’re part of? I had a kind of a niggle that probably things weren’t – it didn't feel right. Intuitively, I thought we’re probably not doing very well in this issue. It’s morally or ethically commercially initiated, it’s really important that we do improve. We came into DrupalCon, the sponsorship season, and we were looking at some sponsorships and Women in Drupal came up. “Yes, that sounds like – it would be really interesting and useful to support, really happy to do that.” I thought, “Okay. What does this actually mean? What’s the point of Women in Drupal as an event? I thought through that process of analysis. I started doing research where you start to reflect on how we performed as a company. It came to a realization that while we have the kind of positive, well intentioned kind of – “we’re not actively doing anything harmful” like kind of really quickly realized, I guess, we weren’t also doing anything proactively, constructively to kind of address what issues in the industry and certain issues that I can see much closer to home and within the company, too. We had a leadership team that the top four roles, with women – I need one in the top 10 of our roles was a woman. To me that doesn’t really sound like great gender balance if half the population are women, statistically, we kind of seem to be – have quite a quirk in there.

jam: Gender, of course, is not the only axis of diversity that you need to look at, right?

Tim: Yes. We were looking across the board, I guess, around race, sexuality ... There’s quite a few different characteristics that we realize it would be ... Society is at large, kind of has, historically, not performed well in terms of creating equal opportunities for people ... discrimination.

jam: Age is another one that, I think, is especially important. I've seen some organizations, large corporate organizations, get to that tough point economically, and then sort of fire everyone between senior management and middle management, because they’re the people in their 50s and they’re too expensive. Then, five years down the track, ten years down the track, make huge organizational mistakes, because there wasn’t a knowledge transfer, and they weren’t the people who’d gone through that mistake, the time that it happened 15 years before. There are so many ways. There have been a lot of studies about the economic and the business value of diversity. I have been part of teams – many different teams, I guess, I should say. I've felt, myself, that the more diverse a team you have, the better a solution that you can arrive to.

Talk about getting more value out of your business this way. I mean, that in a positive way.

Tim: Yes. During the research and I wrote a blogpost on this, did a lot of time for research I've done, because I found that wasn’t necessarily an easy starting point to say how do I become better informed on this issue kind of fairly quickly. Unconscious bias with something that I wasn’t really that aware of as a topic, but quickly...

jam: Well, it is called “unconscious” bias.

Tim: Yes. I guess I get some sort of pass in that. Yes. Really, it’s something unless you are aware of the fact that we all hold these biases unconsciously, and they influence our behavior, our decisions, how we interpret the world unless you're willing to proactively engage with that and think that, as an organization collectively, as well as an individual, this is something that’s going to be even if you're thinking, actually, “I'm not going to be actively trying not to discriminate.” Unless you're a little bit more aware of what could be going on underneath, some of the signals that you could be sending with some of the smaller decisions you could be making are going to be having an influence. That was something that I realized had an impact on our work. We do things that user experience research, design. That’s a very subjective processes where we’re making very subjective decisions all the time. Without that awareness of how those decisions could be influenced, we were probably making poorer quality decisions, we were making decisions that would be – I guess our default or comfort decisions without having really potentially understood the problems space or the possibilities of what we could be doing. That was something I felt, actually, as a company, we really should be training for unless some companies will have management in HR, in hiring roles, trained in unconscious bias; but, actually, it was something that I realized that we were creating solutions to be used in a wider world, often using significant parts of our judgment and evidence wherever we can. Judgment, even the decisions you make about where you're going to research, you're going to have an impact. That was something that I realized I felt really strongly that, actually, we would benefit from as a company. It would produce the quality of our work, but it would also create a fairer workplace, a fairer culture, I guess, too.

Is Diversity a UX Challenge?

jam: Actually, while you were saying that, I thought to myself thinking of this as a UX challenge might be a really useful paradigm. There are several things about UX that come to mind, completely and spontaneously now: Some great UX practitioners that I've met are the people who can walk into work every day and look at the same interface and never get comfortable with it. Never get used to that workflow that you have to do that one extra thing that’s really uncomfortable there. They’re never satisfied with that. I, and I think most people, just learn how to click through whatever you do in a day and get on with it. Fighting consciously against unconscious bias by remaining as open and as perceptive as possible, that sounds really great. Then, I suppose if you somehow designed it as a process, then you could then quite well – you could really proactively look for a great user experience of your organization, right?

Tim: Yes. It’s a good way to think of company culture and continuous improvement, and that process might say that you are kind of never done. This isn’t a problem that is going to go away. No matter what we do as a company, we can’t solve, the industry isn’t going to fix it or society isn’t going to fix overnight. The problem with that is it can lead to apathy or that kind of stagnation of like, “Yes, this is terrible. What are you going to do?” Then everyone moves on to the next thing. And actually, I guess what I realized is that it’s made up – there are millions of small things that made this up. Actually, you can nudge change by doing things that you can control. It’s not something that’s just – we’re not going to fix it overnight. That’s even more of a reason to do something, because it’s not that kind of problem. It’s not – we can’t just make a decision and make it go away.

jam: Nikki Stevens, keynoted Drupal Costa Rica 2016, and in her keynote, she talked about – it was largely about diversity, but also about community and software. She pointed out that any improvement that you can make, no matter how small, even if it’s only for your local community, makes the world better, makes Drupal, in our case, better. That’s a great point that no matter how small a change you make today, it still adds up to making a difference. I like that.

Tim: Yes. That could have an impact even if it positively impacts one person’s life. There is this ripple effect. It does prompt change and reflection in people that could influence the rest of their lives. That’s kind of – there’s something really powerful. It doesn’t often always get – it can get lost in the big company. You kind of - PR kind of spun version of how do you address this kind of thing. It loses the fact that there’s a very – there’s a evolutionary kind of iterative element to this that’s about raising awareness, like it’s not about people being often not be about people being bad or wrong. It’s about just how do you keep nudging this stuff in the right direction rather than just doing one thing and then disappearing for another five years.

jam: Compare being passively happily open to everyone and accepting of everything and “if you come to us, you’ll have a great experience!” Compare that, which I imagine your state was a year or two ago, to proactively “We want to make Deeson a better company, and one of the measurements that we are going to take for our company’s health and success is our diversity,” so, the passive versus the active.

Tim: Yes. It’s easy to think of, “I don’t consciously discriminate. Therefore, we don’t have a problem.” And just turn around and walk away. That was really the state...

jam: Tim doesn’t have a problem. You have a problem.

Tim: Exactly. It’s realizing that the problem is much more kind of insipid [insidious] in that in a way. It’s kind of that unconscious bias, I guess, is baked into us as a society and us, as humans, that we just carry these biases with us. That kind of blissful ignorance that we were kind of in before, I guess, “We’re sure we’re not actively doing anything kind of harmful, therefore, we’re fine.” Once I started to gain more awareness, I guess, and realize that that just didn't really cut it. That by even our unconscious actions or our kind of how our careers page was written, for example, would be sending strong signals to candidates about who was welcome or not within the company. If you have that stereotypical kind of startup ...

jam: “We want rock stars and ninjas and senior, super senior developers!”

Tim: Exactly. The photos of six guys who are paying pool, late at night, drinking beer is where you’ve probably started to send the message for people with families. They if don’t want to see their families any more than they’re ... It’s that kind, you just start to go, actually, maybe if you're a woman and you don’t want to spend the rest of your career surrounded only by men in their 20s, you’ve made an age point, you’ve already started to set it to indicate who’s welcome here, who fits in, who’s kind of the default and who are you. Thinking about how prominently you talk about parental leave, for example, because if you're not talking about parental leave, at all during recruitment, then you really are probably aiming at much of the younger end of the market. There are all these sorts of things. One thing I found is really interesting about – so, we just have a big push on open source contributions. Like if you're being hired for a technical role, we really want to see that you’ve been active in the open source community. What I realized how that could be quite discriminatory, potentially, is if you were, say, a single mum, you're not going to have had – potentially, you're not going to have had the time or the money to be doing loads of free work on open source code, because you're bringing up a family and working to support them.

jam: Or you might be a great developer of any age, or whatever, who had an employer who didn't include it or permit it at all. And you have a family or you have a hobby. You have an actual life (I wish I knew what that was like. No, I'm kidding.) That’s a great point. The idea of even how you – like what photos you put on your website to talk about your own company, that’s really...

Tim: And what language you use, does it feel like you're competitive, adversarial like you're going to be “top gun” style, or is it about we support people to do their very best. Some really interesting studies that show how that language, how that kind of language will be stereotypically responded to by men versus women, for example.

jam: Sure. In the very early days of Acquia, and I mean I've been in Acquia for eight years now, some of this ... now the statute of limitations has expired. We had “rock star”, “ninja” hiring language on that page. I know, because I had conversations with people at DrupalCon and what have you ... I had conversations with people at DrupalCon who had said - amazing people. People that would have been great at that phase at Acquia. “Oh, well, I don’t think – I couldn’t come as a rock star. I don’t think I could ever apply to Acquia.”

Tim: Yes. You end up with self-fulfilling prophecies. You hire more and more people like the people you have because it’s a marketing test. Your recruitment, your marketing appeals to a certain type of person, which means it attracts a certain type of person, which means you create a culture which has a certain type of person. That’s often could be a narrow slice of the variety of people that would have really much – bring a lot of benefit to the company, different perspectives that can stop the kind of very narrow groupthink, I think.

jam: To your point, because it’s unconscious bias, often ... “That sort of just happened to us and we don’t know why, because we would be really open to having everybody, right?”

Tim: But no one applies which – that was kind of one of the points I made in the blog post was around the kind of pipeline problem. “It’s the pipeline. We don’t get applicants, so what can we do?” Actually, one of those issues is that partly you don’t get those applicants because you only appeal to one type of person. You’ve made it clear that it’s only a safe, welcoming place for certain types of people because every single piece of your marketing says that ... unintentionally and unconsciously. That was the other part, just by raising awareness, it’s very rarely a kind of right or wrong cultural decision to make about these things. It’s that raising the awareness and prompting the debates internally, started to change our culture in terms of growing awareness and how an impact of certain language or certain environment choices could have an impact to people. One of the things was the use of kind of “guy”s where we’re talking to a group of people that may or may not include all men.

jam: The word “guys”. You have just hit on one of my biggest pet peeves. Time out everyone. Land at London Heathrow, any day of the week, especially if you come from a big international flight and the Terminal 5 is really full, you have all those helpful people standing around yelling at you, right? An aircraft - 300, 800 adults, well enough dressed, tired, jetlagged, honestly, the last thing I want to hear – like how about, “Excuse me, ladies and gentlemen. Please go down this way.” I don’t need to be served, right? “Yes, excuse me. Everyone move this way.” All these things would be great. I'm sure there are other good options. Instead, what is it? “Guys, down this way. Yes. Guys, please, move along. Guys.”

Tim: Yes.

jam: It does my head in that “guys” is now the formal way to address a group. And thanks to Tim Deeson, I now know that this is like a symptom of this unconscious bias, as well.

Tim: Sometimes that debate can get derailed into do I find it offensive or not offensive? In my experience, people generally don’t. It’s actually about sending this really subtle, tiny signal that, actually, the default of people we’re talking to are men in these situations.

jam: Plus, I have to say that offense is, actually, not a yardstick to measure by, because it’s very subjective and very emotional and it doesn’t exactly matter. Stephen Fry talks a lot about the concept of “your offense is not my business”. That’s a really interesting point, as well.

Tim: I mean, what’s unfortunate about it is often it can kind of veer into this political correctness kind of issue.

jam: And apologies. So, we’re not talking about anything that needs apologizing for. You were doing something to fix it now, right?

Tim: Yes.

jam: I don’t like long, self-flagellating kind of conversations about this stuff either. That’s a fair point.

So where to now?

jam: Tell me, have you formulated a goal for Deeson in terms of diversity? Is there something – is there a simple statement that you’ve got?

Tim: The end of the book I published 10 things we were going to start doing, start doing basically. For example, only attending conferences that have a credible code of conduct, for example, to ensure that there was consideration of what we’re creating inclusive positive environment for all participants rather than - where in conferences, I mean, some of the reading I did ... If you don’t do the reading, it can sound kind of is this really that big a deal? But, particularly in the US, there’s been incredibly serious, incredibly common incidents to industry conferences where, actually, there is no real consideration paid to kind of large chunks of the audience collectively. We worked out ... I personally don’t believe in targeting percentages, for example, because it can create all sorts of problems. What I found was, actually, it was about the environment we were creating rather than about kind of absolute numbers. You can use percentages as a kind of dipstick of, “Does this feel it represents the communities we’re in” Actually, it was about if we make sure there our recruiting and marketing makes it clear that we’re a welcoming and inclusive environment to everyone, not just the people in a very small group or very narrow group, those kind of knock-on effects, I guess, the behaviors that we take and undertake rather than the kind of being particularly attached to specific outcomes. The outcomes will come through. What you don’t want, I guess, is just to try and force through once we hit certain percentages, then that’s what good looks like and can actually have a change in a few behaviors. That’s where you can end up with really troublesome – you're not going...

jam: Those are those old conversations about a token woman or a token of whathaveyou.

Tim: Exactly.

jam: Rather than a concrete statement or a concrete goal, would it be fair to say that you have a process that you are executing on every day and that your end goal is simply improvement on this area?

Tim: Yes. It’s the only way to think about it is continuous improvement and the awareness raising. It’s thinking about the kind of issues, having that awareness of issues just makes you prompt some conversations that don’t otherwise happen.

jam: Okay. I’ll link to that blogpost for sure. I’ll probably quote your 10 points in the post with this conversation.

Tim, thank you for taking the time to talk with me. I really admire your moment of revelation, per se, but, especially that you're acting on it. It would be really cool if we check in again on this at an apropos moment.

Tim: Of course. Thanks so much for having me.

jam: Great. Thanks, Tim.

Tim: Cheers.

Skill Level: BeginnerIntermediateAdvanced

Using the serialization system in Drupal

Posted by Lullabot - 15 Feb 2017 at 16:00 UTC

As part of the API first initiative I have been working a lot with the serialization module. This module is a key member of the web-service-oriented modules present both in core and contrib.

The main focus of the serialization module is to encapsulate Symfony's serialization component. Note that there is no separate deserialization component. This single component is in charge of serializing and deserializing incoming data.

When I started working with this component the first question that I had was "What does serialize mean? And how is it different from deserializing?". In this article I will try to address this question and give a brief introduction on how to use it in Drupal 8.

Serializers encoders and normalizers

Serialization is the process of normalizing and then encoding an input object. Similarly, we refer to deserialization as the process of decoding and then denormalizing an input string. Encoding and decoding are the reverse processes of one another, just like normalizing and denormalizing are.

In simple terms, we want to be able to turn an object of class MyClass into a particular string representation, and then be able to turn that string back into the original object.

An encoder is in charge of converting simple data—a set of scalars, arrays and stdClass objects—into a string. The resulting string is a convenient way to store or transport the original object. A decoder performs the opposite function; it will take that encoded string and transform it into an array that’s ready to use. json_encode and json_decode are good examples of a commonly used (de)encoder. XML is another example of a format to encode to. Note that for an object to be correctly encoded it needs to be normalized first. Consider the following example where we encode and decode an object without any normalization or denormalization.

class MyClass {}
$obj = new MyClass();
var_dump($obj); // Outputs: object(MyClass) (0) {}
var_dump(json_decode(json_encode($obj))); // Outputs: object(stdClass) (0) {}

You can see in the code above that the composition of the two inverse operations is not the same original object of type MyClass. This is because the encoding operation loses information if the input data is not a simple set of scalars, arrays, and stdClass objects. Once that information is lost, the decoder cannot get it back.


One of the reasons why we need normalizers and denormalizers is to make sure that data is correctly simplified before being turned into a string. It also needs to be upcast to a typed object after being parsed from a string. Another reason is that different (de)normalizers allow us to work with different formats of the data. In the REST subsystem we have different normalizers to transform a Node object into the JSON, HAL or JSON API formats. Those are JSON objects with different shapes, but they contain the same information. We also have different denormalizers that will take a simplified JSON, HAL or JSON API payload and turn it into a Node object.

(De)Normalization in Drupal

The normalization of content entities is a very convenient way to express the content in a particular format and shape. So formatted, the data can be exported to other systems, stored as a text-based document, or served via an HTTP request. The denormalization of content entities is a great way to import content into your Drupal site. Normalization and denormalization can also be combined to transform a document from one format to another. Imagine that we want to transform a HAL document into a JSON API document. To do so, you need to denormalize the HAL input into a Node object, and then normalize it into the desired JSON API document.

A good example of the normalization process is the Data Model module. In this case instead of normalizing content entities such as nodes, the module normalizes the Typed Data definitions. The typed data definitions are the internal Drupal objects that define the schemas of the data for things like fields and properties. An integer field will contain a property (the value property) of type IntegerData. The Data Model module will take object definitions and simplify (normalize) them. Then they can be converted to a string following the JSON Schema format to be used in external tools such as beautiful documentation generators. Note how a different serialization could turn this typed data into a Markdown document instead of JSON Schema string.

Adding a new (de)normalizer to the system

In order to add a new normalizer to the system you need to create a new tagged service in custom_module.services.yml.

   class: Drupal\custom_module\Normalizer\MyClassNormalizer
     - { name: normalizer, priority: 25 }

The class for this service should implement the normalization interface in the Symfony component Symfony\Component\Serializer\Normalizer\NormalizerInterface. This normalizer service will be in charge of declaring which types of objects it knows how to normalize and denormalize—that would be MyClass in our previous example. This way the serialization module uses it when an object of type MyClass needs to be (de)normalized. Since multiple modules may provide a service that supports normalizing MyClass objects, the serialization module will use the priority key in the service definition to resolve the normalizer to be used.

As you would expect, in Drupal you can alter and replace existing normalizers and denormalizers so they provide the output you need. This is very useful when you are trying to alter the output of the JSON API, JSON or HAL web services.

In a next article I will delve deeper into how to create a normalizer and a denormalizer from scratch, by creating an example module that (de)normalizes nodes.


The serialization component in Symfony allows you to deal with the shape of the data. It is of the utmost importance when you have to use Drupal data in an external system that requires the data to be expressed in a certain way. With this component, you can also perform the reverse process and create objects in Drupal that come from a text representation.

In a following article I will show you an introduction on how to actually work with (de)normalizers in Drupal.

Want to learn Entity browser?

Posted by Janez Urevc - 15 Feb 2017 at 15:17 UTC
Want to learn Entity browser? slashrsm Wed, 15.02.2017 - 16:17

One way to start is to check the session that gave at the Drupal dev days Milano in June 2016. I went through the architecture of the module and most common use cases.

I also proposed a Media workshop for Drupal dev days Seville where I want to cover the entire Drupal 8 Media ecosystem from the site builder's perspective. Besides that I also proposed a session about my recent experiments with Elixir. Not necessarily Drupal or PHP related, but I think that looking beyond our bubble can be very beneficial.

Enjoyed this post? There is more! Playing with the Sculpin static site generator Possible solution for knowledge sharing in the Drupal 8 media domain Join us at the next Drupal Media sprint at the Mountain camp in Davos!

Designer wanted for the new Drupal core demo

Posted by Roy Scholten - 15 Feb 2017 at 14:33 UTC

A quick reminder that there are a few days left to apply as the designer for the new demo installation for Drupal 8.

Drupal wants to make a better impression fresh out of the box and for that, we need to put something nice in the box first. We now have the opportunity to experiment with sample content in a new “Demo” install profile. That’s why we are now looking for a designer to make that sample content look and feel good.

If you are a designer and want to have a big impact on the initial Drupal core user experience, have a look at the plan and consider joining this cool project.

Fair warning: getting design work done in Drupal has been notoriously hard, but this project is well scoped and has buy in from the product managers, so I do hope you (or the designer friend you will pass this link on to) will put your name in the hat. Thank you!

Tags: drupaldrupalplanetdesignSub title: Putting something in the box

Adding Configuration Split to a Drupal site using BLT and Acquia Cloud

Posted by Jeff Geerling's Blog - 15 Feb 2017 at 14:23 UTC

I've been looking at a ton of different solutions to using Drupal 8's Configuration Management in a way that meets the following criteria:

Turn Drupal 8.x menu into select list with Twig

Posted by TheodorosPloumis blog - 15 Feb 2017 at 12:50 UTC

One a recent 8.x web project I had to get a menu as a select list to use it on the mobile versions of the website. The menu was 2 level depth but the pattern can be used for every level menus. Each select list options havs a data-url value taken from the menu path so the select list can be used with js to trigger a page redirect on select change event.

So here are the steps to manage it.

1) Create a Menu

Plain text icon menu-jump.html_.twig_.txt

Building Conditional Webforms in Drupal 7

Posted by OSTraining - 15 Feb 2017 at 11:20 UTC
Building Conditional Webforms in Drupal 7

One of our OSTraining members asked us how to configure webforms with conditions and we prepared for you this tutorial to show you how you can do just that.

For this tutorial, you will need the following Drupal modules:

Once you downloaded the, please go to modules are make sure you have enabled them.

You should have the following module options ticked:

  • Chaos tools
  • Form builder
  • Form builder Webform UI
  • Token
  • Options element
  • Views
  • Views UI.

Under Structure > Content types, you will see that you now have the 'Webform' content type. Review the default settings of this content type. I personally removed the "Published By" but this is my own personal preference.

Now that we have everything installed, let's start building our webform.

Go to Content > Add Content and select the Webform. We need to give this form a title and for ease of access I am also going to assign it a menu link.

Now, using the form builder GUI, you can easily drag and drop the configuration elements that we need for this webform.

I have created a feedback form that will be asking for Name, Email and to rate a service.

We want to set up a condition, which will then trigger a feedback textarea if 'Not Happy' option is selected. We want this textarea to display on the same page, so we will not use a page break for this form element. 

As we now have configured our webform, let's make sure it works. While 'Very Happy' is set, you do not see the feedback textarea field:

If, however, you select 'Not happy option', to record a feedback from the user, then right away its corresponding textarea field will show up.

As you have now learned in this tutorials, using conditionals in Dripal, you can add many complex responses to your webforms, add some cool features to them and collect all the information you need.

Still have questions? Please submit them in the comments below.

Default revisions, forward revisions, and past revisions

Posted by Tim Millwood - 15 Feb 2017 at 10:15 UTC
Default revisions, forward revisions, and past revisions

Drupal 8 has two revisionable entity types, Node and Block Content. When working with revisions it's key to understand the different states a revision can have.

If you have a node with the ID 1 you can load it with Node::load(1);, this will load the default revision. You may have 200 revisions of node 1, but the default revision is the one which is loaded by default.

Currently forward revisions are revisions with a higher revision ID than the default revision, and past revisions are revisions with a lower revision ID than the default revision.

Creating a forward revision is as simple as creating a new revision, which is not the default.


The code above assumes $node is an existing node revision object. First we enforce a new revision created, then set that new revision to not be the default revision, and save. If you were to look in the database node_field_data would have the original revision information as it's still the default, but in node_field_revision you will see a revision with a higher revision ID (vid), this is the forward revision we just created.

Using the same code without the isDefaultRevision(FALSE) line will create a new default revision as this is the standard behaviour when saving an entity. The original revision will then become a past revision.

timmillwood Wed, 15/02/2017 - 10:15 Tags drupal-planet Add new comment

Default revisions, forward revisions, and past revisions

Posted by Tim Millwood - 15 Feb 2017 at 10:15 UTC
Default revisions, forward revisions, and past revisions timmillwood Wed, 02/15/2017 - 10:15

Caregiver Homes Drupal Case Study

Posted by Third & Grove - 15 Feb 2017 at 08:00 UTC
Caregiver Homes Drupal Case Study antonella Wed, 02/15/2017 - 03:00

Dramatically Improve MySQL Import Performance with Docker

Posted by Savas Labs - 15 Feb 2017 at 00:00 UTC

Docker, ships, the sea A tutorial to show how you can use data volume restore for MySQL on Drupal Docker stacks to dramatically improve import performance with notes on how to integrate this with your development and continuous integration workflow. Continue reading…


Subscribe with RSS Subscribe to Drupal.org aggregator - Planet Drupal