Planet Drupal

Subscribe to Planet Drupal feed - aggregated feeds in category Planet Drupal
Updated: 49 min 15 sec ago

Chapter Three: Cache API in Drupal

Mon, 25/04/2016 - 19:30

This is a very simple tutorial that could help you with the performance of your custom modules. I will show you how to use Cache API in Drupal 8 and Drupal 7.

You don't have to perform heavy caluclations every time you need to pull data either from third-party API or from database. Instead run it once and cache it. I personally use caching when I need to run complex SQL queries and third-party integrations (Example: get a list of available forms from Hubspot, or available campaign lists from Mailchimp etc).

In Drupal 8 use the following code structure:

Categories: Elsewhere

DrupalEasy: Demystifying Drupal 8's breakpoints.yml file

Mon, 25/04/2016 - 18:36

While working through a couple of Drupal 8 projects involving a custom theme, I've been curious about the themename.breakpoints.yml file. I've dutifully updated it with the proper breakpoint values, but I've been a bit mystified with its actual purpose. There's nothing in either of the base themes I've used (Neato and Bootstrap) that actually appears to utilize the data in the breakpoints.yml files. While the breakpoints are defined in this file, they are also defined in the theme's source Sass and LESS files, for use in the processed CSS. 

I decided to dig into the issue a bit more over the past few days in an effort to figure out exactly what the purpose of the breakpoints.yml file is. It turns out that the any module or theme can create a themename.breakpoints.yml or modulename.breakpoints.yml file. The Breakpoint module (included as part of Drupal 8 core) then reads these files and adds them to the site's configuration. At this point, other installed modules and themes can access this configuration and utilize it in their own functionality. This is exactly how the Responsive Image module (also part of Drupal 8 core) works. It accesses the installed theme's breakpoints configuration (via the themename.breakpoints.yml file) and serves up proper responsive images based on that configuration.

But, at this time, there is nothing in Drupal core that automatically allows breakpoints defined in the themename.breakpoints.yml file to be easily used in the theme's CSS. So, when a theme's breakpoints.yml file is modified, nothing will change on the site until the site's CSS is also modified. In effect, most theme's breakpoints will need to be defined in two places - the themename.breakpoints.yml file and the theme's CSS. 

There are methods available (and still being developed) to "link" breakpoints defined in the breakpoints.yml file with the theme's CSS - usually as part of a pre-processing task when working with LESS or Sass. 

Categories: Elsewhere

DrupalEasy: DrupalEasy Podcast 167 - Ted Spoils Star Wars (2015 Year in Review)

Mon, 25/04/2016 - 18:36

Direct .mp3 file download.

In this very special holiday episode of the DrupalEasy Podcast, (most of) the co-hosts pick our favorite Drupaly things from 2015, including our favorite Drupal moments as well as our favorite things about Drupal 8. Ted teaches us about the spirit of Christmas, Andrew talks about his favorite podcast episode, Ryan makes a surprise appearance, and we meet Kelley Curry (BrightBold), our newest co-host.

Our Favorite Things Drupal moment of the year
  • Mike - DrupalCon Barcelona community keynotes.
  • Ryan - adding new hosts to DrupalEasy Podcast / recording the April Fool's Day Episode / singing the Drupal Oddity song at DrupalCon Karaoke in Los Angeles and watching Mike H freak out.
  • Andrew - Being at work and having my boss ask what happened to the DrupalEasy Podcast. It was the April Fools Day episode. He was afraid we all lost our minds.
  • Kelley - DrupalCon LA prenote / release of D8 with my first 4 core commits / getting asked to join the podcast.
  • Ted - Acquia U, Drupalcon LA Hallway Track.
Drupal 8
  • Mike - View modes being a first-class “thing”.
  • Ryan - that I got to learn Dependency Injection, Services, OOP.
  • Andrew - Namespacing (more PHP but hey, we can now use it). Or more meta, we now fit into the rest of the PHP world.
  • Kelley - Theming improvements: Classy, Stable, Twig debugging.
  • Ted - OOP - CMI - Death to Features.
DrupalEasy News
  • The next session of the 12-week Drupal Career Online course starts in March, 2016 - visit for all the details.
Drupal Association Sponsors Upcoming Events Follow us on Twitter Five Questions (answers only)
  1. Started a 501(c)(3) to support a bilingual public school. Hurley K-8 and Neighborhood Parents for the Hurley School.
  2. Gathered Table iPhone app.
  3. Speak at DrupalCon.
  4. Cheetah.
  5. DrupalCon San Francisco help from Benjamin Doherty (bangpound).
Intro Music

One Christmas at a Time by Jonathan Coulton and John Roderick.


Subscribe to our podcast on iTunes or Miro. Listen to our podcast on Stitcher.

If you'd like to leave us a voicemail, call 321-396-2340. Please keep in mind that we might play your voicemail during one of our future podcasts. Feel free to call in with suggestions, rants, questions, or corrections. If you'd rather just send us an email, please use our contact page.

Categories: Elsewhere

Mediacurrent: Resource Guide: Version Controlled Drupal Development Using Git, Bitbucket & Pantheon

Mon, 25/04/2016 - 16:24

As a veteran web developer of nearly 20 years, one of the more difficult things I ran into when I started with Mediacurrent, a Drupal agency, was working within the constraints of a version control system.

Categories: Elsewhere

IXIS: Codeception modules for Drupal acceptance testing

Mon, 25/04/2016 - 12:05

Over the last couple of years, we have been using Codeception at Ixis for running automated acceptance tests during development work. Over this time we attempted to distil some of the ideas and abstract custom code into Codeception modules, which are all available on GitHub.

read more

Categories: Elsewhere

Janez Urevc: Goodbye Examiner, hello MD Systems

Mon, 25/04/2016 - 11:45
Goodbye Examiner, hello MD Systems slashrsm Mon, 25.04.2016 - 11:45

Approximately 3 and a half years ago I was finishing my job at Delo. I gave my notice in two months before, but I still had two more months to go. Yes, my notice period was 4 months (please learn from my mistake and never agree on something like that)! I was planning to take a break, travel Asia for few months, spend more time with my family and life to be easy and relaxing for some time. As you will see things didn't really work out that way...

It was early November and I was travelling home from Google Summer of Code mentor's summit. As we touched tarmac in PHL I got message from Rok Žlender. He heard I was leaving Delo and he asked if I would be interested in joining Examiner. Examiner?! Who didn't hear about it? Probably the first Drupal 7 website, biggest Drupal website on the internet at the time and code-base that most of the greatest minds of the community touched at some point. When opportunity like this appears you don't say no. I had an interview, they extended an offer and of course I said yes. And here I was, working in the position I could have just dreamed of just a few months earlier. Of course, my travel plans were postponed indefinitely as a result of that too. :)

In the past three years at Examiner I learned a lot. I was able to work with exciting technologies, fight complex problems that come with ridiculous amounts of traffic and data, intensively contribute to the Drupal community and met amazing people which I'm going to miss a lot. Team at Examiner literally built open-source mentality into it's DNA. I definitely wouldn't be able to be as active in Drupal 8 media initiatve if that wouldn't be a case. I am extremely thankful for that and every other opportunity I was given.

But, like always, every good thing also comes to an end. Lately I realized that I need to make a new step. I wanted a change in my life, which will allow me to keep growing personally and professionally. March 31st was my last day at the company and I finished it with my last deploy of Can it ever get better than that?

I am happy to announce that I am joining MD Systems in one week. They are a Drupal service provider based in Zurich, Switzerland. As a number one organizational contributor to Drupal they are probably the company with strongest dedication to the open source and community that I've ever seen to this day.

25 employees and 459 commit credits in last 90 days. You do the math!

I will be able to work with some of the brightest minds of the community and work on the meaningful and interesting projects. They are true Drupal 8 experts and authors of the NP8, a great Drupal 8 distribution for the enterprise media clients that was running live sites when most of the community still considered Drupal 8 to be completely unsuitable for production. I think that it is very fair to say that together we will be the strongest media experts for Drupal 8. If you need help with media or Drupal 8 in general do not hesitate to contact us!

I am really excited about this transition. There are already interesting new projects on the horizon that whole community will benefit from. Stay tuned!

Categories: Elsewhere

Red Route: CSS-only slideshows in Drupal with keyframes generated in Sass loops

Mon, 25/04/2016 - 10:41

One of the principles I'm trying to follow as I rebuild The Gallery Guide is to minimise the amount of code. I'm keen to reduce the number of Drupal modules, but also the amount of JavaScript used, mainly for performance reasons, but also as part of a strategy of progressive enhancement around the site.

On the current site, there are quite a few image slideshows, which are built using the views_slideshow module. Given that I don't need to configure timings via the UI, I could just handle the slideshows in theme code, maybe using a plugin like Cycle, or perhaps I might not need jQuery. But then I started thinking maybe I can avoid using JavaScript altogether for this.

I found a nice CSS-only slideshow by Dudley Storey, which uses CSS animations. It's set up for 4 images, with the first image duplicated at the end. Looking at the keyframes code, 25% of the time is allotted to each slide, of which 5% is the transition. On The Gallery Guide, gallery, exhibition, and artist pages can all have an arbitrary number of images attached, so I needed to do a tiny bit of maths to convert that into a more flexible formula. It works nicely in modern browsers without adding much extra code, and falls back to a single image in browsers that don't support CSS animations.

Seems like an ideal use case for Sass loops - here's the Sass partial that generates the keyframes code:

/// Set up image carousels.
/// @param {int} $items - the number of items
/// @param {int} $speed [6] - the duration of each item in seconds

@mixin carousel($items, $speed: 6) {
  $duration: $items * $speed;
  animation: #{$duration}s slidy-#{$items} infinite; 
  width: (100% * $items);
  .field__item {
    width: (100% / $items);
    height: auto;
    display: inline-block;
    position: inherit;

@for $i from 2 through 5 {
  .carousel-#{$i} {
    @include carousel($i);

  @keyframes slidy-#{$i} {
     * There are $i images in the carousel.
     * The first image is repeated, so there are $i - 1 distinct images to share the transition time.
    $duration_per_slide: 100 / ($i - 1);
    $moving_time: 5;
    $still_time: $duration_per_slide - $moving_time;

    @for $j from 0 through $i {

      $slide_start: round($j * $duration_per_slide);
      $slide_end: round($slide_start + $still_time);

      // Move everything one image width left for each slide.
      $left_offset: 0 - ($j * 100);

      @if ($slide_start <= 100) {
        #{$slide_start}% {
          left: #{$left_offset}%;

      @if ($slide_end < 100) {
        #{$slide_end}% {
          left: #{$left_offset}%;

This is a nice example of using variables in selectors, using the interpolation syntax - for instance, this Sass selector inside the loop .carousel-#{$i} generates the selectors .carousel-2, .carousel-3 and so on. You need to be careful not to end up with bloated output CSS, but I appreciate the ability to avoid repetition and keep the Sass code elegant.

As Sass code becomes more like "real programming" with mixins and functions, there's more need for formal documentation of code - this is my first time using SassDoc, and I like it so far.

Drupal makes it easy to set up classes with the number of elements, and with Twig in Drupal 8, it isn't even necessary to write any PHP code to achieve that - it's simple to create a template for a node type or field, and use the Twig filters to get at any relevant data. In this case, my field is called field_images, so the template is field--field-images.html.twig - there's more info about template naming conventions on, and here's an extract from the field template:

{% if items|length > 1 %}
<div class="image-carousel carousel-{{ items|length + 1 }}">
  {% for item in items %}
    <div{{ item.attributes.addClass('field__item') }}>{{ item.content }}</div>
  {% endfor %}

  {# duplicate the first item #}
  <div{{ items[0].attributes.addClass('field__item') }}>{{ items[0].content }}</div>
{% else %}
  {% for item in items %}
    <div{{ item.attributes.addClass('field__item') }}>{{ item.content }}</div>
  {% endfor %}
{% endif %}

Having been bogged down for a while with my attempts to migrate the site to Drupal 8, it's a refreshing change to be using new tools and have nothing but good things to say about them - in my experience so far I think that theming Drupal 8 will generally feel less hacky and more enjoyable than 6 and 7 did - I'm looking forward to working on bigger Drupal 8 projects.

Tags:  Drupal CSS Sass The Gallery Guide Drupal 8 All tags
Categories: Elsewhere

Cheppers blog: Breakthrough Media Management in Drupal with Scald - Part I

Mon, 25/04/2016 - 10:30

When creating websites, it can be tricky to find the ideal solution for media management. If you have ever worked on a website where there were countless image styles and videos to manage, you probably already know that choosing the best solution to handle media content is very challenging. The following blogpost will be useful to you if you want to know more about media management in Drupal, whether you’re an expert or just experimenting with the platform.

Categories: Elsewhere The Drupal Console cheat sheet, a quick reference guide.

Sun, 24/04/2016 - 23:00
The Drupal Console cheat sheet, a quick reference guide.

I published a quick reference guide (cheat sheet) for listing Drupal Console commands. The idea is to build an easy to use reference document, you can view it with modern desktop computer browser and mobile devices.

You can find this project at

The command information you can find on this cheat sheet is the same available commands at documentation. In both projects, the information is exported from the main Drupal Console project and as you can expect the information within this cheat sheet is multilanguage.

You can fork this project to contribute from

jmolivas Sun, 04/24/2016 - 21:00
Categories: Elsewhere

Freelock : Quality-oriented Drupal DevOps - Session recording

Sun, 24/04/2016 - 16:32
LinuxFest Northwest 2016: Quality-oriented Drupal DevOps Video of LinuxFest Northwest 2016: Quality-oriented Drupal DevOps

The audio quality isn't the best, but the talk I gave yesterday at LinuxFest Northwest is already up on YouTube! You can watch it here...

DrupalDrupal PlanetDevOpsQualityQuality AssuranceMatrixPrometheusSaltJenkinsConcourseIcingaWraith
Categories: Elsewhere

Damien McKenna: Rough plan for planning to port a site to Drupal 8

Sat, 23/04/2016 - 17:26

I have a small freelance client whose site I've offered to port to D8 pro-bono as a learning exercise for myself and a friend who's learning Drupal. It'll take a number of months to do, even though architecturally it's a small site, but that's fine. My very first step was to create an initial plan on what steps we'd need to do to to plan the site build. Seeing as this list ended up being completely generic, I figured I'd share it.

Categories: Elsewhere

OSTraining: Kint is the Drupal 8 Alternative to Krumo

Fri, 22/04/2016 - 22:07

Kint is part of the new part of the Devel module in Drupal 8.

Developers who worked with Drupal 7 may remember Krumo, which is a very helpful debugging tool. Kint is an almost direct replacement for Krumo.

In this video from our Drupal 8 Theming class, Rod shows you how to use Kint to print the arrays on your site.

If you place {{ kint () }} into your theme's page.html.twig file, you'll be able dig into your site's arrays and variables.

Categories: Elsewhere

Palantir: Thank You, Larry!

Fri, 22/04/2016 - 20:45

I’ll never forget Larry Garfield’s first day at Palantir, just over a decade ago. We were using Windows workstations at the time, but Larry brought a Knoppix CD into the office so that he could run Linux on his computer instead. Larry later followed the rest of the office when we switched to Macs, but with reluctance and much grumbling.

Since that time, Palantir has moved offices three times and grown to a company of over thirty people distributed around the country. Instead of acting primarily as a development shop, we now provide a full array of strategy, design, development, and support services tailored to the needs of our diverse client base.

Much of this growth and success has been fueled by our embrace of open source technologies, like Drupal, that have enabled us to create and collaborate in an open environment and provided the flexibility that helps us and our customers make the right choices.

Anyone who knows Larry knows that he’s always been a passionate advocate for software freedom. As someone who was involved in the Drupal project even before Palantir started working with it, he helped introduce us to its community as we made the transition to becoming a truly open source company. He played key roles in the development of Drupal 7 and Drupal 8, and in recent years, he’s focused on helping different open source communities share knowledge and work together toward building standards and best practices for the open web.

At Palantir, Larry’s technical leadership has helped elevate the work of our technical team and helped us build a robust and sustainable development process designed to evolve along with the ever-changing needs of our customers.

After more than ten years as part of the Palantir team, Larry is leaving the agency world to tackle new challenges. We very much appreciate the time he spent with us at Palantir, and while his presence will certainly be missed, we are also very excited to see how he applies his skills and knowledge to help improve open source software development for people everywhere.

Categories: Elsewhere

Larry Garfield: The end of an era

Fri, 22/04/2016 - 20:06

Today is the end of an era. After just over ten and a half years, this is my last day with

The past decade has seen Palantir grow from a company of 5 to a company of over 30. From a company that wouldn't touch the GPL with a ten foot pole to a strong advocate for Open Source, Free Software, and Drupal in particular. From a company that did mostly subcontracting work for design firms to an end-to-end soup-to-nuts agency. From having two desktop screen sizes anyone cared about to an infinite scale of screens from 3"-30". From a world where IE 5 for Mac was considered a good browser to one where once again, the latest Microsoft browser is actually good. (Everything old is new again, I suppose.)

After ten years with the same company (which in Internet years is about a millennium) I certainly have stories. There's plenty I could say about Palantir, most of it good. :-) In the end, though, there's one thing in particular that has kept me here for so long. is the kind of place that has your back.

read more

Categories: Elsewhere

Acquia Developer Center Blog: Talking Drupal 8: Lightning Distribution and Module Acceleration Program

Fri, 22/04/2016 - 18:47

John Kennedy and I spoke about two exciting Drupal 8 projects he's running at Acquia in 2016. He's the Program Manager of the $500,000 US dollars Acquia is investing to upgrade important modules from Drupal 7 to 8 as part of the Drupal 8 Module Acceleration Program. He's also the Product Manager of Acquia's Enterprise Authoring Drupal 8 distribution, Lightning.

"I think Drupal is great at a lot of things ... and if we want to create a world where regular people can create great experiences, not just developers, Drupal is a fantastic application for that." - John Kennedy

Interview video - 25 min. - Transcript Below

Guest dossier
How did you discover Drupal?

John Kennedy: Well, I was doing a little bit of work for a nonprofit organization called Vibewire maybe back in 2006 and they said to me, “We’ve got this website, it keeps going down and we really need to have you look at it for us.” I looked at it, it was on Drupal 4.7, loaded up to the brim with modules and I said “This is awful” and promptly migrated them to Plone.

jam: Thank you, have a nice day.

John Kennedy: Since then, I’ve had some better experiences with Drupal. I ended up running my own Drupal shop for a while and I then came out to the UK to actually start the UK operation of the Commerce Guys and I did that for a little while, and then Acquia brought me on to be head of solutions architecture for Europe and now they’ve brought me over here.

jam: Fill in the blank here between 2006 and 2016, from being a big Plone fan to actually sticking with Drupal all these years. What changed for you?

John Kennedy: I don’t know that I was a big Plone fan. I was a big open source fan. I’d been a systems administrator and I’d been using the range of tools on top of Linux for a long time. Plone at the time seemed more mature. I had some developers who I could use for Plone, but what happened was that I found a couple of projects that were really suitable for Drupal and I worked out how to use it, nontrivial at the time, at least ... still ... and then once I was dug in, I found it more and more useful and I really got in touch with the community. I started coming to DrupalCons. The first DrupalCon I came to was Chicago and I hadn’t missed any since until I had my son 17 months ago and then I’ve missed a couple.

The power of the Drupal Site-Builder

John Kennedy: Absolutely. Drupal creates this role that exists in other ecosystems, but it’s really clear in Drupal of site-builder, and it’s someone who can be, but is not necessarily a developer, and can be, but is not necessarily an author, and they actually create experiences by assembling modules, assembling functionality, and that could be layouts with Panels or it could be business logic with Rules or it could be a range of other functionality bringing it in through the module ecosystem. I think that role is incredibly powerful because it allows little organizations and large organizations to much better leverage their expertise to build great experiences, to build complicated functionality.

It also facilitates this amazing ecosystem of people who scratch their own itch, but also contribute to a wider modular functionality and it’s a lot more, I would say, sophisticated than the module ecosystems you see in things like with Ruby Gems or necessarily just the wider Composer or PHP ecosystem because it actually takes into account that there’s an end user that needs an administration interface and needs guidance on how to implement this. It’s not just a piece of code that you plug in. It’s also, by default, an administration interface and general principles that allow it to slot into Drupal really easily.

jam: I’m going to try and boil that down. What I tell people often in this context is Drupal has taken the incredible power and flexibility of a lot of great code built by a lot of great developers and made a fundamental design decision along the way. “We are going to put the power of that code in the hands of less technical end users and make it available to anyone who wants to build community, build a business and so on.” So the fundamental design decision is empower the user-interface-user and not just the developer, is that fair?

John Kennedy: Yes, I think so. I think when we think about WordPress, they’re definitely empowering a user. They’re empowering an author, but it’s really just an author. It’s someone who just wants to publish simple content or who wants to write words or add media. Drupal enables an expert user - it’s not necessarily a coder, but it’s someone who has a little bit more knowledge and then can create something really sophisticated.

What is Lightning for?

John Kennedy: So the way I like to talk about lightning is that it’s not an out-of-the-box distribution. It’s a framework. It’s a way to cut 20% off any large project that wants to achieve a great authoring experience. Our tagline for it is "enabling developers to create great authoring experiences and empowering editorial teams". It’s not meant to be a beautiful instant experience like Atrium. It’s really meant to be a set of principles, frameworks, code, best practice, documentation that developers can take to leverage their time, to not have to think about that core set of functionality around authoring which, as we defined it, is layout, preview, media integration and workflow. Within those categories, we enable use cases like putting groups of content through a work flow and being able to preview them.

So you can enable scenarios like the election night scenario or the Super Bowl scenario where I might have two or three groups of content that I write and I want to be able to preview, but only one of them is ever going to get published. That was really hard previously, but we brought together in Lightning a few different modules to enable that, bringing together work spaces and workbench moderation and a couple of other things to allow for that. You can do so much more than we’ve done, but by giving you that little piece, I think we’ve enabled some really interesting use cases.

So there are a few of those different things that we’d brought together. It’s really about the fact that we think those four functionalities should be tightly coupled for enterprise authoring, not all the time, but specifically if you’re a large organization with many authors and you’ve got a sophisticated authoring process, then those functionalities should be tightly coupled because they should integrate with each other for that use case.

jam: So it’s a time saver for developers and they also believe it’s an opinionated way of integrating functionality within Drupal, and I imagine - am I right in saying that if people apply it, it will also save a lot of time on maintenance and handing off projects between different dev shops because a set of universal and good choices has been made along the way?

John Kennedy: Absolutely. Our internal PS team now, when they launch a project, they use Lightning by default.

jam: Even if it’s not an authoring heavy site, is that what they’ll start with anyway?

John Kennedy: I would say that Acquia clients tend to have authoring needs, so I don’t think Lightning should be necessarily the 80% use case for all Drupal shops out there, but it is for Acquia because that’s the kind of client we have. I think if you’re thinking about enterprise authoring, not just to post a blog, in fact not just multiple content types and interesting views, I think I’m really talking about if you have multiple authors and work flows and you need to create lots of different layouts and landing pages and all these kinds of slightly more difficult use cases, then yes, you should be thinking about Lightning.

jam: This is fully open source. When can I get it and how can I make it better?

John Kennedy: In fact, we are being as transparent as we can possibly be. We publish all of our release notes, but also our forward releases have their stories on, so you can go see what we’re targeting, if we’ve already covered that, the issues. If they’re closed, they’re going to have the little line through them like they do on and we’re publishing as much as we can. So really, people aren’t just helping us fix problems, but influencing our forward roadmap as well. We want to hear what people want.

jam: That’s great, okay. So you’re combining deep technical knowledge and intuition with actual reports from people who do this every day.

John Kennedy: That’s it.

The Lightning Top 3

jam: What would you say are the top three things about Lightning that makes it really ideal for your targets with its use cases?

John Kennedy: So if developers are talking to their managers about why they should use Lightning, the obvious ones are the feature sets. I talked about that before, work flow preview, layout, media, but actually what makes this brilliant for developers is a set of principles that we’ve come up with to build Lightning.

  1. One of those is that you never have to undo anything. So a lot of distributions, you’ve got to go in and you’ve got to undo configuration or things that they’ve decided upon earlier and that makes it less useful for you. We’ve really taken an unopinionated approach so that you can take Lightning and build forward.
  2. The next one is automated testing. We’ve built Behat tests into all of our major functionality and that means that as you build on top of Lightning, you can actually test whether you’re breaking any of our stuff which is really useful when you’re building an enterprise authoring system.
  3. The final one is upgradability and this is controversial because a lot of distributions aim at this and don’t quite get there, but we think by keeping a small-ish core of Lightning, we can actually maintain an upgrade path going forward. That means that if you build on Lightning, you can actually get free features as we upgrade Lightning. Those won’t necessarily be turned on automatically, but as a developer, as you upgrade Lightning, you have the ability to incorporate more of this functionality into the experience that you’re giving your users.

jam: So the first part of those really react to problems that we’ve all faced in one situation or another on the web in Drupal consulting and this idea of the build-it-forward and upgradability built into the distro really hits - if you can nail that, that really hits some pain points that I’ve certainly experienced along the way. Cool, great. So build-it-forward sounds like a good way to sum that up.

John Kennedy: Yes. It’s hard. What we’re doing is hard and we recognize that and there’ll be a lot of time spent maintaining upgradability and those concepts, but we think they’re key to the success of the distribution, so we’re putting the effort in.

jam: Now, in real time it is early March 2016. We’ve had Drupal 8 for a few months now and Drupal 8.1 is coming up. Is the Lightning Drupal 8 version already out and ready?

John Kennedy: So we’re in beta. I think we’re in beta four right now and as I said, our professional services department is already using our beta for building real sites, but we’re not going to release our GA version of Lightning until the 31st of March [this has slipped a bit since we recorded this conversation]. There’re a couple more features we want to put in there, things we want to tighten up, and actually we’re now thinking about what that looks like in 8.1 and how we bring 8.1 into our platform as well.

The Drupal 8 Module Acceleration Program

jam: So I’ve been doing Drupal, I noticed, for 11 years and I’ve figured out recently that a huge percentage of our community has never experienced a new major version release. Drupal 7 was our major version for more than five years and while we did this enormous rebuild, re-architecture, that has produced something really wonderful - I think Drupal 8 is fantastic. I’m enjoying every moment I use it.

Those of us who’ve been in since 4.6 which is actually - so we’ve been doing Drupal about the same amount of time. We’ve seen a lot more releases. For example, the release of Drupal 6, when it came out, was completely unusable. Every Drupal 5 site worth talking about used panel views CCK, and at the time, the views maintainer did not want to port Views One to Drupal 6 and took another six or eight months to finish Views Two for Drupal 6, and Drupal 6 was kind of dead in the water for a long time.

Drupal 7 had really good uptake, it was a solid release, but still we had this situation where it took a year for the contributed module space to really, really catch up with Drupal 7. So I want to point out a couple things about Drupal 8 that make it a much more usable release than we’ve ever seen before. Drupal 8 was completely and thoroughly tested from the first cutting of the branch, every single patch that was applied, so it’s really functionally solid. You can do a lot more with Core. Views is in Core, multilingual is in Core, and it’s very compact and like a ton of boilerplate has been taken out, you can make your own admin interface because it’s all Views. I mean it’s really very powerful and flexible and you can do great sites already now

But there’s also a lot more economic value hanging on the Drupal ecosystem for a major release than has ever happened before, and a lot of us--Acquia, community, shops, clients all around the world--don’t want to risk Drupal 8 failing as a release. We want this uptake to happen a lot faster. So I think the Lightning distribution coming from Acquia and being used in customer projects already being released on March 31st [and/or soon thereafter!] sends a signal, “Hey, this is ready to use.” One of my projects right now is writing the Drupal 8 Module of the Week series which is also - first of all, I want to celebrate the people who’ve done this work to bring this modules, to create these modules, to make them available for Drupal 8, but we also want to tell people, “Hey, use this thing. It’s awesome and you can do all these different things with it.”

Your other big project, you’re leading the Module Acceleration Program, Acquia’s Module Acceleration Program for Drupal 8. You’ve written some blog posts about it. You want to talk about what that is and how it addresses what I’ve just been going on and on and on about?

John Kennedy: Sure thing. So we did think a lot about Drupal 7’s adoption path and I was around and I made mistakes in 6 and I made mistakes in 7 and some of those mistakes were taking on modules early when they were not ready for release and I think lots of people being burnt by that process means they wait a little while before taking up a new major version.

What we wanted to do was take the great work of the community and bring modules to production readiness, giving people confidence to go out and implement them and use the functionality they’d expect in Drupal 7 in Drupal 8. So Views is in Core, so that’s less of an issue, but there are a whole range of modules that people use all the time and we have lots of experience and lots of channels to hear what people need through our clients, through our partners, through all of the community members we have in Acquia and we really ran a process where we looked at what were the top 50 modules that were going to make the biggest impact on Drupal 8’s usability?

We built that list; that was in conjunction with Angie and a range of other people at Acquia and we looked at how do we do that? How do we bring them to production? What we found was that all we needed to do was talk to people who already wanted to do them and give a little bit of funding so that they could take the time to do it. So that meant going to some of our partners like Palantir and like Lullabot and other shops who really wanted to give the time, and they gave us a really low community rate to go and do what they already wanted to do. We wanted them done, they wanted them done ...

jam: So you’re threading the needle somewhere between what a developer costs in a commercial setting, building a client project and the pure volunteerism which, for better or worse, most of our community wants to contribute, most of our community wants to make a difference, but when you’ve got paid work and volunteer work, the volunteer work happens whenever it can, right?

John Kennedy: Yes.

jam: So threading this needle, how did you figure out what a community development rate was that’s good enough to people to focus on helping the whole community by upgrading these functionalities?

John Kennedy: There was already a rate out there that we kind of went by as a rough approach, but there’re also people wanting to give their time and just said “Look, I can do it and this is what I can do it for.” A lot of that time, that was even better. So we brought that group of people together and it was made up of maybe 11 externals who were working on contract for us and maybe another five within Acquia that were doing work just as part of their jobs, and then maybe another 5 to 10 from the community who had parallel projects that had needs for these modules and actually just needed to get these done.

What we did then was we helped coordinate all those people. So we started running ... our internal scrum is daily, but then we had an external scrum which was weekly. Then we broke out and had a work flow scrum so that those people who are really interested in that could gather around that. In fact, we kicked a lot of this off at the summit that we had at BADCamp last year where we brought together one subgroup of the wider group which was around authoring. I was really interested in how Lightning was going to get done and a lot of other people were interested in how other parts of authoring were going to get done.

So we all got together at BADCamp and came up with the needs for this authoring experience and that fed into a lot of what we built as well, but it was really a lot of community engagement, a lot of going out and talking to the maintainers of modules and working out whether they had the time to actually do the ports themselves, or whether they could share maintainership, or whether they could support an effort, whether they could do patch reviews and things like this for our contractors and our contributors.

I think that was a lot of the goal in the project. It was great to get great rates from people and great to work with lots of the community, but that coordination effort meant we just steamed ahead in terms of getting modules done. I don’t want to take credit for ... I don’t think even the program should take credit for doing whole module ports. We took a lot of code that existed in porting, but what we did was we got it production-ready. We got it out there, we got it to the beta, we got it so that people use it in projects.

jam: One of the things that I’ve been really proud of over the years being part of Acquia is where the rubber really, really hits the road. Acquia has gotten open source right and especially on the contribution side, the first thing Dries did was hire Gábor to get Drupal 6 out the door in the best shape possible. We worked with really early versions of Drupal 7 when I was in Engineering building Drupal Gardens and we made some big mistakes around module upgrades at the time and we’ve learned from that and have apologized, I believe, along the way, but when the rubber hits the road, Acquia has done an awful lot of things that have helped the entire project and our community. I’m really, really proud of that as a Drupalist.

In this case, as you’ve written in the blog, Acquia’s invested US $500,000.00 in these upgrades, and frankly the fact that we get production-ready modules and our community gets some more rent paid, I think that’s a great outcome for everybody. How do you think this investment is going to - what’s the return on this investment going to be for us and for Drupal?

John Kennedy: We talked before about how a complete module ecosystem accelerates Drupal. I think the big return that we’ll see is people coming into Drupal 8 earlier, so existing Drupalists, but also people who are evaluating Drupal, seeing the functionality ready and getting onto Drupal, and we’ll see that curve. That exponential growth that we’ve seen in 7, we’re going to see that earlier. That’s the big return.

I think what keeps us all up at night is let’s see the big acceleration of Drupal 8. I think I’ve seen some early stats and there’re some really good news about what Drupal 8 is doing in terms of if we look at the path of Drupal 7, it looks like we’re actually double the amount of sites at the same stage. So that’s pretty good, but what we saw over a long period of time was this about 76% year-on-year growth of Drupal 7 and that brought us from a community that was already significant to one that ran 3% of the web. It was huge and the 35,000-odd active contributors now, a lot of them came onboard in that cycle and we really want to see that happen again. We’re going to bring back the excitement to Drupal.

I think Drupal is great at a lot of things and it’s still really relevant in this day and age where we are looking at more and more sophisticated use cases for authoring and for web applications, and if we want to create a world where regular people can create great experiences, not just developers, Drupal is a fantastic application for that.

jam: Well, thank you for coordinating all of this. Thank you for taking the time to talk with me today. Now get back to work and make Drupal 8 production-ready.

John Kennedy: Sure thing.

Podcast series: Drupal 8Skill Level: IntermediateAdvanced
Categories: Elsewhere

Metal Toad: Upgrading Drupal Media module to 7.x-2.x

Fri, 22/04/2016 - 18:41
Upgrading Drupal Media module to 7.x-2.x April 22nd, 2016 Ben Teegarden

I recently spent some time fighting against the Drupal Media and File Entity modules in order to upgrade them from version 7.x-1.x to 7.x-2.x. (To be specific, Media was upgraded from 7.x-1.4 to 7.x-2.0-beta1, and File Entity to 7.x-2.0-beta2). Through this post, I will share with you my trials and tribulations, with the hope that one day no one else will endure the pain and suffering that I have endured. This is one of those situations where ultimately there was not that much that needed to be done, but a lot of time was spent on trial and error.

Incompatibility with Media Crop module

Based on all the comments/documentation I've seen around this upgrade, it seems like everyone's experience differs slightly. I assume that is because everyone is updating from and to slightly different versions of the Media module. Complications can also arise from modules that are dependent on the Media module. The site I was working on uses the Media Crop module which, as it turns out, is not yet compatible with Media 2.x (at least at the time of writing this). Luckily our client was not actually using the functionality of Media Crop and didn't mind losing it. Unfortunately though, simply uninstalling Media Crop seemed to leave some traces of the module on any images that were added via a WYSIWYG editor (Image styles referencing Media Crop, CSS classes and strange markup). This seemed like a rabbit hole I did not want to go down so I was happy to find that applying this patch resolved the rendering issues I was having. For whatever reason, the actual crop functionality is no longer accessible from the WYSIWYG but at least the upgrade does not destroy the rendering of current images. If you're using the Media Crop module I would recommend applying the patch before updating Media.

To Media Colorbox or not to Media Colorbox?

This site was also using the Media Colorbox module. I heard rumors that the functionality provided by Media Colorbox comes with Media 2.x, making the Media Colorbox module obsolete. Personally I couldn't find a way to keep that functionality without using Media Colorbox so this is still a mystery to me. I kept Media Colorbox installed.

Bash script to update Media and File Entity modules

So, with encouragement/prodding from Keith Dechant, I decided to write a Bash script to carry out the tasks of the actual upgrade:

echo "------ Disabling Media sub modules and Features that depend on Media" drush dis media_crop, media_internet, media_youtube, media_colorbox, media_wysiwyg -y drush dis custom_feature, another_custom_feature -y   echo "------ Disabling Media and File Entity" drush dis media -y drush dis file_entity -y   echo "------ Downloading latest versions of Media and File Entity modules" drush dl file_entity, media -y   echo "------ Enabling File Entity and running cron" drush en file_entity -y drush cron   echo "------ Enabling Media" drush en media -y   echo "------ Running DB updates" drush updb -y   echo "------ Re-enabling Media sub modules and Features that depend on Media" drush en media_crop, media_internet, media_youtube, media_colorbox, media_wysiwyg -y drush en custom_feature, another_custom_feature -y   echo "------ Setting new permissions added by latest version of Media and File Entity modules" # Media permissions drush role-add-perm Programmer 'administer media browser' drush role-add-perm Administrator 'administer media browser'   drush role-add-perm Programmer 'access media browser' drush role-add-perm 'Content Editor' 'access media browser' drush role-add-perm Administrator 'access media browser'   drush role-add-perm Programmer 'use media wysiwyg' drush role-add-perm 'Content Editor' 'use media wysiwyg' drush role-add-perm Administrator 'use media wysiwyg'   drush role-add-perm Programmer 'administer media wysiwyg view mode' drush role-add-perm Administrator 'administer media wysiwyg view mode'   # File Entity permissions drush role-add-perm Programmer 'administer file types' drush role-add-perm Administrator 'administer file types'   drush role-add-perm Programmer 'create files' drush role-add-perm 'Content Editor' 'create files' drush role-add-perm Administrator 'create files'   drush role-add-perm Programmer 'view own files' drush role-add-perm 'Content Editor' 'view own files' drush role-add-perm Administrator 'view own files'   drush role-add-perm Programmer 'view own private files' drush role-add-perm 'Content Editor' 'view own private files' drush role-add-perm Administrator 'view own private files'   drush role-add-perm Programmer 'view private files' drush role-add-perm 'Content Editor' 'view private files' drush role-add-perm Administrator 'view private files'

The script is probably mostly self explanatory, but I went a little comment happy anyways. I ran this script on my local environment (many many many many times). You do not want to run it on a Production site because you will probably need to do some modifications to get it working for your situation. Once it is ready, you should export the Production database down to your local environment, get the site up and running, and then run the script. Next, export your local database and import it to Production. The first thing that the script does is disable modules that are dependent upon Media or File Entity. You might need to do a test disabling of Media and File Entity to note which other modules get disabled. Make sure that you add these modules to the reenable part of the script. Since we use Features, there were also some Features that listed Media or File Entity as a dependency and so I disabled them as well.

Media 2.x and File Entity 2.x also create a few new permissions that need to be set. If you use this script, be sure to replace our roles with roles that are relevant to your site. Also, some permissions provided by previous versions of the modules have been removed. If you save permission configuration in Features you might need to update your Features after upgrading.


After running the script I still found that images added via WYSIWYG were not rendering correctly. There was now extra markup around images that was causing styling issues, and links were being removed from around images. I struggled with this for a while until I happened upon an obscure comment somewhere deep within the bowels of Drupal bug tickets. For reasons unknown to me, Media 2.x has changed the markup around images. However, there is a simple resolution to this in the Media module config: Go to /admin/config/media/browser and check the box "Legacy rendering (using field attach)" and your markup will be as it was before upgrading.

While we're talking about obscure configuration, make sure that your text formats have the "Convert Media tags to markup" filter enabled.


Hopefully I didn’t forget to mention anything major and I hope that this is useful to someone out there. If you find yourself here because you are trying to perform this upgrade: good luck you brave poor soul.


I found comments 9, 10 and 11 very helpful here:

This was also a useful reference:

Categories: Elsewhere

Drupal Commerce: Upgrade paths between Drupal 8 module versions

Fri, 22/04/2016 - 17:11

Over time, modules update their shipped configuration such as rules, views, node types. Users expect to get these updates when they update the modules. For example, Drupal Commerce 1.x provides over eleven default views and rules. From release to release, these Views and Rules were enhanced with new features or bug fixes reported by the community.

Take the order management view. In a future release of Drupal Commerce, we may add a newly exposed filter to the view. In Drupal 7 the view would automatically be updated unless it was overridden. That is not the case in Drupal 8.

Drupal 8 introduces the Configuration Management system. While robust, it changes how we work with the configuration in comparison to Drupal 7. Instead of a module owning configuration, configuration is now owned by the site. When a module is installed, its configuration is imported. On module update, no configuration updates are performed. Instead, the module must write an update hook to perform one of the following updates:

Categories: Elsewhere

OpenLucius: 11 Cool Drupal modules for site builders | April 2016

Fri, 22/04/2016 - 09:59

Let’s start straight away with the things that struck me about Drupal module updates of last month:

1. Image effects

The Drupal 8 and Drupal 7 core both have features to facilitate graphics, including scaling and cropping.

To perform other actions, Drupal 7 had additional modules: ImageCache Actions and Textimage:

  • Placing overlays, for example for round corners
  • Adding a watermark, for example your logo
  • Placing text over image, for example your company name
  • Making images lighter/darker

In Drupal 8 these additional image features are now available in this module.


Categories: Elsewhere

ActiveLAMP: Creating Layouts with the Layout Plugin Module in Drupal 8

Fri, 22/04/2016 - 05:01

Writing custom layouts using the Layout Plugin module for D8 is really easy. This video will outline how to create a new layout in your theme using Foundation 6 as the base theme and how to extend the layout to add custom classes and id.

Categories: Elsewhere

Lullabot: “One Weird Trick” for Drupal Security... or Something

Thu, 21/04/2016 - 22:00
Matt & Mike talk with Drupal Security Team Lead Michael Hess, along with the former lead Greg Knaddison. We talk about the current state of Drupal security, along with their Drupalcon session, "Watch the Hacker Hack".
Categories: Elsewhere