Drupal CMS Guides at Daymuse Studios: Product Display: Contextual Field Output in Drupal Commerce

Planet Drupal - Thu, 2017/02/16 - 1:42am

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

Categories:

Drupal Association blog: DrupalCon Vienna Program Changes

Planet Drupal - Wed, 2017/02/15 - 5:59pm

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.

Categories:

Acquia Developer Center Blog: 247: Diversity, Differentiation, Value(s) with Tim Deeson

Planet Drupal - Wed, 2017/02/15 - 5:38pm

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
Categories:

Lullabot: Using the serialization system in Drupal

Planet Drupal - Wed, 2017/02/15 - 5:00pm

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.

undefined

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.

serializer.custom_module.my_class_normalizer: class: Drupal\custom_module\Normalizer\MyClassNormalizer tags: - { 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.

Conclusion

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.

Categories:

Janez Urevc: Want to learn Entity browser?

Planet Drupal - Wed, 2017/02/15 - 4:17pm
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!
Categories:

Roy Scholten: Designer wanted for the new Drupal core demo

Planet Drupal - Wed, 2017/02/15 - 3:33pm

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
Categories:

Jeff Geerling's Blog: Adding Configuration Split to a Drupal site using BLT and Acquia Cloud

Planet Drupal - Wed, 2017/02/15 - 3:23pm

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:

Categories:

TheodorosPloumis blog: Turn Drupal 8.x menu into select list with Twig

Planet Drupal - Wed, 2017/02/15 - 1:50pm

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

menu-jump.html_.twig_.txt
Categories:

OSTraining: Building Conditional Webforms in Drupal 7

Planet Drupal - Wed, 2017/02/15 - 12:20pm

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.

Categories:

Tim Millwood: Default revisions, forward revisions, and past revisions

Planet Drupal - Wed, 2017/02/15 - 11:15am
Default revisions, forward revisions, and past revisions timmillwood Wed, 02/15/2017 - 10:15
Categories:

Third & Grove: Caregiver Homes Drupal Case Study

Planet Drupal - Wed, 2017/02/15 - 9:00am
Caregiver Homes Drupal Case Study antonella Wed, 02/15/2017 - 03:00
Categories:

Savas Labs: Dramatically Improve MySQL Import Performance with Docker

Planet Drupal - Wed, 2017/02/15 - 1:00am

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…

Categories:

Drupal Association blog: Drupal.org Industry Pages Are Live!

Planet Drupal - Wed, 2017/02/15 - 12:30am

We are excited to announce that the first three industry pages are now live on Drupal.org, highlighting the power of Drupal solutions in higher education, government and media/publishing. The pages are designed to quickly inform and inspire technical evaluators and connect them to service providers and technology vendors who can help them move further through their Drupal adoption journey.

The Drupal Association is incredibly proud to showcase the Drupal community’s innovation, creativity, and ability to solve end users’ challenging problems. More importantly, these pages are a resource that Drupal businesses can point to as they convince potential clients that Drupal is the right choice for them. We know this is a needed resource not only because Drupal agencies have asked for this, but because our user research was resoundingly positive. One government digital director said “I wish this was around when I was pitching my state CIO on Drupal”.

This launch is the first phase for this initiative. We will learn and iterate to keep improving the pages and we will expand the industries to include pages like healthcare, finance, ecommerce, and more.

The Research We Used

Building the industry pages was a community effort. Drupal Association staff framed the concept and then reached out to end-users of Drupal in these industries, service providers who've built solutions for these markets, and the community at large. We listened to all of you who shared your thoughts in the original blog post about this initiative.

We conducted user research, interviewing decision makers and influencers at end user organizations to make sure the pages resonated strongly with them. We talked to organizations like Weather.com, Burda Media, State of North Carolina, Georgia Technology Authority, Duke University, Cornell University - and more!

We also talked to people at agencies who pitch Drupal solutions all day long such as Acquia, Ashday, Blackmesh, Digital Echidna, FFW, Forum One, ImageX Media, Kwall, Lingotek, Lullabot, Palantir.net, Pantheon, and Phase2.

We will continue to take feedback from our global community. Our goal is to keep iterating on these industry pages as we learn more.

About The Pages

The industry pages are part of the About Drupal section and they are promoted from the Drupal.org front page. The homepage of Drupal.org receives about 350,000 visits a month, and about 50% of those visitors are new to Drupal.org The front page is primarily technical evaluators coming to learn more about Drupal and we see this as they click on our evaluator resources like About Drupal, TryDrupal, and Case Studies.

Based on user research, we know that before someone comes to the industry pages, they likely know that Drupal is an open source community-built CMS and their organization is leaning towards an open source solution. However, we did make sure the pages do not assume the visitor already knows what Drupal is, because some will find the page through search.

Another key feature is geo-targeting. Currently, we serve localized content for the Americas, EMEA, and AP/Australia/New Zealand regions. This allows us to showcase case studies that will resonate to visitors based on their location. For example, on the Americas page, we highlight the Department of Energy - a U.S federal agency. In EMEA, we highlight City of London - a UK city, and in AP/Australia/New Zealand we highlight the State Revenue Office of Victoria, Australia - a federal agency.  We took this approach because business owners at digital agencies from each region said that having localized brand names and case studies helps them convince their potential clients that Drupal is a viable option for them.

The Story We Are Telling

The story that the pages tell to visitors is:

  1. Drupal is the open source CMS of choice for this industry. Just look at the strong adoption rate, industry brand names, and their success stories.

  2. Build amazing Drupal solutions to solve problems related to your industry.

  3. Solutions are made up of Drupal and third party software and hosting solutions. Plus, you can use industry-specific distributions to accelerate your build.

  4. Because of Drupal’s extensibility and our robust ecosystem of third-party technology integrations, modules, Drupal hosting, and distributions, you can tailor a solution to solve your unique problems or create new opportunities. Check out some featured industry-specific vendors.

  5. Read case studies to learn how big names in your industry achieved business gains with a Drupal solution.

  6. These solutions were built by people at well-respected Drupal agencies who are top contributors to Drupal.

  7. If you want to talk to someone about creating a Drupal solution, fill out the form and all three will contact you.

  8. Want to meet your peers? Attend the industry summit at DrupalCon Baltimore.

For the Americas region we have secured partners for Drupal evaluators to reach out to discuss their industry needs. However, we have not yet secured agency and vendor sponsors for these pages. It takes a lot of work to line up those relationships and tee-up the content and we wanted to launch sooner than later so we could start learning how to optimize the pages. So for now, we've selected initial case study content for these regions, and we are promoting a link to the marketplace to show agencies who have industry experience in these regions. Over time, we will open up the opportunity for agencies to sponsor the pages similar to our approach in the Americas region.

Thank you to our sponsors

Contribution comes in three forms: Time, Talent, and Treasure. Many people shared their time and talent to help us create these pages for the community. We could not have built something of value without them. And, there were several companies who contributed treasure as well by investing financially to sponsor these pages. Those companies are: Acquia, Ashday, Blackmesh, Digital Echidna, FFW, Forum One, ImageX Media, Kwall, Lingotek, Lullabot, Palantir.net, Pantheon, and Phase2.

Because the industry pages give premier visibility and sponsorship is so limited, we wanted to be as fair as possible when opening up this sponsorship opportunity. As we say amongst staff, we want to “sell with a soul”. We decided to only sell these sponsorship opportunities to those who are top contributors. We looked at companies’ code contribution levels and how long they supported the Drupal Association financially and came up with an internal ranking system. Only those above a certain threshold were invited to sponsor.

This means that not only are these sponsors contributing time, talent, and treasure to this specific initiative, but they are long time contributors to the Project, helping Drupal thrive over time. It’s important to the Association that we highlight and reward good Drupal citizenship. When good Drupal citizens are doing well, we all do well. When successful, businesses can hire more Drupal talent and sponsor their contributions back to the Project. They can fund more camps and DrupalCon so we can unite and accelerate the Project in person, and they can fund Drupal.org hosting and engineers so the community can build the Project together online. We are thankful for our sponsors' generous giving and proud to work with them on this initiative.

We've created value together

We see this initiative as a great demonstration of serving our mission - “to unite the community to help them build and promote the software”. We united members from all facets of the community: end-users, service providers, and the community at large. The pages promote the software by showing that Drupal is a winning choice for evaluators in these key industries.

This project is a reflection of Drupal’s amazing spirit and culture of respecting diverse opinions, collaboration, and striving to do the best. Thank you to everyone involved in this project for working so well together, listening to each other’s different ideas, and finding ways to incorporate them so together we can build something amazing.

Categories:

fluffy.pro. Drupal Developer's blog: Ctools: custom relationships plugin

Planet Drupal - Tue, 2017/02/14 - 11:36pm
Relationships plugins are "bridge" between existing context (that is already set up in a panel) and a context which you want to get from existing one. Let's say your panel contains "Node" context and you want to get a node author (user from node:uid property). To do that you can just set up "Node author" relationship in a panel (under a "contexts" tab) and that's all. That's why relationships plugins are so important - they provide easy way for getting context from existing contexts. Please have a look at this post before continue reading - there is described how to create module integrated with ctools API which allows us to define own plugins.
Read more »
Categories:

xjm: Help triage major bugs at the Florida DrupalCamp or your local camp (yes, you!)

Planet Drupal - Tue, 2017/02/14 - 11:35pm
Help triage major bugs at the Florida DrupalCamp or your local camp (yes, you!)

Florida Drupalcamp 2017 is less than a week away, February 17-19, in vibrant Orlando. Not only is the camp schedule packed with great sessions and trainings, but there's also a contribution sprint that both helps Drupal 8 core maintainers, and gives you a chance to contribute and learn about Drupal 8.

To join the sprint, you should already be familiar with Drupal... and that's it! You don't need to be an expert. You don't need to be a coder. You don't even need to know much about Drupal 8, although a little knowledge helps. This particular sprint is a great fit for:

  • anyone with some Drupal knowledge who is interested in contributing for the first time
  • on-and-off contributors
  • project managers (you will be great at this!)
  • anyone interested in learning more about how Drupal core gets made
  • anyone concerned about Drupal 8 bugs!
  • anyone interested in helping maintainers (or even becoming maintainers someday themselves)

I'm not teasing with that last one, either. This sprint can be rewarding for anyone from a newbie contributor to a core committer. (If you are skeptical about that, join this beginner camp session from Drupal 8's frontend committer, Cottser: One Step at a Time: Lessons Learned from Drupal Newbie to Core Committer.)

If you can't make it to Florida, you can also host the same kind of sprint at your local Drupal camp. Read on for what this sprint is all about, and why it matters for Drupal 8.

Getting our priorities in order

In Drupal core, we define the issue priority of core bugs based on how many users are affected and how severe the problem is, and many contributors respond accordingly to prioritize what is fixed first. Over time, we've refined what specific kinds of bugs are critical, major, or normal priority.

Before we released Drupal 8.0.0 in November 2015, we fixed all the critical bugs we could identify, so that Drupal was safe and production-ready for most users. Our intense focus on fixing those release-blocking issues for such a significant overhaul of Drupal meant that many issues that were not as critical took second place, even though some were still quite problematic. In the past year, now that Drupal 8 has stable releases, we have been able to shift focus to fixing more of the remaining major bugs (as well as adding new features).

Still, there are only so many hours in the day, and many people who've spent time with Drupal before will know how long it can take to find the right bug report! This is where issue triage comes in. The first step to fixing the most important bugs is simply making sure the bug reports are up to date and actionable.

Major triage in 2016

During 2016, with the help of subsystem maintainers and a couple small groups of sprinters, we assessed the status of over 200 major bugs. Of the major bugs we triaged, only about half were confirmed as major priority. Roughly one in three were downgraded to normal priority, and one in twenty turned out to be critical priority. The remainder were no longer relevant.

Within the past year, the community also fixed over 250 additional major bugs... but more than 200 new ones were filed at the same time. So, while the triaged issues significantly reduce the size of the major issue queue, there is still much more work to be done to catch up. Core maintainers need your help to close the gap.

How you can help

Finding (and fixing) the bugs that are most important is a group effort. We use a two-phase process:

  1. Contributors verify the current status of the major issues, make sure they are up to date, and close issues that are no longer relevant.
  2. Core committers and subsystem maintainers collaborate to assess the verified issues.

Phase 1 is where you come in! This flowchart illustrates the workflow we use at major issue triage sprints:

(You can also read the detailed instructions in the major triage meta issue.)

This process can take awhile, but it is great for "unsticking" issues. Plus, once you have triaged an issue as valid, core committers will follow up on it to confirm its priority and make sure you are credited for your triage contribution to the issue on Drupal.org once the bug is fixed.

Once the current state of these bug reports is verified, Drupal 8 core committers and subsystem maintainers will prioritize them, deciding which are indeed major, which are just normal bugs, and even which ones are critical issues in disguise.

DrupalCamp NJ 2017

A week ago, more than 10 sprinters participated in the DrupalCamp New Jersey major triage sprint. We verified numerous issues in the Menu, DateTime, Views, JavaScript, Node, and Update subsystems (and the DateTime major queue is now fully triaged!). Thanks to cilefen, davidhernandez, dinarcon, djdevin, ednawig, mpdonadio, pwolanin, sugaroverflow, techmsi, tim.plunkett, wquiceno, and YesCT for their help at the sprint! (Also: if I missed you on this list, let me know so I can make sure you get issue credit.)

Florida DrupalCamp 2017

The next stop on the major triage international tour is Orlando! Come to the Florida DrupalCamp contribution sprints to join the experience. The main sprint day is Sunday, February 19. Start the weekend off with a training on Friday, attend some fabulous sessions on Saturday, and then come sprint on Sunday -- or, do what DrupalCamp veterans do and hang out sprinting for the whole camp. nerdstein and the amazing YesCT will be right there with you to help you sprint (probably along with other mentors as well). Also be sure to thank ultimike and other camp organizers for hosting the sprint.

Or, organize your own sprint!

Do you have an upcoming local Drupal camp or regional summit? Are your superpowers more for organizing events than testing bugs? Consider hosting a Drupal 8 major issue triage sprint at your event.

To host the sprint, it works best to have a few sprint leads who are either experienced mentors or know Drupal 8, or who have attended another of our Drupal 8 major triage sprints themselves. (Past major triage sprints have been at DrupalCons Los Angeles, Barcelona, Mumbai, and New Orleans, as well as at this year's DrupalCamp New Jersey.)

If you are interested in hosting a core major triage sprint, contact me on Drupal.org. I can help you decide if the sprint is a good fit for your event and share ideas.

Let's shine the lights on some bugs!

xjm Tue, 02/14/2017 - 22:35
Categories:

Drupal Modules: The One Percent: Drupal Modules: The One Percent — Focal Point (video tutorial)

Planet Drupal - Tue, 2017/02/14 - 11:16pm
Drupal Modules: The One Percent — Focal Point (video tutorial) NonProfit Tue, 02/14/2017 - 16:16 Episode 20

Here is where we bring awareness to Drupal modules running on less than 1% of reporting sites. Today we'll look at Focal Point, a module which allows you to set how images are cropped on a node by node basis.

Categories:

Drupal core announcements: 7.x-2.x version of API module ready for testing

Planet Drupal - Tue, 2017/02/14 - 9:20pm

Neil Drumm (drumm) and I have been working lately on the API module (used to build API documnentation sites like https://api.drupal.org and others). We've made a 7.x-2.x branch of the project, which works quite differently from the 7.x-1.x branch. The major changes are that it uses a different (and external) parsing library for parsing PHP files, and it uses Composer to manage its external library dependencies.

We have a bunch of automated tests for the module, which all pass, and I've successfully used it to parse the latest 8.x and 7.x Drupal Core code. But there are several other users of the API module out there (for instance, the Drush project), and we've changed the public API of the module (functions have moved, changed names, been removed, etc.).

So before we make a full 7.x-2.0 release of the API module (and drop support for the 7.x-1.x branch), I would like to invite users of the API module to test out the 2.x branch on their sites, and create issues in the API project if they encounter any problems. The public API can still be changed at this point, up until we have a new release, so now would be a good time to test.

If you want to test... some links:

Looking forward to hearing about the results of your testing!

Categories:

7.x-2.x version of API module ready for testing

Documentation Team - Tue, 2017/02/14 - 9:20pm

Neil Drumm (drumm) and I have been working lately on the API module (used to build API documnentation sites like https://api.drupal.org and others). We've made a 7.x-2.x branch of the project, which works quite differently from the 7.x-1.x branch. The major changes are that it uses a different (and external) parsing library for parsing PHP files, and it uses Composer to manage its external library dependencies.

We have a bunch of automated tests for the module, which all pass, and I've successfully used it to parse the latest 8.x and 7.x Drupal Core code. But there are several other users of the API module out there (for instance, the Drush project), and we've changed the public API of the module (functions have moved, changed names, been removed, etc.).

So before we make a full 7.x-2.0 release of the API module (and drop support for the 7.x-1.x branch), I would like to invite users of the API module to test out the 2.x branch on their sites, and create issues in the API project if they encounter any problems. The public API can still be changed at this point, up until we have a new release, so now would be a good time to test.

If you want to test... some links:

Looking forward to hearing about the results of your testing!

Mediacurrent: For the LOVE of User Experience Design

Planet Drupal - Tue, 2017/02/14 - 8:57pm

It’s always useful to discuss the latest social sharing trends or best practices when designing a signup form. But whether your work includes designing the next pixel perfect icon library or solving the latest user interface problem, sometimes it’s also a good idea to take a step back and appreciate why we started doing ‘this’ in the first place.
 

Categories:

Dries Buytaert: Distributions remain a growing opportunity for Drupal

Planet Drupal - Tue, 2017/02/14 - 8:40pm

Yesterday, after publishing a blog post about Nasdaq's Drupal 8 distribution for investor relations websites, I realized I don't talk enough about "Drupal distributions" on my blog. The ability for anyone to take Drupal and build their own distribution is not only a powerful model, but something that is relatively unique to Drupal. To the best of my knowledge, Drupal is still the only content management system that actively encourages its community to build and share distributions.

A Drupal distribution packages a set of contributed and custom modules together with Drupal core to optimize Drupal for a specific use case or industry. For example, Open Social is a free Drupal distribution for creating private social networks. Open Social was developed by GoalGorilla, a digital agency from the Netherlands. The United Nations is currently migrating many of their own social platforms to Open Social.

Another example is Lightning, a distribution developed and maintained by Acquia. While Open Social targets a specific use case, Lightning provides a framework or starting point for any Drupal 8 project that requires more advanced layout, media, workflow and preview capabilities.

For more than 10 years, I've believed that Drupal distributions are one of Drupal's biggest opportunities. As I wrote back in 2006: Distributions allow us to create ready-made downloadable packages with their own focus and vision. This will enable Drupal to reach out to both new and different markets..

To capture this opportunity we needed to (1) make distributions less costly to build and maintain and (2) make distributions more commercially interesting.

Making distributions easier to build

Over the last 12 years we have evolved the underlying technology of Drupal distributions, making them even easier to build and maintain. We began working on distribution capabilities in 2004, when the CivicSpace Drupal 4.6 distribution was created to support Howard Dean's presidential campaign. Since then, every major Drupal release has advanced Drupal's distribution building capabilities.

The release of Drupal 5 marked a big milestone for distributions as we introduced a web-based installer and support for "installation profiles", which was the foundational technology used to create Drupal distributions. We continued to make improvements to installation profiles during the Drupal 6 release. It was these improvements that resulted in an explosion of great Drupal distributions such as OpenAtrium (an intranet distribution), OpenPublish (a distribution for online publishers), Ubercart (a commerce distribution) and Pressflow (a distribution with performance and scalability improvements).

Around the release of Drupal 7, we added distribution support to Drupal.org. This made it possible to build, host and collaborate on distributions directly on Drupal.org. Drupal 7 inspired another wave of great distributions: Commerce Kickstart (a commerce distribution), Panopoly (a generic site building distribution), Opigno LMS (a distribution for learning management services), and more! Today, Drupal.org lists over 1,000 distributions.

Most recently we've made another giant leap forward with Drupal 8. There are at least 3 important changes in Drupal 8 that make building and maintaining distributions much easier:

  1. Drupal 8 has vastly improved dependency management for modules, themes and libraries thanks to support for Composer.
  2. Drupal 8 ships with a new configuration management system that makes it much easier to share configurations.
  3. We moved a dozen of the most commonly used modules into Drupal 8 core (e.g. Views, WYSIWYG, etc), which means that maintaining a distribution requires less compatibility and testing work. It also enables an easier upgrade path.

Open Restaurant is a great example of a Drupal 8 distribution that has taken advantage of these new improvements. The Open Restaurant distribution has everything you need to build a restaurant website and uses Composer when installing the distribution.

More improvements are already in the works for future versions of Drupal. One particularly exciting development is the concept of "inheriting" distributions, which allows Drupal distributions to build upon each other. For example, Acquia Lightning could "inherit" the standard core profile – adding layout, media and workflow capabilities to Drupal core, and Open Social could inherit Lightning - adding social capabilities on top of Lightning. In this model, Open Social delegates the work of maintaining Layout, Media, and Workflow to the maintainers of Lightning. It's not too hard to see how this could radically simplify the maintenance of distributions.

The less effort it takes to build and maintain a distribution, the more distributions will emerge. The more distributions that emerge, the better Drupal can compete with a wide range of turnkey solutions in addition to new markets. Over the course of twelve years we have improved the underlying technology for building distributions, and we will continue to do so for years to come.

Making distributions commercially interesting

In 2010, after having built a couple of distributions at Acquia, I used to joke that distributions are the "most expensive lead generation tool for professional services work". This is because monetizing a distribution is hard. Fortunately, we have made progress on making distributions more commercially viable.

At Acquia, our Drupal Gardens product taught us a lot about how to monetize a single Drupal distribution through a SaaS model. We discontinued Drupal Gardens but turned what we learned from operating Drupal Gardens into Acquia Cloud Site Factory. Instead of hosting a single Drupal distribution (i.e. Drupal Gardens), we can now host any number of Drupal distributions on Acquia Cloud Site Factory.

This is why Nasdaq's offering is so interesting; it offers a powerful example of how organizations can leverage the distribution "as-a-service" model. Nasdaq has built a custom Drupal 8 distribution and offers it as-a-service to their customers. When Nasdaq makes money from their Drupal distribution they can continue to invest in both their distribution and Drupal for many years to come.

In other words, distributions have evolved from an expensive lead generation tool to something you can offer as a service at a large scale. Since 2006 we have known that hosted service models are more compelling but unfortunately at the time the technology wasn't there. Today, we have the tools that make it easier to deploy and manage large constellations of websites. This also includes providing a 24x7 help desk, SLA-based support, hosting, upgrades, theming services and go-to-market strategies. All of these improvements are making distributions more commercially viable.

Categories: