Apr 28 2019
Apr 28

From Donald Trump's consistent accusations to lack of ad revenue caused by the shift in media consumption behaviors, the digital disruption that hit the media industry left the majority of media outlets considering their next steps knowing that being left behind in the digital age meant the end for them.

Focus shifted from simply reporting the news to delivering the most engaging and comprehensive digital experience possible for their readers.

Al Bawaba News - Digital Journalism and Media

Al Bawaba News - The Largest Independent News Platform in the Middle East (Built by Vardot)

News and media platforms need to remain vigilant and embrace the tech trends that impact content publishing in the near future. Here are the trends that are expected to impact the digital news and journalism industry:

1. Contextual Experiences

We are more likely to be doing more than one thing at the same time and news media outlets should have that in mind when considering how to develop their UX.

For example, you are taking a run on the gym treadmill and a relevant news article was just published; would you interrupt your routine to read a long-form article? The most likely answer is no. The desire to read the article would fade as the minutes' pass.

Wouldn’t it be great if we could listen to published news articles as we run, work out, cook or even drive? That is now possible thanks to progress made in Natural Language Generation (NLG) technology.

Natural language generation (NLG) is a software process that automatically transforms data into written narrative whilst keeping in mind SEO related factors such as keywords and users reading proficiency levels which makes it a powerful tool for news media outlets who seek to create contextual experiences for their readers.

"By 2020, natural language generation and artificial intelligence will be a standard feature of 90% of modern BI and analytics platforms." - Gartner

According to the Future Today Institute; various major news media outlets have been utilizing Automated Insights; which mines data for them and is capable of writing more than 2,000 stories per second using natural language generation to produce stories.

As voice search is increasingly becoming the norm, users will begin to ask for general content with specific conditions: 
  • “Alexa, I am running late, please give me the headlines only.”
  • “Siri, please provide me with news articles that are less than 2 minutes long.”   

Users are always looking for the most convenient and personalized experience; the news media platform that delivers contextual experiences are sure to gain a lead over their competition.

Such a digital experience could grow an audience possibly become a subscription service in the near future.

2. Fact Checking – In Real Time

Promoted by a president, championed by biased political views and powered by algorithms; ‘fake news’ is a trend that has become an unfortunate reality.

Donald Trump Fake News

What is real and what isn’t?

People have either become proudly misinformed in the bubble they live in, or fatigued to the point of apathy towards real journalism. This phenomenon is arguably the biggest immediate threat to the profession and what’s worse is that generating ‘fake news’ has become easier than ever.

Enhanced algorithms for voice, video, and sound are being generated. Researchers at MIT CSAIL have been studying how children learn new words in order to train computers how to recognize speech. Computers are also being trained to watch videos and predict corresponding sounds in the real world.

Whilst this progress will enable AI to provide richer and better user experiences, there have been examples of malpractice too.

In 2017, researchers at the University of Washington developed a model that convincingly showed President Barack Obama giving a speech—that he never actually gave in real life.


Algorithms provide you with news based on your likes, online behavior, and interactions. While this does enable news platforms to generate more traffic, but at what cost?

3. Bots

Most journalism is simply about reporting the news and bots have done that efficiently so far.

Bots have proven to be effective when it comes to receiving instant alerts regarding trade warnings, natural disasters and etc. Bots will continue to be refined and improved to automate news related tasks freeing up time to allow reporters to devote time to more important tasks.

The major risk associated with bots is that they are only as reliable as the people who build them. People or groups with nefarious interests can use bots to distribute false information.

  • Ensure that your bot clearly explains its purpose and specific functions are.
  • Your bot must be able to showcase from where the answers it provides are coming from without any bias towards an idea or people.
  • The bot must represent your news and media platform’s values. What happens if your bot interacts with another bot or person whose values counter those of your organization?

Bots will continue to play a key role in journalism and other fields heavily reliant on content publishing as they utilize a combination of bots and AI to create new content. 

With elections taking place around the world, misinformation bots will continue to play a big role on Facebook, Twitter, and Instagram. You can expect to see more tech-based solutions being proposed to address the issue; your news platform must follow suit to ensure the credibility of your journalism.

4. Digital Frailty

Digital frailty refers to the loss of digital assets such as published content and articles. Typically, a news agency would lose it's content when attempting to upgrade their website.

In reality, this issue is easily avoided and usually caused due to poor IT practices and vendor selection.

A simple way to protect your archives and preserve digital assets is to build your platform using a CMS that is flexible, structured and features a revision process. 

Varbase Revision Process

Varbase - Drupal Distribution Revision Comparison - Source: Drupal.org


Drupal is a great CMS for digital news and media businesses as it delivers on the aforementioned and more.

Mergers and acquisitions are another reason why specific content goes missing. This is increasingly alarming as the number of media outlet owners are becoming more and more involved in politics.

News outlets sometimes are forced to delete content that is not aligned with the new ownership’s politics. A recent example of this scenario that made headlines around the world is when the Trump administration deleted all climate change related content from government websites in favor of the new administration’s agenda.

These tech trends and disruptions are but a mere sample of what impacts the digital news media industry. They present challenges but also tons of opportunities to create an engaging digital media experience for readers. 

From global media titans to independent content publishing platforms; Vardot specializes in developing personalized digital experiences for the news and media industry. 

Contact us to discuss how you can transform your news and media platform into a state-of-the-art digital news experience.

Apr 27 2019
Apr 27

Michael Hess, (mlhess), Senior Technologist and Adjunct Lecturer at University of Michigan and member of Drupal's Security Working Group joins Mike Anello to talk about recent Drupal core security updates, security release processes, Drupal 7's future end-of-life, and the new Drupal Steward program.


DrupalEasy News

Upcoming events

  • DrupalCamp Chattanooga - June 7 and 8, 2019.
  • DrupalCamp Asheville - July 12-14, 2019.
  • Midwest Drupal Summit - August 8-11, 2019 - Michael is the primary organizer - for more info, go to #mwds in the Drupal Slack workspace.


Follow us on Twitter


Subscribe to our podcast on iTunes, Google Play 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.

Apr 26 2019
Apr 26

April's been unexpectedly generous with us. It has spoiled us with plenty of high-quality content on Drupal. From “enlightening” tutorials to articles raising awareness of certain limitations, to useful tips and actionable advice, to blog posts announcing life-saving module releases... reading our way through the pile of Drupal blog posts this month has been a true dare.

Then, trimming down our bulky list to just 5 posts has been an even bigger challenge...

Nevertheless, we did manage to make our selection. Here's what we kept:

The WishDesk team share their experience with leveraging the Drupal 8 Views contextul filters via a well-structured, easy to follow tutorial.

That we're highly grateful for...

Why has it drawn our attention? 

  • because we had already been excited about the unmatched flexbility that the contextual filters in Drupal 8 offer
  • it clearly outlines the main differences between regular and contextual filters
  • it presents a specific use of these filters: setting up a task tracker in Drupal 8 using Views 

With Views already providing us with an UI for putting together data collections based on certain criteria, now having contextual filters, as well, to fine-tune the results come as an... unexpected “present”.

Their key benefit and advantage over the “standard” filters? They accept dynamic values...

Another one of our top favorite Drupal blog posts this month has been this piece of content raising awareness of the Layout Builder's limitation:

The code generating the image element markup doesn't “store” information about the specific sizes of the column that the image will be placed in.

In other words: there's no way for Drupal site builders to enter an accurate value for the “sizes” attribute when using the Layout Builder...

And the author, Brian K Osborne, draws attention on this issue after first highligthing the main “dilemma” of using responsive image styles:

Providing just one high resolution, high-quality, oversized image vs providing a suitably sized image for efery screen resolution...

We couldn't leave out Dries' blog post on the due preparations for upgrading to Drupal 9.

The reassuring aspect that he reveals is that all these preparations revolve around one common best practice: detecting and removing deprecated code from our Drupal 8 websites.

He goes on giving straight answers to all those legitimate questions that we might ask ourselves in relation to these preparations for Drupal 9:

  • What is deprecated code?
  • How do we identify it on our websites?
  • How challenging and time-consuming is it to remove it/update it?

This has been, by far, one of the best rated Drupal blog posts in April here, at OPTASY.

We can no longer imagine our (work) lives without the Paragraphs module in our toolbox. So, upon hearing about the Paragraphs Editor Enhancements module we dropped evewrytging and looked for this blog post.

Which comes as an inventory of both:

  • users' (content editors) main improvement suggestions for the Paragraphs module
  • undpaul team's solutions to editors' complaints/suggestions, turned into enhancements for this module

From the:

  • well-known “dread” of having to drag the content elements to their right positions after you've added them
  • to the need to be enabled to add those content elements preferiantially (since most editors add pretty much the same elements, over and over again)
  • to the overwhelmingly high number of buttons and the overcrowded dialogs

… the Paragraphs Editor Enhancements ships with a solution to each one of these drawbacks.

We can't but predict that it will hugely influence the editorial experience in Drupal...

We could never thank enough the OSTraining team for their clear, concise and most useful tutorials. 

One of their April's Drupal blog posts has been this step-by-step guide on how to add webforms to content types. And the scenarios where you'd might find this kind of knowldge “life saving” vary from:

  • having to add a contact form to a “business” content type on your Drupal website
  • to having to add a contact form to your “Events” content type

Easy to follow, clearly explained, uncluttered, filled with relevant screenshots, their tutorial has been truly “enlightening” for us.

Especially since adding various types of forms is one of those recurring tasks in our Drupal projects...

The END! 

These have been our favorite Drupal blog posts this month. How does your own top 5 look like?

Photo by Bernard Hermant on Unsplash 

Apr 26 2019
Apr 26

This post is a kind of logical continuation of one that we published earlier this month on dealing with some of the most pressing challenges of remote staffing. If you missed that one, we suggest you go have a look at it, just so you have the most context possible.

Right - now that you’re all up to speed, and probably even more eager to know about the advantages of remote staffing (hints of which you could probably already glean from the previous post), we can begin discussing the factors that make remote staffing such a popular option.

While it’s true that there will be some challenges encountered when working with a team of remote partners, this kind of project outsourcing is also hugely beneficial - even taking into account all the potential issues. 

How is that so, you ask? Aren’t there just more communication issues, bigger costs, more difficulties with monitoring ... essentially more of everything?

Well, no, a lot of these “myths” can be debunked, and we believe we already did a good job at that in the aforementioned post. But, even if they couldn’t be debunked, more of everything also means more of the good stuff, not just the bad stuff. 

Think of it - greater flexibility; the capability to scale only when you need it and when you’re ready for it; a lot of redundancy, a luxury you don’t have when managing a project exclusively in-house; lightning-fast acquisition and onboarding; the capability to get exactly the kind of expertise your current project demands, and likely even skills you don’t even know it will demand later on in its progress ...

All of this adds up to the foremost advantage of remote staffing, that is, the capacity to more smoothly navigate the ever-shifting landscape of digital projects and/or agencies. 

Still not convinced? Not a problem - we can’t wait to dive into specific benefits and discuss them in more detail! After getting through our list, and especially if you’ve read the previously mentioned post on the challenges of remote staffing, you’ll be able to see the whole picture more clearly and always know when this kind of partnership is the right fit for you. 

1. Scalability

One of the biggest questions that digital business leaders of today are asking themselves is: how can we effectively scale our business? 

It’s certainly a question worth asking. One cannot expect a business to truly be successful on a larger scope if it doesn’t grow or scale. However, in a constantly shifting digital environment, which also brings about a fluid scope of work, effective scaling can become problematic.

This is precisely why remote staffing is such a great fit when the need to scale arises. Recruiting and managing in-house employees while also taking care of all of their expenses is not only costly, but also very time-consuming (read: costly2). While this does result in growth, it doesn’t exactly scale your business.

Of course, you also have to take into account the possibility of not being able to find a full-time employee who lives near enough to join your on-site team. With an ever-increasing demand for experienced developers, this is a concern you’ll likely have to address (if you haven’t done so already).

This scenario changes completely when you establish a partnership with an off-site development team. With remote staffing, you can bypass the lengthy recruitment processes and instantly expand your in-house team. 

You get the luxury of deciding how many remote workers you want to hire - and the initial number is not set in stone, either. Once you’ve established a successful partnership, getting additional developers to work on your project will be even faster and safer (there will be a much smaller risk of making a bad hire or at least this risk will not be on you). 

This gives you protection from unexpected changes to the scope of the project. An unplanned increase of its scope is no longer an issue when working with remote partners. At Agiledrop, we are usually able to supply clients with new developers in under a day - or even significantly faster when we already have all the documentation and information related to the project. 

By working with us, you’ll get an instant boost to your workforce for the duration of the working arrangement; you’ll be able to tackle a greater number of bigger projects while keeping your expenses to a minimum.

As such, scalability is very likely the number one benefit of remote staffing. More than that, actually - most of its other benefits are directly or indirectly linked to scalability. These are what we’ll discuss in the following points of this article. 

2. Redundancy

This next benefit is in fact a kind of subset of scalability and a lead into the third benefit which we’ll discuss a bit later on. We’re treating it separately since it looks at growing your team from the other perspective - we’re dealing with redundancy.

In our context, redundancy essentially covers the other side of the fluctuating nature of digital projects, the “down” period where you have fewer projects and less work. 

With an exclusively in-house team, the down periods impede your progress and growth even more than you’d expect. Not only do you have less work and by consequence less income, you have all these employees who were vital to previous projects still on your payroll. This basically means double the cost, with no gain.

And, should you decide to let someone go on account of there not being enough work, you’ll again have certain expenses. Even if an employee resigns of their own volition, this process is not instantaneous, and they keep receiving their salary up until their departure. 

It’s a different - and even more costly - story when an employee is given resignation, especially if the justification for it is “not enough work” (after all, it isn’t and cannot be their fault that you the employer are unable to provide work for them). In addition to their ongoing salary, you’ll also have to cover all the costs associated with their severance.

Moreover, you’ll risk creating a negative atmosphere and sending a negative signal to the rest of the employees, who do have enough work, but may start contemplating other career opportunities on account of that. This may cause you to lose even those employees whose expertise is crucial to your ongoing business.

Very likely, when weighing your two options against each other, you’ll come to the realization that the best solution would nonetheless be to keep your employees on your payroll and wait for more work to arrive. But, logically, you won’t be happy about it. 

One of the magical things of remote staffing, already hinted at before, is the ability to get reinforcements to your team only for the duration of the project. Even if you have to end the contract prematurely, there are no long-term consequences like when you fire full-time employees. While we covered the case of an increase of a project’s scope under the benefit of scalability, the other side is neatly covered by redundancy.

So, not only is remote staffing a great choice of growing your team when it cannot handle the increased scope of work, it also eliminates all additional expenses for the period when the project is finished and the extra workforce is no longer needed. 

A partnership with an agency such as Agiledrop gives you the flexibility (buzzword alert!) to hire and fire as your project demands, with no resentment and no expenses associated with letting people go. You get the developers, the timely quality work, then shake hands and remain friends. 

3. Flexibility

You have to admit - this was a super smooth transition into this next point! The capacity to instantly respond to changes in the scope of your work via scaling and descaling your business can be neatly summed up in a concept that actually covers more than just these two advantages: flexibility.

In fact, flexibility is like an added bonus to the two benefits we’ve just discussed. The ability to get as many developers as your project needs with no obligation to retain them after the project is concluded allows you to be incredibly flexible.

And this flexibility doesn’t just cover unexpected changes issuing from the project itself. Working with partner agencies also provides you with a fail-safe against the plethora of uncontrollable factors that can arise whenever people are involved, such as unforeseen health issues or urgent family matters.

As we pointed out in our post about the biggest challenges of remote staffing, there’s not much you can do when one of your in-house developers has to take a sick leave or any other type of paid leave (some emphasis on paid). 

With remote staffing, however, you don’t need to worry about what to do in such situations. You can count on your partner agency to supply any necessary replacements in case something happens to the original hire. 

But the major benefit of remote staffing in the context of flexibility actually goes beyond just a single project. In the introduction, we already touched upon the constantly changing and by consequence hard to navigate digital sphere. 

Finding the right outsourcing strategy allows you to not only be flexible with regard to the project in question, but actually with regard to your very workflow, making it much easier to handle this shifting nature of the digital. 

This means that the “up” periods aren’t as hectic, while the “down” periods aren’t as devastating to your business development. You’re able to smoothly adapt to market needs as well as keep up with new and emerging technologies, either by not having to focus so much on HR or thanks to the diverse expertise of your remotely working developers (or, most likely, both).

It essentially boils down to this: this flexibility obtained through remote staffing enables you to take on more projects and win bigger deals with more important clients. Additionally, it lets you focus more of your energy and resources on business development and helps you to stand out from the crowd, priming you for growth and success.

4. Faster acquisition

Right, so, the previous three points dealt with what you’ll gain by working with partner agencies. Let’s now take a look at how remote staffing can save you time and resources thanks to the accelerated process of hiring and onboarding.

We mentioned earlier that the recruitment of in-house employees can be very time-consuming and consequently costly. Searching for the most suitable people is just the first step - and, naturally, the more workers you need, the longer it takes.

Then you have to interview all those candidates, likely discounting a decent percentage of them. Those that do make the cut then have to go through onboarding processes - and all the while time just keeps stacking up. We won’t even go into the obvious costs of salaries, travel and health expenses, paid leaves and adequate equipment. 

Luckily, there’s an easy, one-stop solution to all of the above. Yep, you guessed it - it’s a remote partnership! Partnering with an agency and relying on them to provide you with the needed experienced personnel will notably cut down the time searching for developers, as well as most of the expenses. 

Perhaps the best thing about such an arrangement is the sustainability of the relationship. Once you’ve partnered with an agency that you’re satisfied with, it’ll be that much easier and faster to get additional developers from a proven source that you trust will deliver the right profiles based on your requirements.

Another time-saving advantage of remote staffing becomes apparent in the onboarding of newly hired developers and their integration into your existing team. At Agiledrop, all new employees go through an in-house onboarding project, during which they familiarize themselves with all the most up-to-date tools and practices. 

This onboarding is carried out by our highly qualified development leads who also play a major role in selecting the most adequate person for a project. Since they’ve served as their mentors, they’re able to make a very informed selection quickly and efficiently.

What this means for our clients is that we basically cover 100% of the onboarding costs; when you hire one or more of our developers, they can immediately adapt to your workflows, become your temporary teammates and start working on the project.

The end result is that, despite a possibly higher daily rate of a remote hire than that of an in-house employee, the time saved more than pays off for the difference. Add to that all other areas where you are able to cut down on expenses and you can see why such a partnership is indeed a great fit for ambitious businesses that are focused on growth and scaling.

5. Specific, but diverse expertise

The last advantage of remote staffing that we’d like to point out relates to all the ones previously discussed in this post. Actually, it’s very likely one of the key reasons why outsourcing via staff augmentation has been established as such a successful business model: we’re talking about the ability to provide exactly the right kind of expertise for any type of project. 

It is at the same time the reason for and the result of such a business model: agencies started to capitalize on diverse and/or niche market needs, training employees to respond to those needs while acquiring more diversified skills during the process. 

Perhaps a certain project demands, say, a dedicated ecommerce developer that your in-house team lacks. Naturally, you don’t want to turn down interesting work coming your way, but you only need this specific expertise for this one project, not full-time. This is one aspect where you can immensely benefit from a remote partnership.

Having worked on a variety of projects for different international clients, the developers of an agency such as Agiledrop not only come pre-trained with the specific expertise a client’s project needs, but have also likely familiarized themselves with even more fringe cases. 

This enables them to quickly find solutions in similar situations. But, even when they encounter a new problem, it doesn’t mean they’ll get stuck in a rut and waste precious time. The open-minded and solution-oriented mentality they’ve cultivated will allow them to always approach new challenges in a logical and innovative way.

In the case of Agiledrop developers, this is additionally accentuated by our strong promotion of collaboration and knowledge-sharing. Mentoring and being mentored don’t stop once the onboarding is concluded; everyone is encouraged to help out when they can and to likewise seek help from their peers before trying to solve something unfamiliar on their own. 

Because of this, our clients always benefit from our entire team’s expertise, even when only hiring one or two developers. This way, they get more than their money’s worth, making for a much higher ROI (especially when taking into account all the cost reductions mentioned in the previous point).

So, tying back to scalability and redundancy, it’s obvious how valuable it is to be able to get a developer with a specific set of skills. By default, outsourced developers only work for the duration of a project, providing their expertise while not turning into a financial burden once that expertise is no longer needed. Effective scaling - check!

In conclusion

Now that we’ve discussed each specific advantage of remote staffing more thoroughly, we can see how strongly connected they all are. The connection between the first three is particularly obvious, as we already pointed out. 

But there are also others that we haven’t specifically addressed, e.g. fast acquisition of remote hires naturally provides a lot of flexibility thanks to reduced overheads and a hyper-efficient means of scaling. 

It thus seems we’ve come back to and reinforced another claim we already made in the introduction: all of these specific benefits result in the ability to better cope with the constantly evolving digital space by allowing you to keep up with the pace of its evolution, stand out among the competition and secure bigger projects while saving resources. 

Have you found yourself in a situation where you’re turning down work because you lack the development capacity or certain necessary expertise? We’d be more than happy to help you scale your business and win more deals - give us a shout out

Apr 26 2019
Apr 26

At DrupalCon2019 earlier this month, Promet Source tapped the collective brainpower of attendees with a Human-Centered Design activity that asked this question:

“What are the key advantages, the main challenges, and the emerging opportunities of Drupal as an Information delivery platform?”

Within the context of a Human-Centered Design workshop, big questions such as this one are positioned within a “Rose-Thorn-Bud” framework. Participants are given brightly colored Post-It notes and asked to write everything that they view as an advantage or a plus on a pink (Rose) Post-It. Challenges or downsides are to be written on a blue Post-It (Thorn). Green Post-Its are for collecting input on potential or emerging for opportunities (Bud). 

15 Minutes of Focus

A setting such as DrupalCon, in which participants are needing to constantly shift their attention as they take in tons of information from all sides, is vastly different from a Human-Centered Design Workshop, in which the attention of all participants is laser-focused on a series of activities that build upon the insight and information gathered. DrupalCon, however, represented such a high degree of energy and enthusiasm, that we were able to count on considerable contributions throughout the event. 

The first phase of the Rose-Thorn-Bud activity is simply collecting input. The next phase, called “Affinity Clustering,” is for purposes of reordering and analyzing the input according to agreed-upon groupings. The use of different colored Post-Its is particularly useful in revealing that within a particular category there might be a mix of Roses, Thorns, and Buds, or primarily one or the other, or in some cases, participants may differ as to whether the same issue constitutes a Rose, a Thorn, or a Bud. 

This is an excellent exercise for revealing patterns, surfacing priorities, bringing order to disparate complexity, and sparking productive conversation.

DrupalCon Participants Rank Drupal

Let’s look at the input gathered during the first phase of this activity where we collected responses to the question concerning of key advantages (Rose), main challenges (Thorn), and emerging opportunities (Bud) of Drupal as an information delivery platform.

Rose Thorn Bud Ease of development Documentation (2 Post-Its) Templates for quickly building mini-sites Ease of extension (modules for everything) Too many options Migration to D8 Cutting edge Security is really hard for small projects Decoupled architecture opportunities Connecting and referencing data and content with Taxonomy Admin UI is not intuitive to content editors Accessibility! Adoption of Symphony Admin UI Improving documentation Lots of interchangeable pieces/modules Composer vs. Tar install; mismatched workflow Media integration Flexibility (3 Post-Its) Scattershot dev -- unified direction GraphQL in Core Accessibility out of the box Address low-hanging fruit (media integration) Menu System APIs Content modeling Media integration JSON API with Content Moderation Trusted information can be pushed out programmatically and systematically Content Editor Experience Layout Manager Simple to use Layout tough to perfect   Drupal makes information pretty Flexibility   Allows for all sorts of content types High Learning Curve                (3 Posts-Its)   Quick publication of new information Drupal requires a lot of back-end work to make performance better. It’s heavy and slow.  


Next Step: Affinity Clustering

Without context and categorization, excellent input tends to never make it beyond words on a page -- or Post-Its. That’s what Affinity Clustering moves us toward. This is a visually graphic exercise that allows for the assimilation of large amounts of information.

Affinity Clustering is a collaborative activity, that occurs within a facilitated Human-Centered Design Workshop, with all participants contributing their thoughts on how and where to categorize the Rose-Thorn-Bud input. Since it was not feasible to move to this phase from the confines of the Promet Source booth at DrupalCon, we sought the expertise of our in-house Drupal experts and came up with the following categories

Back End Front-End Design Content Ease of development - Rose Accessibility out of the box - Rose Connecting and referencing data and content with Taxonomy - Rose Ease of extension (modules for everything) - Rose Lots of interchangeable pieces/modules - Rose Content modeling - Rose Adoption of Symfony - Rose Flexibility (2 Post-Its) Rose Quick publication of new information - Rose Simple to use - Rose Drupal makes information pretty - Rose Content Editor Experience - Thorn Trusted information can be pushed out programmatically and systematically - Rose Allows for all sorts of content types - Rose Flexibility - Thorn Documentation - Thorn (2 Post-Its) Layout tough to perfect - Thorn High Learning Curve - Thorn Too many options - Thorn High Learning Curve - Thorn Admin UI is not intuitive to content editors - Thorn Security is really hard for small projects - Thorn Templates for quickly building mini-sites - Bud Admin UI - Thorn Composer vs. Tar install; mismatched workflow - Thorn Layout Manager - Bud JSON API with Content Moderation - Bud Scattershot dev -- unified direction - Thorn Accessibility! - Bud   Address low-hanging fruit (media integration) - Thorn Menu System APIs - Bud   Media integration - Thorn     Improving documentation - Bud     Migration to D8 - Bud     High Learning Curve - Thorn     Cutting edge - Rose     Drupal requires a lot of back-end work to make performance better. It’s heavy and slow. - Thorn     Decoupled architecture opportunities - Bud     Media integration - Bud     GraphQL in Core - Bud    
Three groups of pink, blue and green post-its to illustrate affinity clustering


To summarize, the front-end category had a lot of roses indicating that the overall sentiment is positive, despite a few challenges. This is the kind of revelation that would be readily apparent to participants in a Human-Centered Design workshop -- simply due to a preponderance of pink Post-Its. The content category, on the other hand, was dominated by thorns. In a workshop, the majority of blue Post-Its would quickly clarify the relative dissatisfaction concerning content. The back-end category resulted in a true mix of Roses, Thorns, and Buds, a fact that would certainly spark continued conversation among participants.

This is just a start! 

For those of you who were not able to attend DrupalCon 2019, or who did not make it over to the Promet Source booth or who have had new thoughts subsequent to your participation:

  • What would you add to the above Rose-Thorn-Bud list? 
  • Are there categories that you would like to add to the Affinity Clusters? 
  • How does the above align or not align with your experience?

Indicate your comments below or contact us today for a conversation about leveraging Human-Centered Design techniques to Ignite Digital Possibilities within your organization. 

Apr 25 2019
Apr 25

At DrupalCon2019 earlier this month, Promet Source tapped the collective brainpower of attendees with a Human-Centered Design activity that asked this question:

“What are the key advantages, the main challenges, and the emerging opportunities of Drupal as an Information delivery platform?”

Within the context of a Human-Centered Design workshop, big questions such as this one are positioned within a “Rose-Thorn-Bud” framework. Participants are given brightly colored Post-It notes and asked to write everything that they view as an advantage or a plus on a pink (Rose) Post-It. Challenges or downsides are to be written on a blue Post-It (Thorn). Green Post-Its are for collecting input on potential or emerging for opportunities (Bud). 

15 Minutes of Focus

A setting such as DrupalCon, in which participants are needing to constantly shift their attention as they take in tons of information from all sides, is vastly different from a Human-Centered Design Workshop, in which the attention of all participants is laser-focused on a series of activities that build upon the insight and information gathered. DrupalCon, however, represented such a high degree of energy and enthusiasm, that we were able to count on considerable contributions throughout the event. 

The first phase of the Rose-Thorn-Bud activity is simply collecting input. The next phase, called “Affinity Clustering,” is for purposes of reordering and analyzing the input according to agreed-upon groupings. The use of different colored Post-Its is particularly useful in revealing that within a particular category there might be a mix of Roses, Thorns, and Buds, or primarily one or the other, or in some cases, participants may differ as to whether the same issue constitutes a Rose, a Thorn, or a Bud. 

This is an excellent exercise for revealing patterns, surfacing priorities, bringing order to disparate complexity, and sparking productive conversation.

DrupalCon Participants Rank Drupal

Let’s look at the input gathered during the first phase of this activity where we collected responses to the question concerning of key advantages (Rose), main challenges (Thorn), and emerging opportunities (Bud) of Drupal as an information delivery platform.

Rose Thorn Bud Ease of development Documentation (2 Post-Its) Templates for quickly building mini-sites Ease of extension (modules for everything) Too many options Migration to D8 Cutting edge Security is really hard for small projects Decoupled architecture opportunities Connecting and referencing data and content with Taxonomy Admin UI is not intuitive to content editors Accessibility! Adoption of Symphony Admin UI Improving documentation Lots of interchangeable pieces/modules Composer vs. Tar install; mismatched workflow Media integration Flexibility (3 Post-Its) Scattershot dev -- unified direction GraphQL in Core Accessibility out of the box Address low-hanging fruit (media integration) Menu System APIs Content modeling Media integration JSON API with Content Moderation Trusted information can be pushed out programmatically and systematically Content Editor Experience Layout Manager Simple to use Layout tough to perfect   Drupal makes information pretty Flexibility   Allows for all sorts of content types High Learning Curve                (3 Posts-Its)   Quick publication of new information Drupal requires a lot of back-end work to make performance better. It’s heavy and slow.  


Next Step: Affinity Clustering

Without context and categorization, excellent input tends to never make it beyond words on a page -- or Post-Its. That’s what Affinity Clustering moves us toward. This is a visually graphic exercise that allows for the assimilation of large amounts of information.

Affinity Clustering is a collaborative activity, that occurs within a facilitated Human-Centered Design Workshop, with all participants contributing their thoughts on how and where to categorize the Rose-Thorn-Bud input. Since it was not feasible to move to this phase from the confines of the Promet Source booth at DrupalCon, we sought the expertise of our in-house Drupal experts and came up with the following categories

Back End Front-End Design Content Ease of development - Rose Accessibility out of the box - Rose Connecting and referencing data and content with Taxonomy - Rose Ease of extension (modules for everything) - Rose Lots of interchangeable pieces/modules - Rose Content modeling - Rose Adoption of Symfony - Rose Flexibility (2 Post-Its) Rose Quick publication of new information - Rose Simple to use - Rose Drupal makes information pretty - Rose Content Editor Experience - Thorn Trusted information can be pushed out programmatically and systematically - Rose Allows for all sorts of content types - Rose Flexibility - Thorn Documentation - Thorn (2 Post-Its) Layout tough to perfect - Thorn High Learning Curve - Thorn Too many options - Thorn High Learning Curve - Thorn Admin UI is not intuitive to content editors - Thorn Security is really hard for small projects - Thorn Templates for quickly building mini-sites - Bud Admin UI - Thorn Composer vs. Tar install; mismatched workflow - Thorn Layout Manager - Bud JSON API with Content Moderation - Bud Scattershot dev -- unified direction - Thorn Accessibility! - Bud   Address low-hanging fruit (media integration) - Thorn Menu System APIs - Bud   Media integration - Thorn     Improving documentation - Bud     Migration to D8 - Bud     High Learning Curve - Thorn     Cutting edge - Rose     Drupal requires a lot of back-end work to make performance better. It’s heavy and slow. - Thorn     Decoupled architecture opportunities - Bud     Media integration - Bud     GraphQL in Core - Bud    
Three groups of pink, blue and green post-its to illustrate affinity clustering


To summarize, the front-end category had a lot of roses indicating that the overall sentiment is positive, despite a few challenges. This is the kind of revelation that would be readily apparent to participants in a Human-Centered Design workshop -- simply due to a preponderance of pink Post-Its. The content category, on the other hand, was dominated by thorns. In a workshop, the majority of blue Post-Its would quickly clarify the relative dissatisfaction concerning content. The back-end category resulted in a true mix of Roses, Thorns, and Buds, a fact that would certainly spark continued conversation among participants.

This is just a start! 

For those of you who were not able to attend DrupalCon 2019, or who did not make it over to the Promet Source booth or who have had new thoughts subsequent to your participation:

  • What would you add to the above Rose-Thorn-Bud list? 
  • Are there categories that you would like to add to the Affinity Clusters? 
  • How does the above align or not align with your experience?

Indicate your comments below or contact us today for a conversation about leveraging Human-Centered Design techniques to Ignite Digital Possibilities within your organization. 

Apr 25 2019
Apr 25

Earlier this month at DrupalCon Seattle, the Drupal Community Working Group (CWG) announced plans to begin the process of reviewing the Drupal Code of Conduct. The Drupal Code of Conduct, which is maintained and upheld by the CWG, governs interactions between community members. It is distinct from the DrupalCon Code of Conduct, which governs interactions at DrupalCon and other in-person events and is maintained and enforced by Drupal Association staff.

The current Drupal Code of Conduct was adopted in 2010 and last revised in 2014. Over the last two years, the CWG has received consistent feedback from the community that the Drupal Code of Conduct should be updated so that it is clearer and more actionable:

  • A set of recommendations for improving the Code of Conduct was shared as one of the high-level findings from the community discussions facilitated by Whitney Hess in April and May 2017.

  • 63% of respondents to a community governance survey held in July 2017 said that updating our codes of conduct should be prioritized as part of the process of overhauling community governance.

  • Improving the community code of conduct so that it is clearer and more actionable was also one of the key takeaways of the community governance discussions that occurred in the fall of 2017.

Over the last year, the CWG has been working on implementing changes to its charter to make the group more accountable to the community-at-large and provide a sustainable foundation for future growth. Now that those changes are complete, the CWG is now able to shift focus to the process of reviewing and improving the Drupal Code of Conduct.

To that end, we have set up a survey at https://forms.gle/rhKHorXXnp3wPQn2A for community members to share their thoughts, both about the current Code of Conduct and the next steps in the process. The results of this survey will help the CWG determine how, when, and who is involved in reviewing and updating the Code of Conduct.

We will be accepting responses through May 31, 2019, and we encourage as many community members to participate as possible.

Apr 25 2019
Apr 25

Every year, the Drupal community gathers in a new city for the annual DrupalCon show. More expansive than regional camps, DrupalCon gives attendees from all around the world the chance to collaborate and learn from each other face-to-face.

driesnote confirms drupal 7 support until 2021 

The expansive audience of the convention makes it an ideal venue for Drupal creator Dries Buytaert to address the community. In his “Driesnote,” Dries usually focuses on highlights from the past year and upcoming developments for the platform. As such, the upcoming Drupal 8.7 update got a lot of spotlight, as did the efforts of star contributors working to make Drupal so robust. And with Drupal 9 coming in the not-so-distant future, Dries’ address this year demonstrated the advances being made at the cutting edge of Drupal.

While Dries focused on the present and future benefits of Drupal 8, he didn’t neglect users still on Drupal 7. First launched in 2011, Drupal 7 remains the most widely deployed version of the platform, even though Drupal 8 was released in 2015. The reasons for the relatively slow adoption of Drupal 8 are numerous, ranging from incompatible modules to the standard costs of a redesign. Dries understands that, and in this year’s Driesnote, offered words of support to those who have not made the change.

“There’s no need to panic,” Dries said. Indeed, he said that Drupal 7 will continue to be officially supported for over two-and-a-half years, until November 2021. At that point, Drupal 7 will reach its end of life.

What happens in November 2021, you might ask? We’ve covered the upcoming Drupal release pipeline in an earlier blog post, but the major driving force behind this date is Symfony 3. A major dependency for Drupal 7 and 8, when Symfony 3 is sunset in November 2021, it will expose sites running on D7 and D8 to security threats. Because Symfony 3 is also a major dependency for Drupal 8, most Drupal users will need to upgrade to Drupal 9 before November 2021.

As Dries said, though, there’s no need to panic if you’re on Drupal 7. This end-of-life date is still over two years away, giving you plenty of time to consider your options and decide how to move forward. In the meantime, Drupal 7 will continue to be supported by both the open-source community and agencies like Duo. 

If you’re running Drupal 7 and want to get a head-start, there are a few options. Upgrading to Drupal 8 is the most logical route, as it the direct successor to D7. The Driesnote also noted that more and more modules that D7 users are accustomed to using are now functional in D8, which will make the transition smoother. The big draw of this path, however, is the ease with which you’ll be able to upgrade to Drupal 9. Drupal 8 is built on the same codebase as D9, which means that an upgrade between those two systems will not require a major design or development overhaul.

Another option for D7 users is to bypass D8 altogether. Jumping from Drupal 7 to Drupal 9 would be more akin to a traditional redesign, both in terms of the work involved and the cost. That being said, even though moving from D8 to D9 will be relatively easy, it will still require some effort. Going from D7 to D9 streamlines the process, requiring only one comprehensive upgrade.

Whichever path you take, rest assured that there is time. Dries acknowledges that there are still many users who enjoy the benefits of Drupal 7, and this year’s Driesnote signifies that this crowd hasn’t been forgotten. While ever Drupal 7 site will eventually need an upgrade, users can rest easy knowing that they have plenty of time.

When the time comes to make a decision about upgrading, Duo can help you chart your journey ahead. Whether you want to stay on Drupal 7 or can’t wait for Drupal 9, we’re committed to delivering the best possible version of your site.

Explore Duo

Apr 25 2019
Apr 25

WordPress and Drupal

WordPress and Drupal, two of the most popular content management systems that are currently on the market. So, in case you're wondering what content management system to pick, keep in mind that both of them serve different needs. The decision that you are going to take is going to be based off your individual needs for your business or yourself. In this article, I am going to aim to make it easier for you to take a decision, by presenting information about both systems. With the help of this article, you should be able to take an informed decision when it comes to making a choice between WordPress and Drupal.

Ease of Installation

WordPress vs Drupal Installation

Left: WordPress's famed 5 minute installation. Right: Sooperthemes custom Drupal distribution with Glazed theme and Glazed Builder included.

WordPress is famed for the ease of their installation process. While they claim that the installation process takes only 5 minutes, you have to take this with a grain of salt. Sure, for somebody who is highly experienced in WordPress, an installation might take 5 minutes. However, for a total beginner this might take longer. 

Drupal on the other hand is a little bit more tricky when it comes to the installation. There are more steps and clicks involved. The experience is very similar to installing WordPress, there is just more of it. Drupal has one advantage over WordPress: Distributions. Distributions are packages of features, design, and demo content that let you install a full functional turn-key website just by running the installer. At sooperthemes.com all our demo websites can be reproduced in your own environment in just about 10 minutes with our custom Drupal distributions.


Module and themes statistics for WordPress and Drupal

WordPress is an easy and intuitive easy to use open source CMS. One of the reasons WordPress is simpler is that is has fewer features and options compared to Drupal, so there is a trade-off going on here! Although there are a number of extensions that can make up for what WordPress is lacking, the more complex a website becomes, the harder it is for WordPress to be able to manage the website properly.

Now, when it comes to functionality, Drupal is considered to be highly functional. It was designed from the beginning to be able to meet the users needs as well as software developers' needs. Through modules, Drupal is able to fulfill the many needs a user has for developing a website. On top of that, Drupal is able to handle complex websites in a without slowing down the user experience, thanks to its advanced caching layers. Functionality is one of the areas where Drupal is shining.

Here are some of the advanced built-in features inspires some to choose Drupal over WordPress:

  • Custom content types and block types, equipped with menu different field types for your content
  • Multilingual is both built-in and more advanced than in most other CMS
  • The views module lets you create custom content listings, with support for fields, tables, portfolio grids, external data sources, and much more. It's a beast and a big part of why Drupal got popular to begin with.
  • Fine-grained permissions for your custom user roles
  • Advanced API's for batch processing, REST services, and many more advanced programming concepts 

Ease of use

WordPress is well known for its ease of use. The dashboard and layout are intuitive and easy to use. This means that even a beginner can make good looking websites. However, it gets harder as the complexity of the website increases.

Compared to this, Drupal is not so beginner friendly. Since Drupal is the more complex CMS from the two, there are more tricks to be learned and discovered when working in it. Drupal has been criticized in the past as having a steep learning curve. Indeed, it is harder to master, however, it also is capable of handling more complexity and it is able to better cater and fulfill the needs of its users.

Fortunately, there are some options you have to make Drupal more pleasing to your content, communications, and marketing staff. For exampel you can simplify their toolbars and menus by limiting their permissions. Sooperthemes also provides a visual drag and drop editor: Glazed Builder provides an entirely new user experience, letting your users design and create pages and interactive content in the frontend, away from Drupal's forms and administrative tools.

How secure are WordPress and Drupal?

Security Officers

Security is one of the most important things when running a website with important user information on it. In case of a security vulnerability of the CMS, a hacker can exploit said vulnerability and get the important user information off the website, such as usernames, passwords, emails, credit card information, etc. This is why security is so important for a content management system.

Since WordPress is the most used content management system to date, it is also bound to be the target many cyber attacks. When it comes to security, WordPress has three components, the core, plugins and themes. The core is always watched by cybersecurity experts who are continuously working identifying and patching vulnerabilities. The plugins and themes are reviewed and patched by the community members, which means that there is an increased chance to suffer a malicious attack by installing a certain plugin or theme that has an undiscovered vulnerability.

Drupal is recognized as the most secure content management system that is currently on the market. This is partly because the security team works on spotting vulnerabilities in the core of Drupal. On top of that, before a module is released to the general public, the code is usually examined for vulnerabilities. After being released to the general public for review, the contributors are then again checking the code for vulnerabilities that can be exploited by a hacker. This measures add up to an increased security compared to its competitors. This is why a lot of big names have trusted Drupal with the security of their websites. Examples are UNESCO, The US Senate, Fox News, Harvard University and many more.

WordPress vs Drupal Costs

WordPress is free to install and use. You can have the option to use WordPress.com, offers both paid plans and a free plan that shows ads on your website. Since WordPress is open source, you can download the software for free if you intend to host it yourself. Hiring a developer to build your website will also have to be taken into account when talking about costs. Generally speaking, hiring a WordPress developer is cheaper than hiring a Drupal developer, simply because a Drupal developer is harder to come by.

Drupal is also free to use and install, because it is an open source software. For a beginner, it is harder to make full use of the features that the CMS has to offer, especially when building a professional website. Depending on the needs of the customer, the website being built might have different degrees of complexity. Some of the most demanding websites are ecommerce websites.

Typical WordPress vs Drupal Pricing

Typical WordPress websites will be informational business websites, or simplistic community platforms based on popular themes and plugins, and would cost anywhere between 500,- USD, and 20,000 USD on the more complex and customized end of the spectrum. Most Drupal agencies aim to take on projects starting at 20,000 USD, and love to build the most complex online platforms, with contracts often running into the hundreds of thousands. These platforms could be so called "Site Factories" where a single platform will be responsible for spawning hundreds of websites, or it may be large content platforms for governmental bodies where hundreds of thousands of content items are managed.

That said, once you've mastered Drupal nothing stops you from making simplistic content websites with it. In fact, with the products and demo websites provided by Sooperthemes, it is very much possible to create a complete business websites within one day, and within a most humble budget.


In conclusion, WordPress is a great CMS for beginners and people that are not demanding complexity from their CMS. When it comes to security, although WordPress has good security practices in place, it is the most widespread CMS, making it a great target for hackers.

Drupal on the other hand, while not as easy to pick up as WordPress, it compensated with the complexity that it can handle. So, for people or organisations that require big websites, Drupal is the way to go. Furthermore, Drupal is perfect for this group of people, simply because it offers a great security.

So before choosing the right CMS for you, you have to be aware of the needs that have to be met by the CMS. Only after that can you take a decision.

Apr 25 2019
Apr 25

Do you need to set up a custom image carousel? Or maybe one slider with a teaser, displaying content from your website? What are the best Drupal 8 slideshow modules to consider for implementing and maintaining your slideshow?

And out of the box options are... out of question, right? Your requirements are too specific for that.
Maybe you need:

  • a certain number of slider items
  • different arrow designs
  • to display the image slideshow on other pages, too, not just on your homepage

With such flexibility and customization requirements in mind, we started digging into the “pile” of Drupal 8 image slider modules.

And here are the 4 ones that we've selected, those with the best reviews in the Drupal community:

If it's a fully customized slideshow that you want to implement, Views Slideshow's the module you need.

It'll “spoil” you with tons of add-ons to select from and give your unmatched flexibility. From:

  • titles
  • to images
  • to teasers of the last X blog posts on your website

… you get to include any type of items in your carousel.

Furthermore, it's jQuery-powered and it allows you to configure different settings for each one of the views that you'll create.

Note: oh, yes, you'll need to be pretty comfortable using Views in order to leverage this module at its full capacity.

Some of its key features:

  • your slider can include and display the latest products added to your eCommerce website 
  • you can set up a news item slideshow (the latest X news articles published on your Drupal 8 website)
  • from the latest X blog entries to the latest videos, testimonials, forum posts etc., you're free to include any type of content in your slider...

Now, here's a very brief step-by-step on how you can set it up and use it to create your slideshow:

1.1. Install and enable the module

Once you've downloaded it from Drupal.org, installed and enabled it, make sure to download its corresponding ZIP folder on Github, as well.

Give your folder a new name  — /jquery.cycle/ — then start uploading all its files to the 
/libraries/ folder in the root of your Drupal website.

1.2. Set up your view

Time to create your slideshow now. For this, just go to Structure> Views>Add new view 

1.3. Publish your slideshow block

For this, go to Structure>Block layout and select the region on your website that you want your slider to get displayed on.

1.4. Create a new image style

As you can see, the images included in your slideshow are currently of different sizes. Therefore, they're not perfectly adjusted to fit the block region that you've chosen for your slider.

To solve this inconvenience, just go to Configuration>Image styles>Add Image style. 

There, you can create a new style, that will be shared by all the images included in your slideshow.

2. Slick Slider, One of the Most Popular Drupal 8 Slideshow Modules

Another one of Drupal's modules for creating custom image slideshows, that ships with a heavy load of options. Powerful and flexible... what more could you ask for from your slider solution?

Capitalizing on Ken Wheeler's Slick carousel, working perfectly with Views and fields, the Slick Slider module:

  • enables you to set up a slider including multiple views, value fields and paragraph types
  • comes with image, audio and video support
  • supports complex layouts, as well

Some of its key features:

  • you're free to enable/disable the swipe functionality
  • it's responsive (scales along with its container)
  • some of its layouts are CSS-built
  • it's designed to work with Field collection, Media, Views, Image (and also to work perfectly fine with none of these modules)|
  • it allows you to configure your own “slide selecting” dots, the arrow keys and your slider's navigation, as well
  • it provides modular and extensible skins
  • you get to choose how you want your slideshow to be scrolled: swipe, desktop mouse dragging, auto scroll, mouse wheel scroll...

Another one of those Drupal 8 slideshow modules that gets the best reviews.

Here's why:

  • it leverages the Owl Carousel slider built by OwlFonk.   
  • it, too, empowers you to customize your image slideshow; in this respect, it ships with a myriad of customization settings
  • it's responsive
  • it capitalizes on a small ecosystem of submodules: Administration UI, Views Style, Field Formatter

Some of its key features:

  • from customizing your events to styling your controls, it allows you to tailor your image slider to suit all your needs
  • it supports multiple sliders
  • touch events

A simple module to consider each time you need to display a group of images in a compact way on your website. It even allows you to set the number of items to be included in your carousel...

Speaking of which, you should know that jCarousel, as its name says it, allows you to leverage the jCarousel jQuery plugin.

For this, it ships with a developer API for other modules to access. Furthermore, it integrates with Views, so you can easily turn any list of images (or other type of content) into a slideshow...

Some of its key features:

  • jCarousel field formater
  • out-of-the-box Views support
  • API for using jCarousel without Views
  • a collection of modern skins to choose from
  • Carousel pager that enable users to jump between multiple sliders

The END!

These are the first Drupal 8 slideshow modules to consider when looking for the best method for setting up your custom image/content slider.

Packed with tons of customization options, feature-rich and powerful, these 4 solutions for creating image carousels in Drupal 8 should be on your short list when you start looking beyond the out-of-the-box options for putting together a slider...

Apr 25 2019
Apr 25

My former Drupal mentor, László Csécsy (boobaa) often says "If there is a task that you need to perform more than once and it can be easily automated then it should be automated."

We would like to introduce a new tool called Rector that could speed up an upgrade process and can reduce upgrade costs. We run a proof of concept for the possible use cases in which Rector can be beneficial for Drupal developers - including but not limited to the automated update to Drupal 9.

Drupal 9 is coming and according to the promises, the upgrade from Drupal 8 will be easy because Drupal 9 is built in Drupal 8.

What does "the upgrade to Drupal 9 will be easy" promise means precisely for developers? From the drupal.org post, Plan for Drupal 9:

Drupal 9 will simply be the last version of Drupal 8, with its deprecations removed.

Releasing Drupal 9 will only depend on removing deprecated functionality and upgrading Drupal's dependencies, such as Symfony.

The Drupal 8 change records show numerous classes and methods marked as "deprecated" in every release.

Depending on the size of a module's or a site's codebase, removing all deprecated APIs can require from a couple of development hours up to months. The process can be postponed until Drupal 9 is out, or it can happen in smaller batches after every Drupal 8 minor release. Either way, keeping a codebase up to date and ready for Drupal 9 upgrade requires resources.

Identifying deprecated API usages

Yes, there are already several different ways for identifying deprecated API usages in a Drupal 8 codebase. For example, if automated tests are available on a project, developers can run deprecation testing on the codebase. Other alternatives are static code analyzers like Matt Glaman's excellent PHPstan Drupal integration or PHPStorm's built-in code inspection.

PHPstan found deprecated API usages

All these tools are great, but they can only tell what deprecated API usages a codebase contains. They leave the actual work to developers: having to fix these depreciation issues one by one.

Applying the same changes several times is definitely a repetitive task. There is a PHP library that can help to automate these kinds of upgrade processes, it is called Rector.

What is Rector?

Rector is a tool created by Tomas Votruba and according to its description on Github:

Rector is a reconstructor tool - it does instant upgrades and instant refactoring of your code.

Why is Rector awesome? Because it:

  • uses AST (Abstract Syntax Tree) to parse PHP code instead of tokens 1,
  • comes with built-in automation for upgrading to new PHP- or framework versions (ex.: Symfony, Laravel, etc.),
  • can also automatically migrate your code from one framework to another or one test runner to another,
  • can improve your code with automated code style and code quality fixes,
  • is open-source.

If you would like to learn more about Rector before you continue, Tomas created an introduction series:

Introducing Rector for Drupal 8

Rector already supported various frameworks, but it did not have support for Drupal 8 yet. This is the reason why Rector for Drupal 8 was born.

The Rector for Drupal 8 0.1.0 development version provides examples for the following possible use cases.

Instant code quality fixes and PHP 7.1 upgrade

Rector comes with numerous rector rules. Some of these rules are framework specific but most of them can run on any PHP code. The rules can be organized into prepared sets. Rector for Drupal 8 contains two prepared sets with all the built-in rectors that work on Drupal 8 codes. The drupal8 set only contains rectors that work on all PHP versions, including < PHP 7.0 versions that are still supported by Drupal core. For example: enforcing strict value comparison, normalizing conditions, removing dead code, etc. The drupal71 instantly updates any PHP 5 code to PHP 7.1 in a way that it still follows the Drupal 8 coding standards. I may include rectors in the future that make changes that require PHP 7.1 or above, ex.: add type to functions and methods parameters, etc.

Autocorrect framework specific mistakes and ensure best practices

All frameworks have their own list of best- and bad practices, so does Drupal 8. In Drupal 8, it is a best practice to use "const" instead of "define" to define constants, because it is better for performance. The DefineToConstRector can fix all constant definitions according to this best practice. As an example of bad practices, there are several traits in Drupal 8 that define a property and method with the same name. Probably the MessengerTrait is one of the most commonly used trait in Drupal core and contrib modules. Let's use this as an example. The $this->messenger property is not set by default, its value should be initialized in a class' constructor with Dependency Injection. If the property is set, then the $this->messenger() method calls the injected Messenger service. If not, then it calls the global Drupal static service container, retrieves the Messenger service from that and sets the property's value. The problem with this default behavior is that it hides an issue caused by the uninitialized property. If the property is not initialized and a valid method is being called on the property, like $this->messenger->addStatus() it causes a WSOD. Sadly, issues like this only reveal themselves in runtime. The only safe way to avoid this kind of issue is always using the method instead of the property. The PropertyToMethodCallRector rector can automatically fix any code from this kind of common pitfall.

Get rid of deprecated code without writing code

Because Tomas already implemented various kinds of automated code upgrades and framework migrations, Rector already contains rectors that can be leveraged to remove deprecated Drupal 8 API usages from a codebase. They only need to be configured. A built-in rector, called MethodNameReplacerRector, can automatically replace all usage of deprecated methods that used to generate a URL or a link for an entity. This rector can also ensure the entityTypeManager object is used everywhere instead of the deprecated entityManager object. Another common change in Drupal 8 core API is that global constants get replaced with class constants. The ConstToClassConstFetchRector rector that I created can replace all usage of a deprecated global constant with the new class constant.

Architectural refactoring

The majority of Drupal 8 API changes are more complex than simple renames. Classes, interfaces, traits, and methods get deprecated and replaced by new ones. These are the types of architectural changes where Rector can demonstrate its real power. The deprecation of the UrlGeneratorTrait is one of the best examples for a significant architectural change. A trait with a protected property and non-static methods got replaced with a class with static methods. Properly removing UrlGeneratorTrait from a Drupal 8 codebase is a risky task because several steps need to be performed and therefore it requires great concentration from a developer. However, with Rector the complete replacement process can be automated, this is what UrlGeneratorTraitRector demonstrates.

Demo time!

I configured Travis CI to run Rector for Drupal 8 on several Drupal modules. The test builds include Drupal core modules (node, system) and contrib modules like Commerce or the Apigee Edge module. The following screenshots showcase some of the fixes that Rector for Drupal 8 applied on these modules.

Rector replaced method calls to deprecated methods from the UrlGenerator trait and also removed dependency to the trait:

Rector replaced one of the most commonly used deprecated function in contributed modules - drupal_set_message():

Rector eliminated a possible bad flow caused by calling a method on a possible null property:

Rector replaced deprecated global constants with the new class constants:

What is next?

We hope this blog post gave you a good idea about the capabilities of the Drupal8-Rector project. Undoubtedly, its primary contribution to the Drupal community is the automated or at least semi-automated deprecated API removal from Drupal core and from contrib modules. The Rector library provides the framework and some good examples, but it requires a community effort to build new rectors or configure existing ones to address Drupal 8 core deprecations. There is still much work to do until all deprecated APIs since Drupal 8.0 are covered.

Please contribute to the Drupal8-Rector project if you see the potential in this proof of concept.

Apr 24 2019
Apr 24

At the Lab section of our name: "Ramsalt Lab" we tried to put Drupal on steroids to test and see how much can we get out of Drupal performance wise and we will now publish a series of blog posts that together make a coherent How-to guide on Drupal performance.

Experience, general web performance and Drupal optimization articles

For gathering all the data in this document, we did some heavy research. We have studied a lot of general website performance, Drupal optimization articles and we have done a lot of tests and put in the organization's over 100 years of total Drupal experience into play. A highlight that we would like to point out is this great presentation in DrupalCon 2018 Nashville that you can download its pdf and take a look for yourself.

Chapters in the "Faster Drupal" blog series

As a starting point, note that it’s a much easier bet to start with a Drupal 8 installation instead of Drupal 7 since you can get much better results built-in. But in many cases, the current project is already on Drupal 7, so we try to cover both cases. Some of the items are, to say the least, “Obvious” but this list is supposed to be as coherent as possible. For most of this, we consider you have full access to your server and can set up the things listed here, so based on that, let’s kick things off with Caching. Then for the second blog article, we will look into asset distribution, CDN, compression, and aggregation. Thirdly we’ll be taking a look at one of the greatest enemies of performance: Images! Fourth step we will cover some techniques for Database/Web Server Tweaks & Improvements and lastly some general tips and HowTo’s for optimizing theming in Drupal.

Improving Caching in Drupal:

  1. Use Redis: Integration of Drupal with the Redis key-value store. It provides cache, lock, and path optional backends
    Redis Drupal module
    Not happy with Redis for some unknown reason? Try Memcache
    For a simple drupal installation, we can take advantage of these two modules:
    Drupal Memcache + Drupal Memcache Storage modules


  2. Use Varnish Cache: If you want to improve the performance of your website without using Varnish is like trying to cook without a pan! Varnish is an advanced and very fast reverse-proxy system. In the common configurations Varnish will handle all caches regarding anonymous page-views, and sometimes even static files and pages for logged in users via per-role-caches and ESI (Edge Side Includes) for your site.
    Varnish Drupal module (not required for caching, but essential for cache purging).
    But hey I’m on shared hosting and don’t have access to any fancy Varnish HTTP cache thingy? Well then use Boost module
    Drupal Boost module


  3. Take advantage of PHP Cache (APC): With APC caching your PHP script executions can run more efficiently, by cutting down on dynamic PHP executions.

  4. Let’s all agree we all love CloudFlare: CloudFlare is a FREE reverse proxy, firewall, and global content delivery network and can be implemented without installing any server software or hardware. At least based on Cloudflare module’s page, on average, CloudFlare-powered websites load 30% faster, uses 60% less bandwidth, and process 65% fewer requests. CloudFlare-powered websites are protected from many forms of malicious activity including comment spam, email harvesting, SQL injection, cross-site scripting, and DDoS (denial of service) attacks.
    Drupal CloudFlare module


  5. The Purge (Not the movie): So by now you cached the hell out of your website and now you just want to change something on your website? The purge module facilitates cleaning external caching systems, reverse proxies and CDNs as content actually changes. This allows external caching layers to keep unchanged content cached infinitely, making content delivery more efficient, resilient and better guarded against traffic spikes.
    Drupal Purge module


  6. Did you know you can cache your views? In Drupal 7 Enable “Views Caching” in each Views manually and in Drupal 8 there’s a module that helps a lot with that.
    Drupal Views Advanced Cache module


  7. Using Panels? Enable Panels caching in each Panel

  8. Drupal 8: Do you like BigPipe in Drupal 8 core? How about some sessionLess BigPiping? (No pun intended)
    Sessionless BigPipe module


  9. Use views with minimum pagination navigation to save some SQL time (just first, previous, next, last links instead of (1,2,3,4,5…). In Drupal 7 you also need to use:
    Views Litepager module


  10. A long cache lifetime can speed up repeat visits to your page, Serve static assets with an efficient cache policy
    Read more on Google developers


  11. Drupal 7: People need to login to your website and you still would like some caching? AuthCache to the rescue
    Authenticated User Page Caching module


  12. Drupal 7: You like Drupal 8 core cache tags and cache max-age? But maybe for Drupal 7?
    Drupal 8 Cache Backport module


  13. Drupal 7: Need different caching per block? Fear not
    BlockCache Alter module


  14. Drupal 7: Already setup Memcache and Redis? Add some Entity Caching
    Entity Cache module


  15. Drupal 7: Render Cache is also quite powerful but has some issues on the cache clearing level, so use with caution.
    Render Cache Drupal module


  16. Consider using Google QuickLink Library if possible. Enables faster subsequent page-loads by prefetching in-viewport links during idle time at the cost of increased page loads for the client.
    Google QuickLink Drupal module

Okay, that was a long list of things to consider/do for just caching, but hey we are here to make something extra performative.

In the next upcoming part that will be published in about a week, we will focus on Drupal Aggregation / CDN / Compression

Written by Sohail Lajevardi
Developer at Ramsalt Lab


Apr 24 2019
Apr 24

Delicious food is able to inspire people even as they just see it on a website. That’s why food industry companies greatly benefit from well-built sites. The platform choice also matters. Drupal suits websites in all industries — e-commerce, real estate, education, or any other. In this post, we will explore why create a food website with Drupal. And get ready for tasty examples — colorful Drupal websites for restaurants, food products, recipes, and more.

Why create a food website with Drupal

The reasons to create a food website with Drupal include useful tools and the characteristics of the CMS. We will name at least a few of them and spice it up with website examples.

Contributed Drupal tools for food websites

The Drupal community has prepared a varied menu of free tools for food industry sites. Among them:

Umami Food Magazine

Mobile responsiveness

Users may want to order food, find a restaurant, or get a recipe on the go. Food images that are very attractive by themselves, should display well on mobile devices with minimum scrolling or zooming, and still retain their quality.

Drupal 8 has mobile friendliness as a priority. Its powerful tools easily make websites responsive. On D7, responsive design can also be created smoothly by an expert Drupal team.

See an example of responsive Alervi website with recipes that is built with Drupal:

Alervi Drupal website

Multilingual features

Let your food website be understandable to users across the globe. They will appreciate being able to use your recipes in their language. If you offer food products for sale, this will open new markets to you. Finally, if you own a restaurant, get ready to welcome tourists who have learnt about your online.

Drupal 8 supports a hundred languages that can be quickly added to websites. It offers ready interface translations, RTL (right-to-left) support, flexibility in deciding what to translate, and much more. On Drupal 7, multi language features can also be easily created by a good Drupal team.

See the multilingual Drupal Paysan Breton website with food products and recipes:

Paysan Breton Drupal website

Content presentation opportunities

Food is very magnetically appealing content by itself. A CMS should help you make the best use of it. One of the best features of Drupal is that you can organize and structure your content so users admire its look, easily find what they are looking for, and complete their goals.

For this purpose, Drupal offers Views, taxonomy for content categorization, display modes, powerful page builders, and much more. This will be useful for all food industry websites — those for restaurants, for food products, or for recipes.

See how content is presented at Davis website with food products and recipes that is built with Drupal:

Davis Drupal website

At The Laughing Cow website with food products that is built with Drupal:

The Laughing Cow Drupal website
At Drupal-built Higgidy website with food recipes:

Higgidy Drupal website

Unlimited website functionalities

Drupal has 42,000+ contributed modules for all imaginable features. What is not offered by them, can be created as custom functionality. Whatever is needed for restaurant sites, recipe sites, or food product sites, can be created with Drupal. See just a few simple examples.

Product locator at The Laughing Cow website with food products that is created with Drupal:

The Laughing Cow Drupal website - product locator

Step-by-step cooking at Drupal-built Jules Destrooper website with recipes:

Jules Destrooper Drupal website - step-by-step cooking

See the San Genesio website restaurant Drupal website that offers table reservations:

San Genesio Drupal website

Finding recipes by multiple characteristics at Drupal-built Paysan Breton website:

Paysan Breton Drupal website - finding recipes by multiple characteristics
Choosing dishes by multiple ingredients at The Boss Cafe website built with Drupal:

The Boss Cafe website

Google map for every restaurant at Drupal-built Le Comptoir du Malt website for a chain of restaurants:

Le Comptoir du Malt Drupal website

E-commerce features

Drupal has powerful e-commerce features represented by two platforms: Drupal Commerce and Ubercart. So your users to buy food products from you online.

Any imaginable features are possible here — integration with payment systems and shipping providers, promotions and discounts, product customization, order management, and so on.

See e-commerce with coupon codes at Jules Destrooper website:

Jules Destrooper Drupal website - e-commerce with coupon codes

See e-commerce with dynamic shopping cart flyout at Eldum Rétt website:

Eldum Rétt website - e-commerce with dynamic shopping cart flyout

Interaction with JavaScript frameworks

Drupal is smoothly combined with JavaScript frameworks that add a high level of speed and interactive features to websites like push notifications, real-time updates without page reload, and much more.

A very popular setup is the decoupled architecture where Drupal serves as a backend sending its data to an app built on a JavaScript framework — React, Vue, Angular etc.

Here is an example of decoupled Drupal Commerce and React Native App at Eldum Rétt website:

Eldum Rétt - decoupled Drupal Commerce and React Native

Let’s create a food website for you!

This has been just a brief review of the main reasons to create a food website with Drupal. Hopefully, you enjoyed the examples. So let your food business flourish with the help of a well-built website — contact our Drupal development team!

Apr 24 2019
Apr 24

Your browser does not support the audio element. TEN7-Podcast-Ep-058-TEN7s-Onboarding-Process.mp3

Are you looking for someone to support your existing Drupal site? Or, are you an agency and you're considering taking on a new client? We think you should date before getting married right away. Trust us, it's better for both parties! In this podcast, Ivan Stegic and our DevOps Engineer Tess Flynn discuss the TEN7 courtship—er—new client onboarding process, which insures that we get to know your site better than you do!

Running time: 39 minutes
Host: Ivan Stegic
Guest: Tess Flynn

In this podcast we'll discuss: 

  • The difference between discovery & design clients and audit–improve–support clients
  • Why we don’t just say “yes” to a client that gives us money to support their site
  • How the TEN7Audit process is like CarTalk (the multiple layers of the audit and troubleshooting process)
  • The simple check that tells Tess how much you love (or neglect) your site
  • The topics of the TEN7Audit: security, infrastructure, UX and theming, content types
  • We get the data, then try to figure out the underlying human story
  • Why we take the time to present our audit findings to you (in three tiers) vs. dumping the PDF in an email 
  • Tess compares your website to a car. Mark your TEN7 Bingo cards!
  • After TEN7Improve, we’re intimate with your site and know whether we want to support it for the long haul
  • How we take backups for TEN7Care so seriously we created a product (Tractorbeam) to do it for us (and you)



IVAN STEGIC: Hey everyone you're listening to the TEN7 podcast, where we get together every fortnight and sometimes more often, to talk about technology, business and the humans in it. I'm your host Ivan Stegic. We recently published a blog post called ‘Becoming a TEN7 Support Client, You Can’t Just Give Us Cash’, and we think it’s a good description of the process of becoming a client in which we support a site that we didn’t build. I thought it might be useful to talk about this whole process as well in a podcast, and that’s what we’re going to be focusing on in this episode. To help me flesh out the details, I have Tess Flynn, our DevOps Engineer joining me once again. Hey Tess.

TESS: Hello.

IVAN: I wanted to start by talking about TEN7’s business, and how clients come to us, and how we have distinct categories of clients. And then we’ll kind of get into the nitty gritty of the process of onboarding a client, and that’s where I thought you could help us out.

Essentially, we have two distinct categories of clients.

One category is a new site build, or a new feature build, and this is a client that specifically wants us to create something from scratch or add on to an existing deployment. And usually that process is discovery and design, some sort of strategy, then development and launch, then we support the site we’ve built. On the other side, the other major category of business we do is supporting an existing site. So, that’s supporting a client or a prospect that comes to us that has a Drupal site that someone’s already built for them. And for whatever reason, they need it supported and maintained and looked after for an extended period of time.

The process there is similar. We audit the site, we improve it and then we support it, and the products we have for those services are called TEN7Audit, TEN7Improve and TEN7Care. Now, there’s a natural progression, I think, from learning everything we can about you and what you have, to recommending things we could improve, to then supporting and maintaining that site for you. But the reason we came up with this process was, a particularly difficult client that we had some years ago, And I did something as an owner, that I shouldn’t have done, and that was, say yes to supporting a client whose site I knew absolutely nothing about, whose site no one on our team evaluated or saw, that turned out not to be a brochure site, but a complex, inner connection of many different modules, some custom, some not.

We ended up with a commitment with a client for two years that went on for two years longer than it should have, negatively affecting our team, the morale on our team, resulted in some internal soul searching within the organization. We discovered the DiSC analysis process, we applied it to everyone in the company, we focused on our own mission, our own values. And when we came out on the other side, I basically didn’t want this to ever happen again, right? From our perspective, we wanted to do our best work for the client, and we were being handcuffed, because we didn’t do our due diligence right in the beginning of the engagement. And, of course from the clients' perspective, they expected nothing less, right? They wanted us to do the best work for them, we possibly could be doing, and so we came up with this three-step process that sets us both up for success.

Essentially, we do an evaluation and an audit of an existing Drupal site. We call that the TEN7Audit. Once we’ve evaluated it, we kind of have to get to know the code base a little better, and nothing’s ever perfect, there’s always some amount of work that needs to be done. And so we do that. The next step we call the TEN7Improve step. And once that’s complete, we offer TEN7Care, our support agreement that keeps the client's Drupal site humming, kind of the way it should be. So, it’s three steps, TEN7Audit, TEN7Improve, TEN7Care, and what I’d like to do now, is talk about the details of TEN7Audit.

So, a prospect comes to us, and they ask us if we want to support their site, and we say, “You seem nice, I think we’d like to work with you. Let’s take a look under your hood.” And, that’s what the TEN7Audit really is. Tess, you’re the principal engineer that’s responsible for the TEN7Audit. So, when a prospect comes to us and I say, “Okay, let's do the audit,” it lands in your lap, right? And, you’re then tasked with doing this audit. And we’ve done so many of them we have a good process around what we do, and I want to find out about what exactly happens during the audit? What’s the first thing you do?

TESS: The first thing I usually do when it comes to doing an audit is that I’m going to need access to the underlying infrastructure. So, I’m going to need access to SSH in order to get to the file system on which the site is hosted. And I will also need database access credentials, so that I can get a copy of the website itself. Now, I like doing some audits entirely in place if it’s possible, without copying it to a local environment, but increasingly this is difficult, because depending on the client and depending on the site that might not be possible. For some shared hosting providers, for example, adding an additional tech in place can be a risky proposition, because it can cause some issues with the site, in order to perform the audit. Also, certain platform-as-a-service hosts actually don’t really let you do that very easily, in which case you do have to copy the site off and then run it locally. And then, in some cases, you might have the ability to run additional tools in place, but you’ll have to run it locally anyways, because the actual environment that the site is running on already has something already so fundamentally wrong with it that you can’t even run those tools in the first place.

So, it all comes down to: how do I get my hands on the site code and the site database? That is always the first problem when it comes to doing an audit. And, the thing with doing that is, some clients actually find that kind of intimidating, because they don’t know who you are, they don’t know if they can trust you, and they’re not sure if they really want to give that information over. And, it’s really necessary in order to perform an effective audit in the first place. Otherwise, the best I can do is look around a little bit. Now, if I do get that access, then I can start tearing down how the site itself is built, and this becomes an interesting process.

The very first thing to do is to run several auditing tools. Depending on the site, that could be Healthcheck, or the Site Audit module, or the Hacked! module. There’s a number of different tools that we use in order to facilitate gathering the best information necessary, to see what the red flags are in the site, if there are any. What’s interesting about this process is, already the attempt to run these tools will tell us something about the site itself. Can we run them in place? If we can’t run them in place, why can’t we run them in place? What’s the underlying problem that’s preventing us from doing that? Is it because of the hosting provider? Is it because of the way that the server infrastructure is set up? Is something else wrong that we need to take note of, that is something that we need to remark on our document?

Once we actually run the tools, we examine the output of those tools, and usually this gives us kind of a 1,000-foot perspective of the general health of the site, but it doesn’t allow us to really uncover the underlying causes of some of this. An auditing tool can tell you, say, you’re running out of disc space. But why are you running out of disc space? You might have, well, there’s excessive activity in the database, or there’s excessive CPU draw, well why? What’s really doing that? So, all these tools just paint a more detailed picture, and at some point, you do have to start breaking those down and going after them and investigating them yourself.

IVAN: So, I was going to ask you about the tools that you use, and you mentioned that you usually SSH into the clients website. I would imagine that if there’s already some continuous integration in place, or some codebase in place, maybe you’re using Git to get those files as well. And then you mentioned Site Audit module and the Healthcheck module and Hacked!. And it’s not just modules that you use to determine the health of a website too, right? You are also evaluating the infrastructure, so, is it a shared host? Is there Varnish installed? Is there Memcached? How is the host configured? What kind of access do you have? Those are also other things that we evaluate. Could you talk about the next step? Once you’ve done, kind of the tools evaluation, what are the other things you evaluate?

TESS: It’s kind of like an episode of Car Talk really. A caller calls in, says, “Oh, hey, my site is making this weird sound,” and then after, you should not turn it like that, so it doesn’t make that sound. Then you actually ask, “Okay, when does it make the sound?” “How long has it made the sound?” And you start following the investigative chain. Using the tools really are just the first step in that process, because often with websites, as with a lot of modern vehicles, they are so complicated we don’t really know what’s wrong with them intuitively. We will only be able to know after analysis, and usually that requires an additional amount of technical expertise. So, the tooling basically gives us a rough topology of what the site health is like. And, afterwards, we need to investigate each one of those vectors. And a lot of the time, it comes down to how our audit document is structured, which allows me to investigate that. So, what I tend to do is, I will first start by running the tools and see if there’s any red flags in there.

If there aren’t, then the next thing I do is see if the client has mentioned anything in particular that we want to look at when it comes to the site. Sometimes that can give us a good clue and sometimes that could be a false positive, and sometimes we don’t have that information. So, it depends on what we have available to track down the necessary clues.

With our audit document, we actually break that out to several different sections. There’s security findings, infrastructure findings, UX and theming findings, and content findings. Each one of these is a section by which we can go and do further investigation on how the site health is working. Usually the next thing after I do the first pass is to check when was the last time the site was updated. This sounds like such a simple, easy thing, but it tells you a lot about, not necessarily the technology, but the people around the site, and how they worked with the site and regarded it.

Everything we do in technology is about people, so you have to understand the underlying human story around the technology, and that will allow you to effectively resolve any problems that come up with the technology. So, the first thing that I usually do is, see when it was last updated, and that, ominously, I use the status update page just to check it and see what the security updates are. If there’s a lot of them and if there’s a numerous amount of them, and if there’s several years in the past, since the last update, that tells me a lot about the human management around the site, that it might not necessarily have enough technical people around it, or people don’t know that they have to update it, or a number of different human problems related to that. Then, once I have that information, then it’s down to going through each individual section.

So, I note all the different modules that require an update, which ones need security updates. Sometimes sites will specifically hold back one module or another, several versions, and that doesn’t necessarily speak to neglect, but it might be an intentional holdback, because of some bit of custom functionality built around that module that could not be reimplemented easily with the available skill levels that they have within the organization after doing an update. So, that also tells me something.

Then it comes down to, okay, let’s look at the infrastructure of the site. Are they on a platform as a service provider like Acquia or Pantheon or Platform.sh? Are they on shared hosting? Are they on a virtual private server liker Linode or DigitalOcean? Are they on self-managed hosting? Because some organizations mandate self-managed hostings, particularly governments and schools will have a mandate for self-hosting by default. And each of one of those tells me something.

If it’s on shared hosting, that already tells me about the kind of price tier that they’re looking at, how they regard the amount of performance of their site. Do we need to investigate if they have outgrown that. If they’re on a virtual private server. When was the last time the server infrastructure was updated? What distribution of Linux or Unix are they working under? Do we have access to underlying abilities like accessing root so we can perform even more invasive checks, like disc sizes? What software has been installed? What are the user permissions that are used? Who else is using the server? If it’s on a platform-as-a-service provider, that gets a little bit different. Usually those I tend not to audit for infrastructure too deeply, mostly because they tend to work out pretty well by themselves. They’re intended to actually be fairly ‘use it and forget it’.

So, a quick cursory check is important for those, but unless if something specifically stands out to me, I usually don’t investigate them very deeply. So, we’ve covered security, we’ve covered infrastructure, then I start looking at content. What kind of content types do we have? Are we using content types? That sounds like a ridiculous question to some people, but yes, some sites decide, “I don’t know about this Drupal thing. I’m just going to use our raw table and some code, and slap it in there, that’s good enough for me.”

IVAN: We’ve seen it.

TESS: We’ve seen it, and that comes with pluses and minuses, and it’s important that we bring those forth to the client. That is something else. What’s important through all of these little details that we’ve covered is that, it’s not just noting a thing exists, it’s going why does that exist? Why has that happened? Find the underlying story behind the motivation that lead to this current situation. Everything is really about documenting each one of these finer details, and the interesting thing is that usually as you document these details, you start asking better questions yourself, and then you need to go investigate those questions.

So, with content, you might ask, what kind of content types do you use? Do those make sense with the kind of site that they have? Do you have a number of duplicate content types, like news and blog and press release? Are they the same kind of content really just in different categories? Do you have a large number of fields that are unused? Do you have too few fields that you’re making do too many things? Do you shove entire bits of layout into your content? Trust me, we’ve all done it, it’s okay [laughing], but we need to do better than that. There’s a lot of these little bits of story that come too.

Once we’ve investigated the content types and those structures, usually I try seeing what kind of custom integrations that they have, as well. Do we interact with any third-party APIs or commerce organizations or survey organizations? Do we have any dependencies that can be a bit of a risk for us in order to manage going forward? Because if it’s outside of the realm of Drupal, those can be a little brittle and we do need to actually be careful about how those are implemented. Eventually we do come down to custom functionality. You notice we’ve done all of this other stuff, and now, twenty minutes into the podcast, are we talking about custom functionality. Because custom functionality in general with a lot of Drupal sites that we’ve audited, tends to be a lot less than you expect. Usually a well-managed site has only a minor amount of custom code, just enough to pull the site together. Some sites on the other hand have an enumerate amount of custom code, and that also tells us a story. How much custom code do you have? Do you need that amount of custom code for the site that you’re running? Why did that custom code get used? You have to examine each one of these decisions in order to see what the whole picture of the story is.

IVAN: It’s a lengthy, involved process that we undertake, isn’t it? And, I want to make sure that we are clear about what isn’t in the audit. So, the audit is mostly a health check of your site, your infrastructure, and your processes. We do a cursory look at your analytics and a cursory look at your content, and a cursory look at your accessibility. But as far as doing a deep dive into a content audit, or a deep dive into an accessibility audit, which we have done and which we do, that is not part of the deal here.

The main point is to get to a point where we can give you a report, and a status quo, and a set of recommendations about the things that we think you need to fix. Now, let’s just talk about the audit itself. What do you actually get? You get a PDF and for those of you listening, you can go to ten7.com/audit to see an example of a PDF of one audit that we’ve done. It’s been anonymized so there’s no actual client information in there, but you’ll get the gist from the PDF itself. From when we kick off to when we've created the PDF it usually takes about four weeks and at the end of those four weeks, we have a document, a PDF that we then present to the client. We don’t email the client with this PDF and say, “Hey, take a look at this thing. Tell us what you think.”

And we definitely don’t send the email with the PDF in it to the client before we present it to them. That video conference, that presentation of the TEN7Audit is very important. It’s very important to provide that to our clients in real time. Tess, can you talk about that meeting and what that meeting feels like and look like. What’s the goal of that meeting?

TESS: So, first let’s frame what the document looks like. On average these audit documents run 18-35 pages. That's right, pages. I’m a bit wordy. [laughing]

IVAN: That’s right. It’s a big one. [laughing] Right, I mean, this is a serious audit, right? It’s not going to be a couple pages long.

TESS: And, the problem with a document that size that is that comprehensive is that it’s really easy to get drowned in it. There’s just so much detail. There’s no framing around it. There’s no discussion around it. There’s no opportunity to ask questions, and suddenly you easily forget points and questions that you had three pages ago, because you have new ones that have already filled up your entire internal question queue. So as a result, it’s really important to have this meeting at the same time that we hand over the document, because it allows us to make this a conversation, not just, "Here’s the results." Because no one wants "Here’s the results," we really do want to have a conversation about it.

So, the way that it works is, generally we start with the document itself and we briefly talk about the methodology involved. And because sites are all unique, sometimes we do have to adapt our methodology dependently. We’ll point out if we have to run the audit on a local copy for various reasons, and then we start talking about the actual audit findings. And the way that the audit findings are structured are also important, because at the very front we have critical findings. These are the most important things that would need to be fixed with the site immediately. These are things that are going to be possible security attack vectors, critical updates that have yet to be applied, or other critical infrastructure things that need to be resolved as soon as possible.

All of these things need to be acted on relatively quickly to prevent downtime or possible data destruction. Those are usually the first things that we talk about, and they’re the big, big items. And, the idea and the intention behind this is so that we can stress the things that are the most important to fix right now, before we get to other underlying things that might require a longer-term effort. Basically, we want to make sure that we dampen down the campfire, so it doesn’t start a wildfire.

IVAN: [laughing]

TESS: And once we’ve done that, then we go through every different section that is in the audit document and this can be a long meeting. Usually these meetings take about an hour, and we outline each individual point. We don’t read the document because everyone can just read the document, but we point out the things that are the most important that I found with that and give additional context. If there are questions, we can answer them at that point. That way no one feels that their questions go unanswered or that they forgot them, they can always have them right there and we can answer them right there. We go through each individual section and sometimes we will have a finding that is, I don’t know why it was built like this. There’s probably a good reason for this, but I don’t know what it is, and usually at that point I might ask you, the client, why was it built like this? Because sometimes there is no right answer for some of these things.

Sometimes we find, “Oh, well we used a custom table here because we actually have another integration with a GIS application and somewhere else that requires database access.” “Oh, that makes perfect sense.” “Sure, okay. That’s understandable.” Now I don’t need to worry about that particular issue. Now I know that I don’t need to make a recommendation to fix that underlying issue and make it more Drupal-like, because it was intentionally done that way. So, because this is a two-way process, this is really, really important. Once we get all the way through the different categories, and usually by the time we get to the end of it, we’re talking content and theme and UX and then a brief touch on the analytics findings. Then we talk about recommendations, and our recommendations usually come in three distinct tiers.

The first tier of recommendations are usually things that we want to do right now, in order to make sure that we don’t have a wildfire. Things that fix immediate, most critical issues with the site, applying secure updates, fixing any potential security attack vectors, DDOS possibilities, fixing other underlying configuration problems like, caching was disabled for some reason, or maybe we should look at turning Varnish on, or maybe the setting was incorrect, or why do you have user registration open when you’re a brochure site? [laughing] Things that are really simple and really actionable that can be done generally within a week after giving the audit document over.

Then the next tier of recommendations are things that we want to try to do to maximize the site as it currently exists, without fundamentally changing the functionality of the site. So, that’s going to be things like, “Well, do you think that you can enable this kind of cache configuration with Varnish or Memcache? Maybe you can change the way this functionality works so that this bit of functionality will work better for you going forward. Maybe your theme is a little wonky here and needs some correction.” Sometimes we might make a recommendation to change hosting providers at that point as well, because if you’re on shared hosting you might have outgrown that. If you’re on Acquia or Pantheon, you might need to change your hosting plan. If you’re on a VPS (virtual private you might also need to change your pricing plan to get more vCPUs or more disk space, or more network transfer storage, those kinds of things.

IVAN: Or caching even.

TESS: Or caching. The third tier is going to be things that allow the site to reach its full potential, which may involve fundamentally changing certain aspects of how the site functions. So, we might want to say, “Maybe you should make a new theme. Maybe you should take this bit of functionality that was implemented this way and reimplement it this way instead.” Those tend to be bigger projects that require several weeks to months to implement, depending on the kind of site. And some of those might not be something that you want to work on immediately.

Some of those might be, “Yeah, we were thinking about redoing the entire site in Drupal 8 and we’re on Drupal 7.” That’s one of those recommendations, and doing a site rebuild does take time and that’s where that recommendation goes. These three tiers allow you to prioritize which aspects of the site you want to act on as a client without feeling like, “Oh, geez, my site is terrible, and everything is wrong and on fire.” [laughing] No, we break that up for you so that you can know, “Okay, these are the things that we need to fix now, because you don’t want your wheel to fall off while you’re on the highway. Here’s the things that we should probably fix because that’s not good, winter's going to happen eventually, and you need to replace that heater core in your car, because you’re going to get cold eventually (laughing), and then finally maybe you just need a new car." [laughing] Everything comes under car analogies.

IVAN: Yes, it does. Or tractors, right? So, that was a great summary of that list of recommendations and the three tiers, Tier 1, Tier 2, Tier 3. And you’re essentially cherry picking those recommendations that make sense for your needs, for your budget, for your organization moving forward. And what we do as the next step in our process, so this is step one right TEN7Audit, it’s about four weeks, get out of that with an audit report and a list of recommendations. And once we’ve done that you cherry pick the list of recommendations and those become tasks for us. And with that list of tasks, of things that you want changed, things that you want improved, based on your budget and our recommendations, we package that up into the TEN7Improve contract and the next step of the process. And usually that takes between four to eight weeks of our time, and it’s really dependent on kind of the results of the audit.

TESS: The thing that’s also important in this entire thing that often goes unsaid, is that an audit is a wonderful "get-to-know-you" activity. Because now after the audit, we as an organization as TEN7, know your site and have a lot of knowledge about how your site works, and what your motivations are, and what your perspective of your site is. And also, you know us, and you know our processes, and you know our names and our faces, so that you can actually know who to talk to. An audit is a wonderful get-to-know-you exercise, and I cannot stress the importance of that human connection enough in what is otherwise a very dry technical field.

IVAN: The importance of that human process is not just getting to know each other, but to laying the groundwork and the foundation for a long-term relationship after that audit's happened. And I think the next step, the TEN7Improve step, that’s kind of getting to know your code base, getting to know how it’s configured more deeply, not just one person getting a higher-level view of the site, but more than one person getting a deeper level understanding of the technical debt that’s in the site, the way that things are configured exactly, so that there’s not just one person who knows how your site is configured and deployed, and I think the TEN7Improve process is also a good next step for the relationship, because now we’re spending more time with each other, getting to know how each others' work styles are, what your needs are, what our needs are, so I guess you could say the TEN7Audit is kind of the dating part of the relationship, and the improve step is kind of the engagement part of the relationship? I guess it’s the time when you get to know the deep-down, dirty secrets of the code base [laughing].

TESS: Why does the site always leave the socks on the floor? [laughing]

IVAN: [laughing] Exactly. That’s exactly what the Improve process is, the answer to the socks on the floor question, right? So, four weeks for the Audit, four to eight weeks for the Improve process, the outcome of the Improve process is a site that we now know quite well. We know how much technical debt there is, we know how it’s configured, we’ve improved it, we’ve updated it, it’s in a state now that we would be comfortable saying, "We can support this for you from now on." Don’t you think?

TESS: That’s the entire goal of the Improve process, is to get us to a point where we can start working with it regularly without having to worry that the site's going to completely blow up for whatever reason, be it infrastructure or code or simply lack of knowledge.

IVAN: And so now we know the site, right? So we can offer a support agreement and that’s the last step of the process, TEN7Care. The way that the support agreement is structured is, it’s an annual agreement. We agree to some minimum number of hours that we will have every month with you, and the agreement typically covers things like Drupal site maintenance, so we maintain and update the core and contributed modules that are installed. We provide 24/7 uptime monitoring and response, and so that part is really dependent on the hosting provider that you have. So in some cases Pantheon is already monitoring their sites, we’re monitoring in addition to that, and sometimes we don’t have any control about whether Pantheon is up or down, and so we have to revert to their knowledge and them working on an emergency, and we are simply the conduit for you. The other thing that TEN7Care provides is regular backups and archiving and that’s really important isn’t it Tess?

TESS: I can’t stress that enough—how important a backup is, because life is unpredictable, and you want to make sure that you have a backup just in case life throws something very, very nasty in your direction.

IVAN: And we’ve got a number of blog posts and podcasts that we’ve done where we've talked about backups and details of what you should have. We use Tractorbeam, the open-source solution that we’ve published and provided to the community to do those backups of your website. Remind me again, Tess, it’s daily, weekly, monthly, right? And, two different off-site locations.

TESS: Mm-hmm. Correct.

IVAN: Great. So, AWS (Amazon Web Services) and Google Cloud, DigitalOcean, those are the three different companies, three different places. So that’s covered under your TEN7Care support agreement. And then all of the CI, continuous integration, and automation goodness that Tessa absolutely loves and that I am a huge proponent of, that comes as part of TEN7Care as well, right? So, our regular release process, the use of feature branches, the use of code review, the fact that we can push code and it deploys to numerous different environments, automatically. Do you want to say a couple things about that? I don’t want to prevent you from geeking out here [laughing], so do say something about that.

TESS: Mostly the reason why CI is particularly wonderful is because the problem is that human beings are inconsistent. You’ve had a bad night of sleep or you’ve read something upsetting and you might be distracted, and that can cause real downtime and real outages and real technical problems. The idea behind using CI is so that you remove more human hands from the process, and outsource that to a piece of technology that can do that consistently every time and be a lot more situationally aware of what’s going on when you do the deploy. So, having CI allows us to respond to changes a lot more quickly, a lot faster, and make sure there’s accountability at every step of the process with regards to updates and feature deployment.

IVAN: I couldn’t have said it better myself. Just wonderful, thank you. So, TEN7Care is the last step in the process, preceded by TEN7Improve and, of course, the TEN7Audit right at the beginning. I think we’ve kind of gone through the whole process, right, beginning to end.

TESS: That’s the whole thing.

IVAN: That’s the whole thing. Thanks again for being on the podcast. It’s always such a pleasure to talk to you, Tess.

TESS: Not a problem.

IVAN: So, if this podcast sounded interesting to you, and you think we might be able to help your organization in some way, we’d love to hear from you. Send us an email, send it to [email protected] to start a conversation. You can also find out more on our website at ten7.com/welcome. That’ll take you to our blog post on the whole process, and you’ll see a link to the example of the audit and an example of the support agreement as well.

You’ve been listening to the TEN7 Podcast. Find us online at ten7.com/podcast. And if you have a second, do send us a message, we love hearing from you. Our email address is [email protected]. Until next time, this is Ivan Stegic. Thank you for listening.

Apr 24 2019
Apr 24

Drupal 9 will be released in 2020, which—if you’re building a new site—is just around the corner. While Drupal has historically supported only the current and one previous version of Drupal, policy has shifted considerably as Drupal 9 approaches. Now, both Drupal 7 and 8 reach end of life at the same time: November 2021.

Graphic identifying the end of life dates for drupal 7 and drupal 8 and when drupal 9 launches

The main driver of this difference is Drupal’s shifting stance on backward compatibility. Until Drupal 9, new versions of Drupal were radically different than previous versions. The internal APIs were incompatible, modules for one version didn’t work for another without serious changes, and the theming architecture was different. This meant that going from say, Drupal 6 to 7, or Drupal 7 to 8, was nearly as much work as going from Drupal to WordPress. This approach allowed for serious innovation but had the drawback of creating upgrade fatigue for Drupal users, who eyed the ease with which WordPress users could deploy the latest and greatest updates to their CMS.

The plans for Drupal 9 have changed, and the upgrade from Drupal 8 to 9 will require considerably less effort. Breaking changes in Drupal 9 will first be released in Drupal 8, in parallel to existing functionality months or even years before Drupal 9 is released. This gives module maintainers time to add support for the new APIs well before Drupal 9 is released, while still benefiting their existing Drupal 8 installation base. This is all terrific news for Drupal.

The schedule—the Drupal 9 release just over a year away and Drupal 7 and 8 still have two years of support left—and the policy changes both seriously impact the way you need to plan an upgrade of a Drupal 7 site. Let’s look at how to make an informed decision about the best approach.

Will Drupal 9 be ready on release?

Drupal 8 wasn’t. The Drupal 7 modules needed substantial changes to work with Drupal 8, which deterred some users from adoption. There was a gap of about a year between when Drupal 8 was officially released and when enough Drupal 7 modules had been upgraded to really make it ready for primetime. The good news is that Drupal 8 modules stay current with Drupal 8 releases, so just one line of code will need to be changed to make a Drupal 8 module compatible with Drupal 9.

With the focus on backward compatibility and consistent updates, Drupal 9 should be ready in just a few months, or perhaps even just a few weeks. Better yet, because the code changes for upgrading modules from D8 to D9  in many cases will be trivial, teams working on migrating to Drupal 9 can patch the local version of the module, submit the patch to the Drupal.org module page, and simply wait for an official version of the D9 module to be released. Why? Because few differences in code means there is little risk to security when you patch modules and wait for the patch to be incorporated.

You are on Drupal 7 today: Should you migrate to Drupal 8, or wait for Drupal 9 to be released?

With the gap in schedules—Drupal 9 is out a year before Drupal 7 reaches its end of life—the crucial question is whether you should wait and upgrade to Drupal 9 or start moving to Drupal 8 now. Here’s what to consider:

Does your business have seasonality? If you have seasonality, it’s probably best to wait for Drupal 9. You’ll have plenty of time to migrate to D9 when it launches and you can put your full attention to seasonal peaks in 2019.

We recommend that if you are planning a project in 2020, you should delay your project six months to start in Q3 2020 and go straight to Drupal 9. You can plan how you will handle site refinements in D9 to avoid double work by avoiding modules that never got D8 support. You skip the headaches and thrive on a new platform in one fell swoop.

Are you having challenges on D7? Drupal 7 is still officially supported, and a large number of agency and system integration partners have the expertise to effectively work on the platform. There is, of course, a terrific amount of compelling functionality and improvements that make the move to Drupal 8 worthwhile, so if you are having challenges with Drupal 7, then you should proceed to move to D8 immediately.

One of the major challenges we see with aging Drupal 7 sites is a confusing editorial experience for marketing teams. Some approaches to empowering marketing teams to editorially manage a Drupal 7 site were better than others, and Drupal 8 includes major improvements for layout management, including a best practices approach for how pages are managed.

If you’re having challenges on D7, upgrade to D8 which will better serve you now and later.

No seasonality and no issues with D7? Keep on rockin’. If you are finding success with Drupal 7, then there is no need to start the upgrade process quite yet. The ideal time is the second quarter of 2020. Your development team can focus on migrating the site to Drupal 8 while being mindful of the API deprecations in D9, flagging modules that aren’t yet ready for Drupal 9, and ensuring any custom code does not use deprecated D8 functionality.

As your project nears completion and the release of Drupal 9 approaches, you have a trivial decision to make: Go live on D9 if it’s ready, or if not, simply go live on D8 and upgrade to D9 later. Both are paths to success and both don’t create future work. The move to D9 later will be a modest effort, and you will still be on a modern CMS platform if you launch on D8.

How to get ready for Drupal 9

One crucial consideration for your Drupal 8 upgrade development planning is to pay very close attention to the deprecations already planned and announced in Drupal 9. If you decide to start your migration to Drupal 8 now, you want to set yourself up for success to move easily to Drupal 9. As we mentioned, while the overall approach to Drupal 9 will ease this upgrade path, you still need to ensure your team is avoiding using APIs in Drupal 8 that will be deprecated in Drupal 9. Doing so won’t create any more work for your Drupal 8 upgrade, just different work, and will ensure that you do not have to do any more work when it comes time to move to Drupal 9.

With thoughtful planning, the upgrade to Drupal 9, and 10, and beyond, should be a non-event.

Apr 24 2019
Apr 24

Recently, I had the privilege of interacting with a few of the most decorated and remarkable members of the Drupal community - who also happen to be Drupal’s top contributors. I questioned them about the reason(s) behind them contributing to Drupal and what do they do to make a difference. Their responses were incredible, honest and unfeigned.

Adrian Cid Almaguer

Senior Drupal Developer. Acquia Certified Grand Master - Drupal 8

I use Drupal every day and my career in the last years are focused to it, so I want to work with something that I feel comfortable and that meets my needs. If I find errors or something that can be done in a better way in projects I´m using or in the Drupal Core, I open an issue in the project queue and if I have the knowledge and the time, I create a patch for it. This is a way I can says THANKS to the Drupal community.

The strength of Drupal is the community and the contributes modules you can use to create your project, one person can’t create and maintain all the modules you will need, but if several of us give ourselves the task of doing it, all will be more easy, and is not just code, we need documentation, we need examples, translations and many other things in the community, the only way to do this is if each of the Drupal user give at least a small contribution to the community. So, when I contribute to Drupal, I’m helping you to have time to contribute to something that I may need in the future.

I maintain many Drupal modules, so basically the main contributions are create, update and migrate Drupal modules, but I contribute too in other areas. I contribute translating Drupal to the Spanish language and moderating the user translations, I create patches for some projects I do not maintain, sometimes I review some patches in the issue queue, I write and update modules documentation, I make some contributions creating tests for Drupal modules, I give support to the community in the Slack channels and in the Drupal Stack-exchange site and help new contributors to learn how to contribute projects to Drupal in the correct way. And as I’m a former teacher, I participate in regional Drupal events promoting how and why is important to contribute to Drupal projects and how to do it.

I will love to maintain a Drupal core module but I don’t know if I will have the time to do it, so for the moment I will continue migrating to Drupal 8, evolving and having up to date the modules I maintain.

Alex Moreno

Technical Architect at Acquia

Contributing to open source is not just a good and healthy habit for the communities. It is also a healthy habit for your own projects and your self-improvement. Contributing validates your knowledge opening your knowledge to everyone else. So you can get feedback that helps yourself to improve, and also ensures that your project is taking the right direction. For example when patching other contributed modules with fixes or improvements.

I enjoy writing code. My main contributions have been always on that direction. Although more recently I have been also helping on other tasks, like Spanish translations in Drupal 8 Umami.

Baddy Sonja Breidert

Co-Founder of 1xINTERNET

One of the reasons why I contribute to Drupal is to make Drupal more known in my area, get more people involved, attract new users, etc. I do my bit in contributing to the Drupal project by organising events like Drupal Europe and Drupal Camps in Germany and Icelan

Daniel Wehner

Senior Drupal Engineer at Times Higher Education

Unlike many other projects the Drupal community tries to create a sustainable environment. Both from the technical site, but probably on the long run more important from the community side. Initiatives like Drupal Diversity & Inclusion lead the foundation for a project which won't just go away like many others

Jacob Rockowitz

Drupal developer. Built and maintains the Webform module for Drupal 8

Contributing to open source software provides me with an endless collaborative challenge. My professional livelihood is tied to the success of Drupal which inspires me to give something back to the Drupal community. Contributing to Drupal also provides me with an intellectual and social hobby where I get to interact with new people every day.

Everyone has a personal groove/style for building software. After 20 years of writing software, I have come to accept that I like working towards a single goal/project, which is the Webform module for Drupal 8. At the same time, I also have learned that building open source software is more than just contributing code; it is about supporting and creating a community around the code. Supporting the Drupal community has led to also write documentation, blog about Drupal, Webform, and sustainability, present at conferences, and address the bigger picture around building and maintaining software

Joel Pittet

Web Coder. Drupal 8 Theme System Co-maintainer

I feel that I should give back to ensure the tools I use keep working. Monetarily or with my time. And with Drupal it’s a bit of both:

I started submitting patches for the Twig initiative for Drupal core, then mentoring and talks at DrupalCons and camps, followed by some contrib patches, then offered to co-maintain some commerce modules, which snowballed into more and more contrib module co-maintaining, mostly for ones I use at work.

I pay the Drupal Association individual membership to help the teams for all the Drupal.orgwork and event work they do.

Joachim Noreiko

Freelance Drupal developer. Built and Maintains Drupal Code Builder

I guess, I like fixing stuff, I like to code a bit in my spare time, I like to contribute to Drupal, and as a freelancer, it’s good to be visible in the community.

Lately I’ve actually been feeling a bit demotivated. I’ve been contributing to core a bit, but it’s always an uphill struggle getting beyond an initial patch. I maintain a few contrib modules, and my Drupal Code Builder tool as well.

Joris Vercammen (borisson)

Drupal developer, Search API + Facets

Being able to pull so many awesome modules for free really makes the work we all do in building good solutions for our customers a lot easier. This system doesn’t work without some of us putting things (code/time/blogposts/…) back into it. The Drupal community has given me a lot of things unrelated to just the software as well (really awesome friends, a better job, the ability to travel all over Europe, etc.). To enable others that come after me to have a similar experience, I think that it is important to give back, as long as it fits in the schedule.

Most of my contributions are under the form of code. I try to do some mentoring but while that is a lot more effective, it is really hard and I’m not that great at it, yet. I’m mostly interested in the Search API ecosystem because that’s what I got roped in to when I started contributing. A lot of my core contributions are for blockers (of blockers of blockers) for things that we need. I try to focus a little bit on the Facets module, since that is what I’m responsible for, but it’s not always easy or the most fun to do. Especially since I’ve still not built a Drupal 8 site with facets on it.


Open-source evangelist. Drupal Practice Head at Specbee

Community. That’s what motivates me to contribute. The feeling I get when someone uses your code or module or theme is great. Which is a good drive to motivate for more contributions. Drupal being an open-source software, it is where it is just of the contributions by thousands of contributors. So, when we use Drupal it is our responsibility to contribute back to the software to make it even better for a wider reach

Apart from contributing modules, theme & distributions I help in organising local meetups in Bangalore and mentoring new developers to contribute and begin their contribution journey from the root level. This gives me immense pleasure when I can help someone to introduce to the world of Drupal and make them understand about the importance of contributions and community. Going forward, I would definitely strive towards introducing Drupal to students giving them a career choice and bring in more members to the Drupal community.

Nick Wilde

Drupal developer at Taoti Creative

My main motivation has always been improving what I use - first OS contribution before my Drupal days was a bug-fix for an abandoned at the time project that was impairing my Modding of TES-III Morrowind ;). I like the challenges and benefits of working in a community. Code reviews both that I've done and those done on my code have been incredibly important to my growth as a developer. I also have used it as a portfolio/career advancement method, although that is important it is only of tertiary importance to me. Seeing a test go green or a getting confirmation that a bug is fixed is incredibly satisfying to me personally. Also, I believe if you use an open source project especially professionally, contributing back is the right thing.

My level of contributions vary a fair bit depending on my personal and professional level of busy, but mostly through contrib module maintenance/patch submissions. Also in the last year or so, I've been getting into a lot more mentorship roles - both in my new company and within the broader community. Restarted my local Drupal meetup and am doing presentations there regularly.

Rachel Norfolk

Community Liaison at Drupal Association

Contribution for me is, at least partly, a selfish act. I have learned so much from some of the best people in the industry, simply by following along and helping where I can. I have also built up an amazing network of people who, because they know I help others, are more prepared to help me when I need it. Both code and other ways of contributing. I’m occasionally in the Drupal core issue queues, I help mentor others and I get involved in community issues.

Renato Goncalves

Software Engineer at CI&T's Drupal Competence Office (DCO)

My first motivation to contribute to the Drupal community is helping others that have the same requirement as mine. To be honest, I get very happy when someone uses my community code in their projects. I'm glad to know that I'm helping people. When I'm developing a new feature I check if my solution can be useful to other projects and that way I create my code using a generic way. - Usually, I'm the first to reuse the code several times. I think this is important to make Drupal a powerful and collaborative framework. I liked my first experience using the framework because for each requirement of my project, Drupal has a solution. I think contributing to the community is important for that. More and more new people are going to use the framework, and consequently new contributors, and in that way, it becomes increasingly powerful and efficient. An example of this is the Drupal Security Team, where they work hard to ensure that Drupal is a secure framework. I'm making contributions at the same time I delivery projects. Today I write my code in a generic way, that is, the code can be reused in other times. A good example of this model is the Janrain Connect project. This project is official in the community (contrib project) and my team and I work hard using 100% of the generic code, so we can reuse this code on other cases.

When we need to make some improvement in the code, the first point is checking a way to make this improvement using a generic solution. Using this approach we can help our project and help the community. In this way, we are contributing to making an organized and agile framework. The goal is that other people don't need to re-write code. It is a way of transforming the framework into a collaborative model.

Thomas Seidl

Drupal developer, “The Search API Guy”

My motivation comes from several sources: First off, I just like programming, and while fixing bugs, writing tests or giving support isn’t always fun, a lot of the time working on my modules is. It’s just one of my hobbies in that regard. Then, with my modules running on more than 100,000 sites (based on the report), there’s both a sense of accomplishment and responsibility – I feel proud in providing functionality for so many sites, and while, as a volunteer, I don’t feel directly responsible for them, I still want to help improve them where I can, take away pain points and ensure they keep running. And lastly, having a popular, well-maintained module is also the base of my business as a freelancer: it not only provides marketing for my abilities, but also the very market of users who want customizations. So, maintaining and improving my modules is also, indirectly, important for my income, even though the vast majority of my contributed work is unpaid.

Apart from participating in coding standards discussions, I almost exclusively contribute by maintaining my modules (and, increasingly rarely, adding new ones) – fixing bugs, adding features, answering support requests, etc. I sometimes also provide patches for other modules, but generally only when I’m paid to do so. (“My modules” being Search API and its add-on modules Database Search, Autocomplete, Saved Searches and, for D7 only, Solr, Pages, Location and Multi-Index Searches.)

And Lastly....

It’s not just brands that have adopted Drupal as their CMS – they are the cream of brands. From NASA to the Emmy Awards. From Harvard University to eBay. From Twitter to the New York State. These brands have various reasons to choose Drupal as their Content Management System. Drupal’s adaptability to any business process, advanced UX and UI capabilities for an interactive and personalized experience, load-time optimization functionalities, easy content authoring and management, high-security standards, the API-first architecture and so much more!

The major reason why Drupal is being accepted and endorsed by more than a million websites today is because Drupal is always ahead of the curve. Especially since Drupal adopted a continuous innovation model wherein updated versions are released every 6-months with seamless upgrade paths. All of this is possible because of the proactive and ever-evolving Drupal community. The goals for their contributions may vary - from optimizing projects for personal/professional success to creating an impact on others or simply to gain more experience. Either way, they are making a difference and taking Drupal to the next level every time they contribute. Thanks to all the contributors who are making Drupal a better place.

I’d like to end with an excerpt from Dries - “It’s really the Drupal community and not so much the software that makes the Drupal project what it is. So fostering the Drupal community is actually more important than just managing the code base.”

Warmly thanking all the mentioned contributors for helping me put this article together.

Apr 24 2019
Apr 24

Simple or custom-made? Is it a quick-to-assemble, rather “prototypical” form that you need for your website? Or a more complex, custom-made one? In a Drupal 8 Contact Forms vs Webform “debate”, which Drupal form builder best suits your data collection requirements?

On one hand, you have the convenience of creating your web forms in no time: simple, straightforward, “conventional” web forms. On the other hand, you get to scan through a never-ending list of advanced options and come up with a complex, fully custom-made web form.

That, of course, if you don't mind the time you need to invest in going through all those different form elements and available features and the risk of getting... overwhelmed by tons of field customization options.

Ease of use vs unlimited capabilities...

The convenience of getting your forms up and ready to collect user data in no time vs the chance to tailor some more advanced forms, ideally customized, carrying lots of different field values.

Decisions, decision...

Now, to help you decide here's a more detailed Drupal 8 Contact Forms vs Webform comparison. Weigh each one of the 2 form modules' benefits and drawbacks, set them against your own needs and... make the choice:

1. The Contact Forms Module 

Being part of Drupal core, there's no need to download and install the module.

Just go to Structure>Contact forms. Next, choose either to opt for the default form or to set up a new one: click the “Add contact form” button.

Drupal 8 Contact Forms vs Webform: Add Contact Form

Once in the form creation screen, enter your form's values in the predefined fields that you have there:

  • give the form a name in the “Label” field
  • enter the email address where all the form submission will be sent to (most probably your site admin address) in the “Recipients” field
  • enter your “Thank you” text in the “Message” field there; this will be the “thank you” text line your users will see once they hit the “submit/send” button 
  • in the “Redirect path”, enter the URL to the page that you want them to get forwarded to after they've submitted the forms (that if you don't want them to be redirected back to the homepage, by default)
  • click “Save” and there you have it: a simple form, with all the basic, must-have field values, built in no time

Of course, that doesn't mean that you can't further explore the given features and maybe add a few more fields and even styling options.

For instance, you could “Edit” your newly created form. Just select it in the “Contact Forms” screen and, scrolling down the options in the drop-down menu opening up, click the “Manage fields” option.

Click “Add field”, then “select a field type” – Text(plain), let's say – enter the “Label” and configure its settings.

Furthermore, if you want to style your form a bit, hit the “Manage form display” tab and... opt for a placeholder, for example. Next, explore the options available in the “Manage display” screen. For instance, you get to decide if you want your field label to be hidden, inline or visually hidden...

In short: in a Drupal 8 Contact Forms vs Webform comparison, the first form builder will always outshine the latter when it comes to ease of use.

It empowers you to set up a simple form quick and easy...

2. The Webform Module

Now, if Contact Forms is a rather minimalist form builder, the Webform module is a feature-rich, powerful one.

The customization features that it ships with go from email notifications to fine-grained access, from statistic collection of data to delivering results in a CSV format. From exporting data in various formats to... conditional sorting and filtering.

In other words, with Webform sky is the limit when it comes to the contact form that you can create.

It can go from a basic one to a highly complex, multi-page form. One made of lots of elements, advanced options for the user to select from, settings and features for you to leverage in the back-end...

But, let's keep in mind that it's contributed module so you'll first need to download it from Drupal.org.

Next, go to “Structure” and hit the “Webforms” tab. Then, click the “Add webform” button and, in the next screen popping up, give your new form a name (enter it in the “Title” field).

You'll be automatically forwarded to the “Build” tab, which is where all the “magic happens”. Once you click the “Add element” button, you'll get to “swim through” a sea of lots and lots... and lots of form elements (known as “fields” in Contact forms) to choose from. Ranging from basic to really advanced ones...

Webform: Select an Element Screen

Let's assume that you'll want to add a “Text field” element. Click the “Add Element” button corresponding it, then scan through all the new customization options listed up in the “Add Text field element” screen opening up next...

Feel free to add other elements to your webform: a “text area” maybe, an “email” element, as well... 

Note: do keep in mind that, once you've settled for the final fields/elements to be included in your web form, you can always change the order to get them displayed in. Just drag and drop them till they fit that predefined order in your mind...

Also, you can check/mark them as “Required” and turn them into “must fill in" fields, as opposed to optional form fields.

Note: feel free to edit that “Thank you” page that your webform will automatically forward users to. How? By clicking “Back to form”>"Settings”>"Confirmation” and selecting from the different options that you have there:

  • enter your own Confirmation title (e.g. “Thank you!”)
  • customize your Confirmation message

3. Drupal 8 Contact Forms vs Webform: Key Differences

Now that we've run our spotlight over each one of these 2 form building tools, let's make an inventory of the differences that we've identified:

  • first of all, it's obvious that the Webform module gives you more control over your web forms' design
  • also, unlike Contact Forms, it supports conditional emails; you get to send an email to a specific user in your list based on conditions associated with the value of certain elements in your form
  • Webform enables you to add basic logic to your web forms
  • … it comes packed with tons of advanced options, ranging from JS effects to conditional logic, to submission handling, etc.
  • Contact Forms, on the other hand, allows you to set up a simple contact form in the blink of an eye; you skip the tedious process of scanning through lots and lots of options, settings, and complex features
  • Webform allows you to create your forms either in a YAML file or in its the admin-friendly UI
  • also, Webform comes as a “cluster” of submodules – Webform REST, Honeypot, Webform Views, SMTP, Webform Encrypt, etc. – which are “responsible for” its multiple capabilities

4. In Conclusion...

The conclusion of this Drupal 8 Contact Forms vs Webform “debate” is quite simple: 

If you need a basic form on your website and you need it built fast, go with Contact Forms. Being included in Drupal 8 adds convenience...

But if you want to customize your form (and you have the time), to style it to your liking and “turbocharge” with advanced features and options, then go with Webform.

It's a much more powerful and feature-rich form builder, perfectly suited for your complex requirements...

Image by Tumisu from Pixabay

Apr 24 2019
Apr 24

The 20th and 21st April’s weekends were very long-awaited by ADCI Solutions because of the Global Training Day (GTD) event in our office.

ADCI Solutions is a permanent organizer of GTD in Omsk city. Twice a year we invitе tech students, web developers newbies to ADCI Events Hub to share different reports about web development and our experience. We try to make our sessions interesting and funny, it makes reports easy to understand for every conference’s participant. So, don’t be shy and be with us at our next event. 

It’s funny that Global Training Day isn’t a day, it’s two days. On the first day, professionals from ADCI Solutions told about the back end, front end, web design, and project management. The second day is a day of practice. We suggest our attendees create websites and modules by themselves. 

The first day consisted of four reports:

  1. Sergey Sergeyev “How it’s made? Product development”
  2. Denis Golubev “Lord of pixels. Starter pack”
  3. Alexander Shmakov “Back end - it is easy”
  4. Maxim Luckyanchikov “May the force be with you…or how to be a front-end Jedi” 

To immerse our guests in web development company’s work, we decided to start our reports talking about our everyday processes. Sergey Sergeev spoke about how dev teams make web products, what the roles there are in the development processes, and what interactions with clients are like.  

The second report was focused on web design. Our head of design department Denis Golubev spoke about how to become a web designer. Denis shared the most popular and modern tools that can help web designers to create a masterpiece. Also, Denis told about how to create your own portfolio and how to get your first project.

Alexander Smakov is the ADCI Solutions company’s back-end developer and he spoke about why the back end is a great choice, what its nitty-gritty is. He told in detail what the back end’s role in website functioning is.  

The last report was about the front end and what a good front-end developer should know. Maxim Luckyanchikov spoke about basic tools that the front-end developer should own, he shared his own experience and gave advice to beginners. Maxim revealed the secret that his favorite framework is Vanilla JS.

Traditionally, we finished the first conference’s day with a joint photo, find it below.

On the second day, the attendees developed their own websites and modules on the Drupal CMS. Our professionals were mentors for beginners, they helped and answered the questions.  

On the first and second days, we had pizza and coffee breaks, it’s a good opportunity to snack and make new acquaintances. Also, we made a prizes draw: a certificate from a school of foreign languages and our signature sticker packs.

It is important to note, that on GTD we used our new service Survey which let us know what participants think about reports and event organization. We believe that our efforts provided useful tools for beginners, answered all the questions they had. We are sure that conferences like GTD help all newbies to find the right way on the web development area. 

Apr 23 2019
Apr 23
video drupal tutorials

After three months of hard work, mostly at night and during the weekends, we finally launched the first minimal viable version of VideoDrupal.org (beta 1.0), a curated mashup of Drupal video tutorials published on Youtube to make them more accessible for personal, educational and professional purposes.

For 2019, I've set up three main goals: improve my English, find a "real" Drupal Team to work with and launch this website. So, I've reached one of my goals. Checked! To be honest, I think it was the easiest one. Improving my English and finding a community-oriented Drupal agency will be harder. But I'm working on it!

Why VideoDrupal.org?

During the past 10 years, I have organized or co-organized several DrupalCamps and Drupal meet-ups here in Bolivia but also in Peru, Panama, Mexico and Belgium (Belgium is where I was born and I lived until I was 27 years old). People organizing those kinds of events know that this represents a huge effort during five or six months to motivate the local community, find the venue, setup the website, find the sponsors, plan and launch promotional activities, organize and schedule the sessions and so on... But the event itself is also really stressful and self-demanding with many different needs to satisfy.

When the camp is over, we usually feel completely exhausted, all those efforts for only three days of knowledge sharing, fun and parties with new and old friends? So many weeks of preparation to reach 300 to 500 people each time? Is it worth it? Yes it is! Really... For yourself but also for the community.

But I have always been wondering if we could give something back to the community that would last for longer (not just three days) and something that people could use or take advantage of more often.

On the other hand, as a Drupal trainer, I know how hard it could be to learn Drupal for newcomers. I'm not speaking about the well-known "learning curve", but just about how to begin learning Drupal, to find the right documentation, training or video to do so. There are a lot of very good paid resources for that, but also a ton of free resources on drupal.org, in blogs and free video platforms like Youtube. Many videos on Youtube are real gems, and not only for beginners. But these resources are very difficult to find for the average user. Is there something we could do to help people to find Drupal videos on Youtube that fit their needs in a better way?

It's with those two questions in mind, giving something back to the community that could last longer and helping people find Drupal videos on Youtube in a faster and easier way, that the idea of VideoDrupal.org came to me a few years ago. But due to my professional activities I've never found the time to go on with this project until last October, when I decided to make a switch in my career and to become a Drupal freelancer. Working from home gave me the opportunity to better organize my schedule and have more time to dedicate to this project.  

What is VideoDrupal.org?

Like I said before, VideoDrupal.org is a curated mashup of Drupal videos and tutorials published on Youtube to make them more accessible for personal, educational and professional purposes.

The main goals of the site are:

1. Be a central point to easily find Drupal videos or tutorials (Beta 1.0)
2. Allow to discover trending topics (Beta 1.0)
3. Help beginners and advanced drupalists to learn Drupal (Beta 1.0)
4. Allow the community to tag videos to improve search results (Beta 2.0 - coming soon)
5. Spread personal or community efforts to promote Drupal (Beta 1.0)

As this website is aimed to serve the Drupal community, it's free and will stay free forever.

How to learn Drupal with VideoDrupal.org?

Aside from an advanced search solution, we set up a dedicated page for people who want to learn Drupal. This page is currently divided in two sections. The first one is focused on learning the basics of Drupal site building and learning Drupal theming with a curated set of amazing playlists and standalone videos.

The other section focuses on specific Drupal learning topics, like learning Git, learning Phpstorm, discovering the new Cache API of Drupal 8 or learning Gatsby and Drupal 8 for more advanced users. Each week I will add a new topic to this section.

How do we curate the videos?

We select the videos based on their overall quality. To do this, we first start by analyzing the channel.
If it's a community channel with more than ten videos, we gather all the videos and playlists. We trust in our community, so there is nothing to curate in that case.
If it's not a community channel, we first check if the channel has a learning Drupal dedicated playlist. If so, we gather all the videos of this playlist. If not, we quickly analyze each Drupal video with the following key factors in mind:

- Is the video in English? (Yes, this sounds weird, but we want to keep the project simple at this time. We're looking for a sustainable multilingual solution to implement in the beta 4.0)
- Is the sound quality good enough to understand clearly what the speaker is saying?
- Is the video about learning or promoting Drupal?
- Is the subject addressed in a clear and understandable way for the end user?

We do NOT modify the content of the video in any way.

We strongly believe that maintaining a small set of high-quality Drupal videos will help to make this project a success. You can help submitting a channel, a playlist or a video by clicking here.

Who is behind VideoDrupal.org?

At this time, we are just two: Santiago Rico (rasaric) and myself. When I finished the first round of site building and development, I proposed Santiago, a young and talented designer and Drupal frontend developer, to help me with the design and the theming of the site. He has done a really stunning job so far, hasn’t he?

We generally work on this site late in the afternoon, at night or during the weekends. That's not always easy but we are so excited to do that for the community which has given us so much during the last ten years.

Are we competing with paid Drupal learning solutions?

Absolutely not! Those paid solutions are vital for the community thanks to their high quality, we don't want to compete with them. We strongly believe that VideoDrupal.org is like an accelerator that will push new people to have a deeper interest in Drupal and later, choose a paid solution to improve their Drupal skills. Thinking this way, we are sure that VideoDrupal.org will act at the top of the sales funnel (awareness and interest) of those paid solutions companies and bring them more customers to the consideration step.   

In fact, we don't want to compete with anybody. We just wish to offer another way to gather and keep more people to and within the Drupal community. See number 5 of the site's purposes above.


First, I would like to thank Joaquin Bravo who gave me the confidence to start this project and mentored me at the very first start. Those two or three hours of mentoring where the best Drupal gift I've ever had. Thank you so much Joaquin!

On the other hand, I would like to thank Platform.sh for hosting VideoDrupal.org for free. You may know that I'm not a devops guy, so I was looking for a Drupal hosting service that allow us to focus on what best we can do: theming and developing Drupal websites. I've been delighted by Platform.sh for two main raisons:
- As a Drupal community oriented company, they accepted immediately, without asking any questions.
- The deployment work flow was surprisingly easy, just a few clicks and boom! The site was online with a fully functional dev. and prod. environment. I believe I'm going to love doing more devops tasks now.
Thank you so much for supporting us guys!

Finally, I would like to thank my wife Alejandra and my two young adolescents, Salim and Amélie who support me in this never-ending journey. Without their continuous and understanding support, this project would never have been undertaken.

What's next?

We are now planing the beta 2.0 version, a version only focused on improving the search results and the related video block. For this version we plan to:

- Fine tuning Search Api and Solr
- Fine tuning the MLT video block
- Allow the community to tag videos to improve search results and MLT block. The current video tags are too vague and often refer to the channel or event itself. We plan to add community tags like:

  • type (site building - theming - development - devops - arquitecture - community building - marketing - self-improvement - case study)
  • level (beginner - intermediate - advanced)
  • kind (tutorial - conference - meeting)
  • subject (free tagging)

- Find a way to access the video's captions and process them through an auto tagging tool like OpenCalais so we could discover automatically the most relevant tags.
- Your idea here?

The beta 3.0 will be centered on the user experience, for this version we plan to:

- Improve the mobile experience
- Allow the user to create their own playlists
- Allow the community to create learning playlists
- Enable comments in the learning nodes
- Give the user the possibility to know which video he watched and when
- Improve the discovery of trending topics and videos
- Your idea here?

It's your turn to help the community

If you are a Drupal agency you could perhaps accelerate the process, funding some development. Even if it's not a priority for us, we work on this site on a a pro-bono basis, this kind of support may help to finish those beta versions earlier. Just contact us if you're interested.

If you are a Drupal fan like us, we would love to have your feedback to better serve the community. What could we improve on this project? Do you think that we are on the right tracks? Are there other needs that we didn't consider? This project is also yours, so leave us a comment and if you like it, share it with your friends.

Apr 23 2019
Apr 23

Subscribe to the TCDrupal News

Apr 23 2019
Apr 23

The ever increasing complexity and functionality of Drupal sites does not need to translate into increasingly steeper development costs.

In the past, Drupal sites were relatively homogeneous with the occasional multi-domain or multi-site implementation. Today, as sites become more complex, with features such as headless integration with non-Drupal software, the overhead of reproducing an environment locally can become very costly.  Docker was created to bridge the gap between a homogeneous Drupal implementation and a complex integration with non-Drupal software.  

Rather than running a full virtual machine locally, Docker emulates a given environment but still uses your operating system for better efficiency. This is done via "containers" for things like MySQL and PHP, enabling you to do things such as set a given PHP version for each site rather than system-wide. As a result, the process of increasing a site’s complexity has less of an impact on onboarding time.

To build on the benefits of Docker, Expresso PHP was created. Expresso PHP is an open-source Docker setup geared toward PHP development, including Drupal. To illustrate the benefits of Docker and Expresso PHP, let’s walk through setting up a local Drupal environment in Drupal 8 using macOS Mojave.

Software Versions Used

  • macOS Mojave 10.14.4
  • Drupal 8.6.14
  • Docker 18.09.3
  • Docker Compose 1.24.0-rc1
  • Expresso PHP v1.1.0

Setting up Drupal using Expresso PHP


The first step is cloning the Expresso PHP Git repo and doing some initial setup.  This installation assumes you are installing docker sites in a "docker" directory within your local environment's home directly.  In the directions for this example,  the site in question is called "my-site."

cd ~/docker
git clone https://github.com/expresso-php/expresso-php.git my-site
cd my-site
git checkout nginx-php


After cloning the repo, specify the desired PHP version here:


The first line will look something like this:

FROM php:7.2-fpm


Next, clone the Drupal site's Git repo or otherwise add the site.  This example assumes the repo will be cloned within a directory called "my-site", so its location would be



Replace the existing "web" directory with a symlink to the document root:

rm -rf ~/docker/my-site/web
cd ~/docker/my-site
ln -s my-site/docroot web

This example assumes the document root is "docroot" but it could be "www" or something else.


Copy the settings.php file from default.settings.php

cd ~/docker/my-site/my-site/docroot
cp sites/default/default.settings.php sites/default/settings.php
cd sites/default


Edit settings.php and replace

$databases = array();

with the following

$databases['default']['default'] = [
  'database' => 'expresso-php',
  'username' => 'expresso-php',
  'password' => 'expresso-php',
  'host' => 'db',
  'port' => '3306',
  'driver' => 'mysql',
  'prefix' => '',
  'collation' => 'utf8mb4_general_ci',


Edit settings.php and replace

$settings['hash_salt'] = '';


$settings['hash_salt'] = 'expresso-php';


A local domain can be used to update the host’s file..  You will need to use sudo to edit /etc/hosts and add the following: my-site.test


Optionally, create a directory for a copy of the site's database and place a *.sql of the database into this directory:

cd ~/docker/my-site
mkdir ref_db
cd ref_db

This is only needed if a Makefile or build script will be used, which is recommended; otherwise, DB import could be done via drush.

Note - The designated location for the reference database may be different for a given Makefile or build script.


Add the Drupal files directory here and modify permissions if needed:

cd ~/docker/my-site/my-site/docroot/sites/default


Build the Docker containers; this is only needed during setup:

cd ~/docker/my-site
docker-compose up -d


The next step is importing the Drupal database.  Ideally this would be done via a Makefile or build script.

Alternatively, the DB import can be done via drush:

cd ~/docker/my-site/docroot
docker-compose exec -T php_nginx drush sql-cli < ../ref_db/ecoDB.sql


Once the DB is imported, check the port needed to access the site:

docker-compose ps

It will use the port associated with my-site_nginx_1; for example 32768.


Access the local website to confirm it works; for example, if the IP is 32768 then the site's URL would be:


Commonly used Commands

To use Drush:

docker-compose exec php_nginx drush cr

To SSH in to the nginx container:

docker-compose exec php_nginx /bin/bash

To restart services:

docker-compose restart
docker-compose ps

"docker-compose ps" is included here since restarting services resets the port used to access the site.

To uninstall the site:

cd ~/docker/my-site/my-site/docroot

docker-compose down -v
cd ~/docker
rm -fr ~/docker/my-site

That's all there is to it.  When a build script or Makefile is used, a new environment can be set up in a matter of minutes. The main, limiting factor is time needed to copy in the Drupal files/ directory and import the database.
Expresso PHP and Docker are excellent tools that enable you to maintain a straightforward setup process, even as complexity increases -- serving as another clear indicator of the inherent agility of Drupal.

Looking for further insights on leveraging Drupal to achieve specific outcomes? Contact us today.

Apr 22 2019
Apr 22

Another amazing DrupalCon has passed, and Kanopi had a great time collaborating with the community. Kanopians gave three talks, hosted one summit, participated in two others, led first-time contributor workshops, hosted three BOFs, and two of our engineers (Sean and Jim) passed their Acquia certifications. Our boss Anne even made her first commit.

If you missed our talks, fear not. The recordings are below:

Deep Cleaning: Creating Franchise Model Efficiencies with Drupal 8 

Presenters: Anne Stefanyk and Katherine White

COIT offers cleaning services and 24/7 emergency restoration services and their 100+ locations serve more than 12 million homes & businesses across the United States and Canada. But their own website was a huge mess. In this case study we will cover the more technical parts of this Drupal 8 implementation.

[embedded content]

How to Work Remotely and Foster a Happy, Balanced Life

Presenters: Anne Stefanyk

In this session, we talk about how to be the best remote employee, and provide strategies and ideas if you are a leader of a remote team. We talk about key tactics to keep you (and all other staff) inspired, creative, productive and most importantly, happy!

[embedded content]
Apr 22 2019
Apr 22

Long, long ago, before we had indoor plumbing, penicillin or `civix generate:module`, a humble drupal module was born.

It tried its best to be helpful by employing an (at the time) cutting edge technique known as CRM_Utils_Migrate_Import to dump a motley collection of custom fields, profiles and options into your CiviCRM database.

Along with other cutting edge techniques (such as lobotomies), the process of automatically adding custom fields, profiles and options has been improved and now can be done with managed entities and our lovely api.

The Progressive Technology Project helped bring about civicrm_engage, and has now prepared a series of much more sane alternatives that provide the same functionality, but are implemented using CiviCRM-native extensions that employ the CiviCRM API.

The replacement extensions are described below.

In addition civicrm_engage provided a few demographic fields and then did some magical foo on the display of the custom demographics fields so that they would appear on the summary page in the same box as the core demographics fields. This is pretty, but alas, we decided it was not worth the extra work of maintaining said magical foo so we have not tried to re-implement that feature.

So, with this blog post, we are starting the process of deprecating civicrm_engage.

NOTE: If you are currently using civicrm_engage, you can simply disable and uninstall the module and your custom fields, profiles and options will remain. Your custom demographic fields will suddenly appear as a Tab instead of being available in your core demographics box, but otherwise, everything will work the same. Disabling and uninstalling civicrm_engage is the recommended course of action for existing installations.

For new installations, please see the replacement extensions below.

Feedback and questions are welcome from anyone (but especially people that actually have civicrm_engage enabled, if any of you exist).

Replacement extensions:

  • Contstituent Fields: Provides a custom data group for both individuals and organizations that includes a contstituent type multi-select for both individuals and organizations. It also includes a handful of useful custom fields for organizing purposes, such as "Staff resopnsible", "Date started",  "Languages known" and others.
  • Participant Fields: Provides common fields for organizing events that extend the participant records, such as "Dietary Preferences" and "Child care needed."
  • Media Fields: Provides both a media outlet and media contact sub types (extending Organization and Individual) along with fields for tracking such sub types.
  • Voter Fields: Provides a set of fields for tracking voter engagement, including "Party Registration," "VAN Id" and others.
  • Foundation Fields: Creates a Foundation Organization sub type along with useful fields for tracking Foundations. In addition, provides a "letter of inquiry," "proposal," and "report" activity types and custom activity fields to help you track proposals.
  • Turnout:   Provides extra fields that extend the participant records that are    used for tracking turnout efforts. These fields (and a profile)    provide a turnout workflow allowing organizers to make up to three    calls to propsective event participants and track what their    responses to the calls are.
Apr 22 2019
Apr 22
Seattle skyline

Photo by MILKOVÍ on Unsplash

Another DrupalCon is in the books and our team had a fantastic time gathering with so many members of the worldwide Drupal community in Seattle. Getting together in person with a large portion of our team is always a treat, but it makes it all the sweeter when our team has the chance to share their expertise by presenting at DrupalCon. I was fortunate to be able to share my thoughts immediately following the event on an episode of the Lullabot Podcast and I have included videos and links below to all of Chromatic’s sessions. We are already counting down to next year.

If you are interested in attending DrupalCon with us in the future, check out the open positions on our Careers page!

Chromatic Sessions

Preprocessing Paragraphs: A Beginner's Guide

Larry Walangitan presented Preprocessing Paragraphs: A Beginner's Guide

Introduction to Drupal 8 Migrations

Clare Ming shared an Introduction to Drupal 8 Migrations to an exceptionally packed (and large) room.

Configuration Management: A True Life Story

Nate Dentzau teamed up with a former colleague to present Configuration Management: A True Life Story.

Saving The World From Bad Websites

Last but not least, Dave Look presented Saving The World From Bad Websites. Sadly, no recording is available so you’ll just have to keep an eye out for the next event Dave presents at.

Apr 22 2019
Apr 22

On the evolution of web content approaches and technology perspectives

Change is in the air!

In more ways than one, our world is in the throes of change. We live in an era where politics and governance, economy and international relations as also business and technology are all careening through an edge-of-the-seat roller coaster ride, from one ‘cutting edge’ to another.

Ideas, values, systems, processes, frameworks - what held good yesterday is today up in the air. We see this in our lives - professional and personal. We seek the new constantly, be it a new Mar-Tech platform every few months for our businesses, or a new Soc-Med channel to post our holiday pictures on, discarding the one that was ‘trusted’ till yesterday.

Not surprisingly, this affects both organizations and individuals - the changes in our experience of institutional frameworks, business models, corporate ethics, interpersonal relationships, the way we shop, eat, dress, travel, even our experiences of climate change.

The bit about climate change brings me to my own experience within a year, at two successive DrupalCamp events.

The first weekend of March 2018 caught me in the middle of the ‘Beast from the East’ cold snap at City University, the traditional venue for DC London. Trudging from Angel tube station down a snow-laden Goswell Road to the venue, in the lowest temperatures I have ever experienced in London.

In contrast, London saw unseasonal, unusually warm weather during DrupalCamp 2019. The weather was almost tending to summer-hood, the very same week exactly a year on. The odd tree on Goswell Road, standing like a leafless sentinel in front of a corner townhouse, provided an isolated reminder that it was officially still winter.

Almost like climate change in reverse (is ‘Brexit in reverse’ possible? Let’s leave that topic for some other day)

Engaging People, Evolving Paradigms, Enlightening Perspectives

DrupalCamps are largely meant to be developer-centric affairs… but DC London goes the extra mile to make it relevant to the business-minded as well. The DC London CXO Day is especially geared to deliver topics of relevance to business owners, managers, and of course CXOs.

group of people looking ahead to the speaker and the presentation

This year’s CXO Day was no different, and it went on to address the challenge of ‘change’ enveloping all of us. Three very lively and insightful presentations caught my attention -

  1. Prof. Costas Andriopoulos’ (CASS Business School) talk on ‘Leadership and innovation in scaling enterprises’ - dwelt upon the challenges of size.
    • initial success breeds complacency and arrogance
    • an ageing leadership is unable to embrace technology shifts
    • bureaucracy and set structures tend to be risk-averse

      Creativity and innovation are the victims of this inability to change, in the face of change.

      The professor emphasized that change can be harnessed via ‘breakthrough innovation’ -

      • empower people to break rules - those at the fringes bring in outside perspective
      • enable ‘project labs’ - to foster innovation initiatives
      • encourage ambidexterity - simultaneously exploit current competencies and explore new domains
  2. Michel Van Velde (Director, One Shoe) - on ‘Radically Candid’, the modern psychology that leads to effective leadership.

    Michel drew from the concepts of Eric Berne’s Transactional Analysis, and Thomas Antony Harris’ book ‘I’m Ok, You’re Ok’ - to give a contemporary and germane take on modern technology to effectively lead and bring about change - Radically Candid.

    He explained beautifully how the Drama Triangle traps us into responding in set ways to situations. This, in turn, prompts others to be unyielding in their stance, and the interaction hits a cul-de-sac.

    The conflicting parties are trapped in the rigidity of their responses, rendering any resolution impossible.

    Recognizing we are trapped in the Drama Triangle opens up our minds to deviating from our set position, enabling others to react differently, and Change becomes possible.

  3. Melissa Van Der Hecht (CTO, Mulesoft) - ‘We all have Superpowers’ gave a hugely engaging talk on why we need to be more open about diversity in technology.

    She shared insights on how we tend to think of ‘diversity’ in very uni-dimensional ways - gender for example - but it actually covers several aspects. Age, background, education, experience, race, nationality, disability are all elements of diversity - but it's what makes one stand out ahead that counts.

    Melissa illustrated how diversity is a key driver to innovation and change - and cited studies and statistics to show -

    • companies with more diverse teams report ~19% higher revenues
    • why diversity - better culture, higher performance, better customer engagement
    • coaching employees to harness their strengths encourages inclusion 

Content - Context less and channel-agnostic

Some very interesting and instructive developer sessions over the next two days that showcased how content technology is maturing with ever-evolving market contexts. I missed out quite a few, but the ones that caught my eye -
  • NLP and Drupal8, by iampritish - Leveraging NLP for content tagging makes it easier to showcase, focused, summarised content
  • Browser Wars 2019 - Implementing a Content Security Policy, by iAugur - The security of web content is live threat globally - security headers are easy to implement and add an extra layer of security against malicious attacks
  • The Front-end CSS battle - Flexbox Vs Grid, by surbhig - The choice of a ‘layout-first’ versus ‘content-first’ helps create responsive designs that render content across multiple devices and platforms
  • Reusing Components between Angular, React, Vue and Web-Components - by tkssharma - Reusing components between frameworks helps drive consistent user experiences across a plethora of applications or channels
  • How to make Drupal editor-friendly - by jaro.2801 - Drupal8 offers a highly enhanced UX for content editors; this presentation shows how to make the most of it
Finally, Preston So’s Sunday morning keynote was a pleasure to listen to. Speaking on ‘decoupled Drupal and context-less content’, he expounded on how rising expectations from developers, editors and marketers could put Drupal at risk of a credibility chasm.

This may start to happen when Drupal content is served to multiple channels beyond just the website. The multitude of devices, screens, wearables and apps that push content to us in myriad ways - audio, video, text, AR/VR as well as interactive, streaming or static.

This is the ‘Change’ digital technology is going through - an explosion of channels, along with rapidly evolving front-end Javascript frameworks. In such a scenario, content shouldn’t just be context-specific, for example just mobile-friendly or website-friendly. Content in its pure form should be channel-agnostic - able to adapt to different contexts, just the way water adapts to the shape of the vessel its poured into.

Preston explained how decoupled Drupal helps configure front-end channels (the ‘vessels’) that own their contexts fully, enabling enterprises to target specific audiences. A whole new proposition to leverage Drupal in ways that evolve with the business.

One for the road…

Come to think of it - was the 2016 Brexit vote an outcome of the Remainers’ inability to effectively channel its messaging content to its targeted audience? Is the current imbroglio in the UK Parliament a result of similar shortcomings in the current dispensation?

As I said, a topic for another day. However, AI and digital technologies are increasingly impacting the spread of news, ideas and public opinion. In the post-truth era, the standing of media companies - to take one example - depends more and more on how they create and disseminate credible content to discerning audiences, across their preferred channels.

Will the near future see spiralling audience demand for peer-reviewed journalism, tagging of fake news, detection of fraud content, false references, fabricated statements? Technologies such as natural language processing, blockchain and bigdata + cloud are already addressing similar challenges for the scientific publishing world - how far behind is mainstream media?

The road ahead perhaps, for a modern CMS working with such technologies of tomorrow, backed by secure cloud platforms - an all-encompassing enterprise digital ecosystem. A topic for future DrupalCamps?

Truly, change is in the cloud, er… air.

Rajat Lal is the Business Head, UK and Europe at Srijan Technologies

Apr 20 2019
Apr 20

It was easy!

Ok - I did have help from cafuego, so there's some bits of the process that were just magic to me.  But once I had access to the environments, I enabled the migrate modules, and followed instructions on drupal.org and hey presto it was done!

I did need to do manual clean up - re position blocks into differently named regions, and recreate some menu items for taxonomy.

I also got stumped for a bit about why I could no longer free tag, but that turned out to be a simple setting change.

There's still some tweaking to do, and I know that the path to files has changed, so there's lots of broken images I need to tidy up, but other than that, all seems well.

During his keynote at DrupalCon a couple of weeks back, Dries said the time to move to D8 is now.

He's right.

Apr 19 2019
Apr 19

Leslie Glynn - 2019 Aaron Winborn Award winnerDuring the opening plenary at DrupalCon Seattle, the members of the Drupal Community Working Group announced the winner of the 2019 Aaron Winborn Award, Leslie Glynn (leslieg).

The award is named after a long-time Drupal contributor who lost his battle with ALS in 2015. This award recognizes an individual who, like Aaron, demonstrates personal integrity, kindness, and an above-and-beyond commitment to the Drupal project and community. Previous winners of the award are Cathy Theys, Gabór Hojtsy, Nikki Stevens, and Kevin Thull. Current CWG members, along with previous winners, selected the winner based on nominations submitted by Drupal community members.

This year, there were 18 individuals nominated for the award. In the coming weeks, the CWG will be contacting all nominees to let them know of their nomination and thank them for their continued work in the community.

In addition to the physical award presented to Leslie during the announcement, Leslie was also provided with a free ticket to DrupalCon Seattle as well as travel expenses. 

Leslie has over 30 years experience in the software development field and has been working with Drupal since 2011. She has been involved in Drupal project management, site building, and client support. She has organized and mentored Drupal sprints, has offered trainings at Drupal camps and DrupalCons, and has volunteered at - as well as help organize - many camps across the United States especially in New England.

Multiple people nominated Leslie for this award. One of them wrote, “If you have ever attended a North American Drupalcon, BADCamp, NYCCamp, NEDCamp, Design4Drupal, or any other major North American Drupal event, then you have seen Leslie. She is a constant inspiration of how our community, and each one of us, should work and act."

Another one of her nominators wrote, “Leslie is a dependable, passionate, kind, and giving individual and the Drupal community is extremely fortunate to have her."

Nominations for the 2020 award will open in early 2020.

Apr 19 2019
Apr 19

What we learned from our fellow Drupalists

Go to the profile of Lisa Mirabile

On April 7th, our team packed up our bags and headed off to Seattle for one of the bigger can’t miss learning events of the year, DrupalCon.

“Whether you’re C-level, a developer, a content strategist, or a marketer — there’s something for you at DrupalCon.” -https://events.drupal.org/

As you may have read in one of our more recent posts, we had a lot of sessions that we couldn’t wait to attend! We were very excited to find new ideas that we could bring back to improve our services for constituents or the agencies we work with to make digital interactions with government fast, easy, and wicked awesome. DrupalCon surpassed our already high expectations.


At the Government Summit, we were excited to speak with other state employees who are interested in sharing knowledge, including collaborating on open-source projects. We wanted to see how other states are working on problems we’ve tried to solve and to learn from their solutions to improve constituents’ digital interactions with government.

One of the best outcomes of the Government Summit was an amazing “birds of a feather” (BOF) talk later in the week. North Carolina’s Digital Services Director Billy Hylton led the charge for digital teams across state governments to choose a concrete next step toward collaboration. At the BOF, more than a dozen Massachusetts, North Carolina, Georgia, Texas, and Arizona digital team members discussed, debated, and chose a content type (“event”) to explore. Even better, we left with a meeting date to discuss specific next steps on what collaborating together could do for our constituents.

Session Highlights

The learning experience did not stop at the GovSummit. Together, our team members attended dozens of sessions. For example, I attended a session called “Stanford and FFW — Defaulting to Open” since we are starting to explore what open-sourcing will look like for Mass.gov. The Stanford team’s main takeaway was the tremendous value they’ve found in building with and contributing to Drupal. Quirky fact: their team discovered during user testing among high-school students that “FAQ” is completely mysterious to younger people: they expect the much more straightforward “Questions” or “Help.”

Another session I really enjoyed was called “Pattern Lab: The Definitive How-to.” It was exciting to hear that Pattern Lab, a tool for creating design systems, has officially merged its two separate cores into a single one that supports all existing rendering engines. This means simplifying the technical foundation to allow more focus on extending Pattern Lab in new and useful ways (and less just keeping it up and running). We used Pattern Lab to build Mayflower, the design system created for the Commonwealth of Massachusetts and implemented first on Mass.gov. We are now looking at the best ways to offer the benefits of Mayflower — user-centeredness, accessibility, and consistent look and feel — to more Commonwealth digital properties. Some team members had a chance to talk later to Evan Lovely, the speaker and one of the maintainers of Pattern Lab, and were excited by the possibility of further collaboration to implement Mayflower in more places.

There were a variety of other informative topics. Here are some that my peers and I enjoyed, just to name a few:

A Day in the Exhibit Hall

Our exhibit hall booth at DrupalCon 2019 Talking to fellow Drupalists at our booth

On Thursday we started bright and early to unfurl our Massachusetts Digital Service banner and prepare to greet fellow Drupalists at our booth! We couldn’t have done it without our designer, who put all of our signs together for our first time exhibiting at DrupalCon (Thanks Eva!)

It was remarkable to be able to talk with so many bright minds in one day. Our one-on-one conversations took us on several deep dives into the work other organizations are doing to improve their digital assets. Meeting so many brilliant Drupalists made us all the more excited to share some opportunities we currently have to work with them, such as the ITS74 contract to work with us as a vendor, or our job opening for a technical architect.

We left our table briefly to attend Mass.gov: A Guide to Data-Informed Content Optimization, where team members Julia Gutierrez and Nathan James shared how government agencies in Massachusetts are now making data-driven content decisions. Watch their presentation to learn:

  1. How we define wicked awesome content
  2. How we translate indicators into actionable metrics
  3. The technology stack we use to empower content authors

The Splash Awards

To cap it off, Mass.gov, with partners Last Call Media and Mediacurrent, won Best Theme for our custom admin theme at the first-ever Global Splash awards (established to “recognize the best Drupal projects on the web”)! An admin theme is the look and feel that users see when they log in. The success of Mass.gov rests in the hands of all of its 600+ authors and editors. We’ve known from the start of the project that making it easy and efficient to add or edit content in Mass.gov was key to the ultimate goal: a site that serves constituents as well as possible. To accomplish this, we decided to create a custom admin theme, launched in May 2018.

A before-and-after view of our admin theme

Our goal was not just a nicer looker and feel (though it is that!), but a more usable experience. For example, we wanted authors to see help text before filling out a field, so we brought it up above the input box. And we wanted to help them keep their place when navigating complicated page types with multiple levels of nested information, so we added vertical lines to tie together items at each level.

Last Call Media founder Kelly Albrecht crosses the stage to accept the Splash award for Best Theme on behalf of the Mass.gov Team. All the Splash award winners!

It was a truly enriching experience to attend DrupalCon and learn from the work of other great minds. Our team has already started brainstorming how we can improve our products and services for our partner agencies and constituents. Come back to our blog weekly to check out updates on how we are putting our DrupalCon lessons to use for the Commonwealth of Massachusetts!

Interested in a career in civic tech? Find job openings at Digital Service.
Follow us on Twitter | Collaborate with us on GitHub | Visit our site

Apr 19 2019
Apr 19
  • Shriganesh
  • 19/04/2019

“The limits of my language are the limits of my world" - Ludwig Wittgenstein, Philosopher

Recently, I came across a very interesting stat. 56% of users either spend more time on sites in their own language than they do in English or boycott English-language URLs altogether.

This was confusing, given to the fact that English IS THE MOST popular language in the world! Well, apparently it stands third behind Mandarin and Spanish!

As the internet continues to grow, more people around the world are getting familiar with it, and this means just one thing. If you need to internationalize your business for better revenue, you need to go multilingual!

For most of the CMS tools, non CMS languages and frameworks, creating a multilingual website is a challenging task with numerous pain points. However, thankfully, this is not the case with Drupal CMS.

As a platform with capabilities of delivering multilingual websites right out of the box, reaching a broader audience, targeting more locations and taking your business global with a perfect multilingual solution is the giant leap for competitive advantage.

It is a Drupal world

A multilingual website is not an easy task. Just to begin with, you will have hundreds of questions over which you might break your head. Should you display the content in native language? How will media files be handled? Will the translations fail? Will the CMS be flexible enough to handle the changes incurred by the translations?

Well, to answer all these questions and more, creating a multilingual website just got a lot easier with Drupal CMS. Having tremendously evolved from its previous versions, Drupal 8 comes with huge benefits for both the site administrators and end users with Drupal 8's multilinguistic support.

So what makes Drupal 8 your “knight in shining armour”? Let’s find out.

Multilingual is in Drupal core now

Drupal 8 has brought in a lot of changes in the implementation of multilingual sites, making it easier and less complex. In the previous versions of Drupal, one had to install extra modules just to have support for multilingual functionality. That meant a lot of extra work, more maintenance, and increased costs. Drupal 8, however, brings in multilingual support to Drupal core with 4 modules (about which we will be discussing in the later sections) thus improving your website performance.

Localized Content

Out of the many great features that Drupal 8 brings in for multilingual websites, field-level translations for localized content is a key aspect for better usability. With such translations, it becomes easier to show localized content in every region without having to create a huge number of new nodes. This means that content translation is possible for all types of content, like user fields, taxonomy etc.

Language Support

The Drupal CMS has a very impressive list of available languages, allowing you to cover every nook and corner of the world. This list with over a hundred languages also supports languages with right-to-left text direction. Some of the default languages available are Arabic, Hebrew, Persian, Farsi and Urdu.

A highly motivated multilingual community

Drupal CMS is not just known for its amazing features, but also for those amazing people behind these features. Yes, I'm talking about the Drupal community that works selflessly to make Drupal an excellent CMS than before. The multilingual support in Drupal 8 is the cherry on top. With developers from around the world supporting the multilingual initiative, you have an extremely powerful driving force for your multilingual website!

The Core Modules

Unlike the previous versions of Drupal, most of the major functionalities and features that are necessary to build a multilingual website is offered in the 4 new modules in Drupal core. These modules replace the suite of various contributed modules, making it a lot easier for site administrators and the users. Let us dig in and learn what exactly these modules are, and the key roles that they play.

Language Module

This is the base module that is required for any multilingual website. This module lets you choose from 94 languages, and allows you to assign your preferred language for everything from nodes and users to views, blocks and menus. The module also allows each user to select his own language for the admin interface and configure how page languages are chosen, and apply languages to content. Some of the other features of this module are:

  • Better language selection defaults (URL negotiation enabled by default)
  • Allows browser language detection, which is made configurable with external language codes.
  • Has built-in Transliteration for machine names.

Interface Translation Module

The interface translation module plays the role of translating the built-in user interface, along with the modules and themes added. It also allows automatic downloads and updates and lets the user to use any translation interface available in the Drupal community (in any language supported by Drupal 8 ). English is not the default language anymore and it can be customized or even removed completely. Also, the module has built in translation UI for easier editing. Some of the other features of the interface translation module are:

  • Default protected local translations.
  • Plural versions are now editable on an integrated interface.
  • The module also has protected custom translations which are exportable.

Content Translation Module

Content entities, site content, pages, taxonomy terms or just the blocks; as a user, you can translate any of these into different languages using the Content Translation Module. Resembling the Interface Translation Module, this module allows easy configuration of the default language of the content. Also, users can hide or display the position of language selector for an easy interface. Some of the other features of Content Translation Module include:

  • Allows for field-level configurability
  • Integrated Views
  • Exposed language information via search API
  • Allows per-language content access for better control and accessibility.

Configuration Translation Module

The Configuration Translation module translates texts that are a part of the configuration. These texts include field labels, the text used in Views etc. In short, the module offers a built-in responsive translation interface for configurations. Some of the other features of the Configuration Translation Module are:

  • Everything shipped is pre-translatable on localize.drupal.org
  • Availability of an overview screen for any assistance needed in the process.

Contributed Modules for a Multilingual Website on Drupal 8

Apart from these four important core modules, there are some unique contributed modules which you might consider using for your website. These contributed modules have unique features that will help your website speak your customer’s language. Let's discover some of them in this section.

Language Selection Page

It is a cool thing to allow your website visitors to choose the languages (it can be their own mother tongue) they'd like to see your site's content translated to! This module empowers your visitors by presenting them a landing page where they can choose their preferred language. As a business, when you have minimal information about the data of your visitors, (which country they are accessing your website from, or what their mother tongue is) this module provides a huge advantage.

Language Fallback

Suppose a certain translation cannot be delivered to your website visitor in the custom language, this module provides a backup or a plan B and allows this undelivered translation to fallback to another language (specified by you). Thus, in case anything happens and the translation gets messed up, the user will still get the requested content in another familiar language or dialect.

Language Cookie

How cool will it be if your website could detect the visitor's mother language? Well, the language cookie module identifies the visitors' mother language by basically adding a new "cookie" field to the Language Negotiation settings. This in turn will set the language on your site in accordance with the extra cookie.

IP Language Negotiation

A key module for a Drupal 8 multilingual website, this module is quite similar to the Language Cookie module. The IP Language Negotiation detects the specific country from which a visitor is accessing your website and automatically displays the content of the entire website in the respective native language.

Localization Client

With an on-page translator editor, this module ensures that the next time you need to fix, create or add new translations to specific pages on the website, you don't have to go through all the pages to find them precisely and add or edit the translated content. Localization Client allows easy navigation around the pages to find the targeted ones directly, and fix/edit them.

It would take you over 7,000 languages to reach the entire global population. Reaching a wider audience with an optimized user experience and improved communication efforts to drive better conversion rates is not possible without a CMS warehouse that represents your web content. With a seamless multilingual solution straight out-of-the-box, Drupal 8 is the platform for your non-English users. Numerous benefits, customizable features and amazing capabilities to handle the multilingual support that your website needs. Drupal 8 is the complete package.

Apr 18 2019
Apr 18

In the Drupal community, the annual DrupalCon show is the biggest event of the year. Held in a different city each year, the event brings Drupal users together for a week of sessions and networking.

drupalcon accessibility lessons

With so many people and agencies committed to Drupal in attendance, DrupalCon is the perfect opportunity to provide training and guidance. This year’s show, DrupalCon Seattle, dedicated its first two days to community summits and full-day training sessions. One of these summits tackled one of the most prevalent issues of the year for Drupal: Accessibility. Through a combination of keynotes, panels and breakout sessions, the summit’s organizers gave attendees actionable insights and new perspectives on front-end accessibility.

The day kicked off with a keynote from OpenConcept’s Mike Gifford, who spoke about his agency’s work with the Canadian National Institute of the Blind (CNIB). For the organization’s 100-year anniversary, the CNIB sought a rebrand and redesign with an emphasis on making their site’s content more accessible. As OpenConcept learned, creating an accessible platform is easier said than done. To illustrate how difficult the process can be, Gifford wryly offered this Donald Rumsfeld quote:

There are known knowns; there are things we know we know. We also know there are known unknowns; that is to say we know there are some things we do not know. But there are also unknown unknowns — the ones we don't know we don't know.

In the context of web development, accessibility is often an “unknown unknown.” Without extensive testing, programmers won’t know that any given element won’t limit access for certain users. As such, one of the major lessons that Gifford shared was the importance of manual testing.

“Automated accessibility testing will only get you 25 percent of the way there,” Gifford said. “Manual testing is essential, and this mostly comes down to getting rid of your mouse and tabbing through a site."

Download Accessibility Checklist

As Gifford and speakers from subsequent panels noted, the best method for testing a site’s accessibility is to actually use it. While a lot of problems can be found by, as Gifford said, unplugging your mouse and using the “tab” key to navigate, this approach can still miss blind spots that able-bodied users wouldn’t consider. Alternatively, hiring disabled users to perform QA testing on a given site is often the best solution. 

This ethos is especially true when building mobile sites. Another keynote speaker, Gian Wild of AccessibilityOz, covered the mobile accessibility testing process in detail. Manual testing on real devices can root out common traps, like if a site’s buttons are too small to be navigated with a finger or if links aren’t underlined. For more common errors, Wild’s slide deck can be found here.

As important as manual testing is, though, automated accessibility tools are a vital element of the accessible design arsenal. Though pervasive and subtle errors still require hands-on QA testing, automated solutions will identify many more thousands of minor issues in a fraction of the time. As such, using these tools in coordination with manual testing will ensure that your site is as accessible as can be.

During the final breakout session of the summit, attendees shared which tools they think work best for rooting out accessibility issues, many of which conveniently come in the form of browser extensions. Some commonly mentioned tools included:

We’ve previously profiled several accessibility tools, and you see which one is best for you here.

As challenging as accessibility testing can be, the reward of expanding your audience is well worth it. Fortunately, the Drupal platform helps ensure out-of-the-box accessibility features. During his keynote, Gifford pointed out that Drupal design patterns have already been tested, known bugs are listed transparently, and the development community actually cares about the issue. In fact, OpenConcept’s work for CNIB produced several fixes and modules that can now be utilized by any Drupal user. These contributions and further info about the CNIB redesign can be found on Gifford’s slide deck here

With a senior-level team of designer and developers, Duo can apply these lessons to sites across industries. Our commitment to accessibility means that every site we build will be open to all users. To learn more about our process and values, reach out to our team today!

Explore Duo

Apr 18 2019
Apr 18
We have some pretty heavy sites on Pantheon, with big tables to manage our circulation, etc, with sizes over 1Gb and close to 2 million records. When we clone the environment for CI or dev purposes, it can take a while (15-30 minutes). So we have created a reference environment called master-lite, which mimics the content, but the huge tables are truncated. This exponentially reduces the backup size and time to clone.

We've set up some CI to test new branches we push up (hattip to Steve Persch, who helped us better understand CI and DevOps) and it will create a CI environment based on the master-lite, which doesn't take as long. Then one of the things it will do is perform a visual regression test between the CI environment (based on my dev branch) and the master-lite environment (which is based on the master branch).

All that sounds great, but unless I keep master-lite up-to-date, it can get stale pretty quickly, so I have created this Bash script to run several terminus commands to build the master-lite environment from our production environment:

Along with this script, I have separate .sql files named after the sites which have site-specific SQL commands to trim away the fat, so to speak. This script also has an if branch to exclude "site3" since that site hasn't grown to the point that I need to do any trimming.

Then I set this up as a cronjob to run every day at 3am from a separate server and now my master-lite environment is kept up-to-date automatically and it's much faster/easier to clone for CI/Dev purposes.

Apr 18 2019
Apr 18

Advancements in artificial intelligence (AI) are opening up a plenitude of possibilities in different industries. Efforts like Robotics at Google, for instance, are showing the world the way forward. Google is working on machines that may not be as eye-catching as humanoid robots but will have subtly more advanced technology inside them. The idea is to let them learn skills on their own and sort through a bin of unfamiliar objects or navigate a warehouse that is filled with unexpected obstacles. And in the healthcare sector, while the doctors are already using AI for diagnosing and treating medical conditions, Dr. Eric Topol, in his book called Deep Medicine, says that AI can do much more than that. AI can save doctors from performing tasks like jotting down notes and reading scans and allow them to spend more time connecting with their patients. The AI’s influence in different fields will make for an endless list.

A robot playing piano

It is true that AI is growing at a fast clip. But, currently, it is still dependable on human intelligence. Nevertheless, AI is here to stay and will only get better with time.

In the web landscape, too, AI has the provision for a superabundance of use cases. Drupal, as one of the leading content management frameworks, has been a pioneer when it comes to giving a push to digital innovation. Drupal, replete with modules for implementing AI, can lay the groundwork for a more AI-centric future for your digital business.

Unwrapping artificial intelligence

The term ‘Artificial Intelligence’ was coined by Dartmouth professor John McCarthy in the summer of 1956 when he invited a small group to spend some weeks musing on how to enable machines to do things like use language. He pinned high hopes on the breakthrough of human-level machines. Since then, artificial intelligence has come a long way and will undergo a lot of research and development in the coming years.

AI can emulate human performance by learning from it.

Gartner states that “AI applies advanced analysis and logic-based techniques, including machine learning, to interpret events, support and automate decisions, and take actions”. Commonly, definitions of AI emphasise on automation. But AI can emulate human performance by learning from it. This can come very handy as it gives a plethora of opportunities to IT and business leaders.

Adopting AI in businesses

When it comes to adoption of AI in the business workflow, organisations need a well-planned strategy to measure their firm against the AI maturity model, states Gartner.

Graphical representation with a blue line superimposed over a set of columns to explain artificial intelligence (AI) maturity modelSource: Gartner

AI maturity model can help in identifying where your firm is on the potential growth curve and decide what steps should be taken by discussing it with the management. Some organisations can be doing conversations about AI and are in an Awareness stage. There can be firms in the Active stage who may be including AI in proofs of concept and pilot projects. Organisations can be termed to be in the Operational stage when at least one of their AI projects has moved to production. Business organisations can be said to be in the Systematic stage when they, at least, start considering AI for all of their new digital projects. Once you figure out what stage you are in, you can aim for reaching the Transformational stage and make AI a part of your DNA with the help of top-notch, adaptive strategy and by giving more room for experimentation.
As you start implementing AI in your business, it is important to identify the right use cases i.e. the key business hurdles that can be resolved by the capabilities of AI. And there is no dearth of what AI has to offer as can be seen in the figure below.

Different coloured hexagons containing icons like truck, car, people, human brain, and computer joined together

A combo of AI and Drupal

AI has made its foray into different industries and has opened up new opportunities for improving business workflow. Web development is one of the areas where artificial intelligence can be leveraged to a great extent. Some of the examples of how Drupal can be of great use to leverage artificial intelligence are:


Artificial intelligence can be of great help in imbibing cognitive computing abilities, that simulates human thought processes in a computerised model, in a website. This can be done in the form of chatbots. Drupal’s Chatbot API module can offer fantastic conversational experiences. Chatbot API gives you a common flexible additional layer that comes in between Drupal, your Natural Language Processing (NLP) and your several chatbots and personal assistants thereby making your website chatbot-friendly. This assists in avoiding the need for writing new code whenever you have to translate conversational experience from one interface to another.

Web personalisation

Personalisation of the web content is done on the basis of a person’s digital persona. Content can be recommended to the users based on their profile or past activities. For instance, if they are searching for a blue shirt, something like this would work - “Here are more blue shirts”. Or, if a user is reading about futuristic technologies, then something like this may work - “Read more articles like this”. Artificial intelligence can improve even further.

[embedded content]

A session at DrupalCon Baltimore 2017 talked about personalising web content using machine learning (a subset of AI). They demonstrated Deep Feeling, a proof-of-concept project, that leverages machine learning techniques to enhance content recommendations to the users. They utilised Instagram API for accessing a user’s stream-of-consciousness and filtered their feeds via a computer vision API. This was, then, used to detect and learn subtle themes about the user’s predilections. On getting a notion about the sort of experiences the user thinks are worth sharing, user’s characteristics were matched against their own databases. The proof-of-concept involved Acquia lift service and Drupal 8.

Multilingual platform

“In keeping with our deep integrations to Web Content Management, Content Management Systems, and Marketing Automation platforms, our Drupal 8 connector is the latest example of Cloudwords building integrations that speed and scale a company’s global marketing engagements with personalized experiences in any language”, said Richard Harpham, former CEO at Cloudwords Inc.
Cloudwords for Multilingual Drupal module offers a superfast and efficacious way of governing the process of making your site multilingual. On installing this module, your content can be served in multiple languages to the market. Its powerful workflow automation and project management capabilities enable you to choose the content that you want to localise and the rest of the process is taken care of by Cloudwords. Its CAT tool utilises artificial intelligence and machine learning for enhancing productivity.

Deriving insights from your images

Google’s artificial intelligence capabilities can be applied for solving the obstacles of content management at scale. A session held at Badcamp 2018 exhibited how can content editors keep up with reviews during a continuous stream of content submissions.

[embedded content]

For this, Google Cloud Vision API was utilised. Google Vision API offers image labelling as it detects an object automatically and even provides data about objects such as its position within the image. It can also detect text within the images. It can assess your image and identify if it contains adult content, violence and so on. Google Cloud Vision API can be configured with Drupal via the Drupal module. This enables you to automatically add metadata to uploaded media and allow explicit content detection on image fields.


We can do so much with artificial intelligence just as there is much that we have done with the wheel. But to consider AI as an outright replacement for human intelligence is not the right thing to do. AI can improve our lives and it is important to figure how to leverage it for our betterment.
Drupal, a catalyst giving importance to digital innovation and emerging technologies, can be used in combination with AI to build futuristic solutions.
We have been working towards the provision of better digital experience and offer a suite of services. Let us know at [email protected] how you want us to be part of your digital transformation endeavours.

Apr 17 2019
Apr 17

by David Snopek on April 17, 2019 - 4:00pm

As you may know, Drupal 6 has reached End-of-Life (EOL) which means the Drupal Security Team is no longer doing Security Advisories or working on security patches for Drupal 6 core or contrib modules - but the Drupal 6 LTS vendors are and we're one of them!

Today, there is a Moderately Critical security release for Drupal core to fix a vulnerability in jQuery. You can learn more in the security advisory:

Drupal core - Moderately Critical - Third-party Libraries - SA-CORE-2019-006

Here you can download the Drupal 6 patch to fix, or a full release ZIP or TAR.GZ.

If you have a Drupal 6 site, we recommend you update immediately! We have already deployed the patch for all of our Drupal 6 Long-Term Support clients. :-)

FYI, there was another Drupal core security release made today (SA-CORE-2019-005) but that one doesn't affect Drupal 6, because Drupal 6 doesn't depend on Symfony.

If you'd like all your Drupal 6 modules to receive security updates and have the fixes deployed the same day they're released, please check out our D6LTS plans.

Note: if you use the myDropWizard module (totally free!), you'll be alerted to these and any future security updates, and will be able to use drush to install them (even though they won't necessarily have a release on Drupal.org).

Apr 17 2019
Apr 17
Project: Drupal coreDate: 2019-April-17Security risk: Moderately critical 10∕25 AC:Complex/A:Admin/CI:Some/II:Some/E:Theoretical/TD:UncommonVulnerability: Cross Site ScriptingCVE IDs: CVE-2019-11358Description: 

The jQuery project released version 3.4.0, and as part of that, disclosed a security vulnerability that affects all prior versions. As described in their release notes:

jQuery 3.4.0 includes a fix for some unintended behavior when using jQuery.extend(true, {}, ...). If an unsanitized source object contained an enumerable __proto__ property, it could extend the native Object.prototype. This fix is included in jQuery 3.4.0, but patch diffs exist to patch previous jQuery versions.

It's possible that this vulnerability is exploitable with some Drupal modules. As a precaution, this Drupal security release backports the fix to jQuery.extend(), without making any other changes to the jQuery version that is included in Drupal core (3.2.1 for Drupal 8 and 1.4.4 for Drupal 7) or running on the site via some other module such as jQuery Update.

2019-04-22, edited to add CVE.


Install the latest version:

Versions of Drupal 8 prior to 8.5.x are end-of-life and do not receive security coverage.

Also see the Drupal core project page.

Additional information

All advisories released today:

Updating to the latest Drupal core release will apply the fixes for all the above advisories.

Reported By: Fixed By: 
Apr 17 2019
Apr 17
Project: Drupal coreDate: 2019-April-17Security risk: Moderately critical 14∕25 AC:Basic/A:User/CI:Some/II:Some/E:Proof/TD:DefaultVulnerability: Multiple Vulnerabilities Description: 

This security release fixes third-party dependencies included in or required by Drupal core.

  • CVE-2019-10909: Escape validation messages in the PHP templating engine. From that advisory:

    Validation messages were not escaped when using the form theme of the PHP templating engine which, when validation messages may contain user input, could result in an XSS.

  • CVE-2019-10910: Check service IDs are valid. From that advisory:

    Service IDs derived from unfiltered user input could result in the execution of any arbitrary code, resulting in possible remote code execution.

  • CVE-2019-10911: Add a separator in the remember me cookie hash. From that advisory:

    This fixes situations where part of an expiry time in a cookie could be considered part of the username, or part of the username could be considered part of the expiry time. An attacker could modify the remember me cookie and authenticate as a different user. This attack is only possible if remember me functionality is enabled and the two users share a password hash or the password hashes (e.g. UserInterface::getPassword()) are null for all users (which is valid if passwords are checked by an external system, e.g. an SSO).


Install the latest version:

Versions of Drupal 8 prior to 8.5.x are end-of-life and do not receive security coverage.

Also see the Drupal core project page.

Additional information

All advisories released today:

Updating to the latest Drupal core release will apply the fixes for all the above advisories.

Reported By: Fixed By: 
Apr 17 2019
Apr 17

By Diego SaboloFull Stack Developer | April 17, 2019

By Diego SaboloFull Stack Developer | April 17, 2019

DrupalCon Seattle 2019 was my second Drupal Conference. Everybody enjoys travel, and everybody should enjoy learning while at it! This year I had the opportunity to do both, taking benefit of the Professional Development Program that weKnow offers as well as taking my family on vacation.

Seattle Convention Center The Washington State Convention Center

In my first hours in Seattle, I joined my teammates, got my credentials and the full information about the event... I was surprised by the variety of sessions available! One difference compared to Nashville 2018, this year there were only 2 days for room conferences, but the quantity looks similar. In fact, I did attend more sessions this year than in 2018.

Seattle View from the Space Needle Seattle View from the Space Needle

Tuesday, Dries opened officially the event with an interesting Keynote about the current state of Drupal,  the importance to update the current D7 sites to D8, and the upcoming improvements in the Drupal UI. Also, he focused on the importance of the accessibility and inclusion in the Drupal Community.

Drupalcon Seattle Program The sessions menu had a lot of interesting offers...not easy to decide where to go!

On Wednesday the sessions begun in full…The selection of tracks was not an easy job, most of them were really interesting, so I focused on those that I believe can add more value to my current role (working in growth & support). So I focused on sessions related to Custom Development and Testing. But there were sessions for all topics, from how to improve estimations to tips for remote work. There were also exotics topics such as "Installing Drupal in a homemade raspberry Pi cloud", and Alexa & Drupal integration.

My picks for Wednesday were: 

On Thursday I attended:

  • Advanced Webforms, by @jrockowitz:  A full review of the webforms module potential, handlers and Webform APIS

  • Building a Slack ChatBot, by @jmolivas: Jesus gives us an awesome example for creating chatbots , integrating them with external API’s, and several tips to make interactions between computers and humans.

  • Custom Compound Fields in Drupal 8, by @thagler: an excellent review for multiple elements fields  in D8 and focus on how to create, theme and test our custom compound fields.

  • Advanced Automated Visual Testing, by @shwetasharma84:  Interesting demo for VRT and how to including it in our automated deployment process.

  • Design a decoupled application,  by @justafish, @alwaysworking and @da_wehner: an architecture guide based upon the Drupal admin UI.

The overall balance was an awesome experience for reviewing ideas, learning new things and making new friends. I’m leaving Seattle with a sweet taste, renewed energies and the desire to put into practice the new concepts I learned. 

Big or Complex Project,
Not Enough Devs?

We help development teams meet their deadlines by seamlessly integrating our highly skilled developers.

Apr 17 2019
Apr 17

One of the challenges front-end developers face is adding new components to entity templates that exist outside of what is defined in the Field API; or in other words, adding dynamic components that aren’t really fields. Often this can be easily done by throwing the custom markup in a .html.twig file and calling it a day. But if you’re working on something that needs to be reusable, or if you’re collaborating with a site builder who doesn’t write code, the custom template route can be limiting.

Enter hook_entity_extra_field_info().

Content Moderation: A “Pseudo-Field” in Core

Drupal’s documentation says this hook “exposes ‘pseudo-field’ components on content entities.” You can see this hook in action with the Content Moderation module in core. All moderation-enabled entities can have an option box, placed via that entity’s Manage Display page, that contains a widget to update an entity’s moderation state in place rather than clicking through to the edit page.

Drupal's extra fields interface

The moderation option isn’t a real field. Rather, it’s what Drupal calls a “Pseudo Field.” But by using hook_entity_extra_field_info(), you wouldn’t know the difference. The moderation option can be moved around and configured for various display modes, just like “real” fields.

Using hook_entity_extra_field_info in a Custom Module

On a recent project, we needed to integrate a newer commenting service called Coral Talk. After searching, we learned that no module existed to integrate this service in Drupal. This presented a perfect use case for an Extra Field, and only needed two hooks for the bulk of the work:

 * Implements hook_entity_extra_field_info().
function coral_talk_entity_extra_field_info() {
  // Load commenting configuration.
  $config = \Drupal::config(coral_talk.settings');
  $extra = [];
  // Loop over the content types configured to have comments
  // and get their bundle name.
  foreach ($config->get('content_types') as $bundle) {
    if ($bundle) {
      // Add info for Extra Field to nodes only, specific to configured
      // content types. This determines what shows on Manage Display.
      $extra['node'][$bundle]['display'][‘coral_talk_comments'] = [
        'label' => t(‘Coral Talk Comments'),
        'description' => t('Place commenting on the page.'),
        'weight' => 100,
        'visible' => TRUE,
  // Return our new extra field.
  return $extra;

After a cache clear, this new field will appear on the configured content types’ Manage Display page and can be placed on the content type along with the other fields for that content type. Now that the field is defined, it needs some info for what should be rendered to the page. This is handled by Drupal’s hook_ENTITY_TYPE_view() hook.

 * Implements hook_ENTITY_TYPE_view().
function coral_talk_node_view(
  array &$build,
  \Drupal\Core\Entity\EntityInterface $entity,
  \Drupal\Core\Entity\Display\EntityViewDisplayInterface $display,
) {
  // 1. Check to see if our new field should be rendered on the entity display.
  // 2. Determine whether the user has permission to add comments.
  $condition = (
    $display->getComponent(‘coral_talk_comments') &&
    \Drupal::currentUser()->hasPermission('create coral comment')
  if ($condition) {
    $config = \Drupal::config(coral_talk.settings');
    // Add the new field to the $build array with a call to a custom theme
    // hook to render the comments. Pass necessary config into comment
    // settings.
    $build[‘coral_talk_comments'] = [
      '#theme' => 'coral_talk_comments',
      '#domain' => $config->get('domain') ?? '',

After another cache clear, we’ll now see our comments being rendered to our content types in whichever view mode they’re enabled on. The moves setup of comments outside of code and into a place that’s more accessible and flexible for various users.

This approach is great for simple scenarios. One drawback, however, is that it’s not possible to define any custom configuration options for these pseudo fields. Each extra field is identical, and any configuration has to be hard coded in these hooks. This presents challenges for site builders, who might want to configure comments differently per content type however. Fortunately, there is a solution in contrib that changes how Extra Fields are defined and allows for developers to add configuration to each field. In the next post, we’ll explore the Extra Field Settings Provider module.

Apr 17 2019
Apr 17

DrupalCon 2019 was a bit different for me. I have attended previous DrupalCons, usually sitting in the back of the room just taking in all that I could from experts around the world. This year, however, I had the opportunity to be a speaker. Not only was I afforded the opportunity to speak, but I had two separate sessions accepted.

Talking the Talk

Being my first DrupalCon as a speaker, I might have had a few butterflies in my stomach when I arrived. Those quickly faded, and overall, my sessions on Stanford Cantor Arts Center Redesign and A Survey of Emerging Technology were very well received. I had an absolute blast presenting! Special shout-out to my partners in crime, Kristen Pol and Adam Bergstein, for making the transition from attendee to speaker fairly painless.

Stanford Cantor Arts Center Redesign

This talk was a broad review of our work with Stanford Cantor Arts Center that takes a deeper look at a few problems we faced during the build. There were complexities within the content structure and architecture that we needed to be able to accommodate. Flexibility was the most important part of this website. We walked through the solution to leverage UI Patterns module that allowed component based design, making the build process more practical while allowing content editors the ability to adjust as they see fit on certain areas of the site. 

Listen to the full talk on YouTube.

A Survey of Emerging Technology

Together, Adam Bergstein and I highlighted a set of tools that we know integrate well with Drupal and are used to tackle common roadblocks within the environment. I specifically spoke to the value of GraphQL and Gatsby.JS.

GraphQL provides a common interface for API queries. It is specifically notable for the ability to get information in a sole request, versus JSON requests that require multiple attempts before getting all the data. As far as its ability to play nice with Drupal, there is currrently a GraphQL module that is updated and supported by our community. The biggest benefit of using it within Drupal is for standardizing those onboarding into Drupal. Where they may hit roadblocks coming from the outside in, GraphQL makes the Drupal transition easier.

Gatsby.JS is a static site generator that uses static markup, but can still display dynamic information. What is great is you can bring your own backend into Gatsby.JS. Benefit, getting rid of a lot of vulnerabilities by not having any server-side code running. The vulnerability of a CMS is no longer a worry.

Other technologies covered were Hubspot, ElasticSearch, Pattern Lab, and Cypress.io.

You can watch the full video on YouTube.

More Than Presenting

Group of Hook 42 Team Members Working in Sprint Room

Beyond speaking, I had a fantastic time hanging out with the team, as usual. Every time we’re in the same location together I’m reminded of how talented, intelligent, and funny everyone is. It was especially awesome to get a chance to greet our three newest members of the team (Michael, Emanuel, and Lindsey) in person.

We spent a sizable chunk of pre-conference time sprinting on our company website, which was an amazing team-building exercise and really showed how much we can accomplish when we work together. So hopefully you’re reading this on the flashy, fancy new-and-improved hook42.com!

Overall, DrupalCon never ceases to provide an endless amount of opportunity. From spending time with colleagues, to working hard on new efforts, and even having new experiences like being a first-time speaker, I always look forward to what DrupalCon has to offer.

When I began my career at Hook 42, I made it a goal of mine to one day speak at DrupalCon. A long-term goal, but one that I worked very tirelessly to achieve. Getting the opportunity to share my expertise with others on the stage in Seattle felt like the perfect culmination of two years of hard work to get there. It felt amazing to check off my list.

Apr 17 2019
Apr 17

Agiledrop is highlighting active Drupal community members through a series of interviews. Now you get a chance to learn more about the people behind Drupal projects.

For our latest Drupal Community interview, we had a really great talk with Ruben Teijeiro of Youpal and 1xINTERNET. Ruben revealed to us the meaning and responsibilities of a Drupal hero, a role which has enabled him to spread Drupal awareness all over the world and meet diverse Drupal communities. Read on to find out more about his journey with Drupal and what he's most excited about going forward.

1. Please tell us a little about yourself. How do you participate in the Drupal community and what do you do professionally?

In the Drupal community I am participating as a speaker, organizing conferences, for example organizing DrupalCamp Spain at the moment, also collaborating with companies and other communities in other countries. The purpose of this is to make the community bigger and try to identify issues within the project itself, not only technically, but also human issues - basically just trying to be, like, not an evangelist, but an advocate of open source and Drupal specifically. 

That is exactly the definition of a Drupal hero: someone that really takes open source seriously and wants to bring Drupal to every corner of the world. It’s this kind of “sharing is caring” mentality; as I started in open source, a lot of people helped me to get started. So, for me, I need to give something back, because I’m here at the moment because a lot of people helped me during my career. So I guess it’s our duty to help other people during the next stage of our careers. 

So, at the moment I’m working as a Drupal hero for 1xINTERNET, which is a Drupal agency in Frankfurt. I’m actually doing everything that’s needed: helping our development team, helping our project managers, doing sales pitches, attending conferences, you know, this kind of thing. Apart from that I also have my own digital agency, Youpal, in Stockholm, Sweden; as a co-founder I’m responsible for let’s say the company management things. 

2. When did you first come across Drupal? What convinced you to stay, the software or the community, and why?

My first installation of Drupal was 4.6, and then actively working since version 5, it was something like 8 to 10 years ago. I can tell you that before Drupal I was testing 10 or 12 different CMSs and different technologies, such as Java, Python and PHP, and I was really upset about all of them. One of the latest that I used was Joomla!, I was actually working at a company for 3 years. For me it was things such as the code quality, community engagement, these kinds of things that I was missing. 

Then I found Drupal and I started to feel that this was my CMS; proper code quality, code reviews, not anyone can contribute any module unless they follow some programming practices, this kind of thing. 

Apart from that, I attended my first community event and that’s when my mind was blown. Because it’s when you meet the community that you realize that this is bigger than you expected.

3. What impact has Drupal made on you? Is there a particular moment you remember?

Actually I have a special moment, which is when Drupal brought me to Sweden. It was during the financial crisis in Spain, there was no good work stability, and then suddenly because I was collaborating in the mobile initiative for Drupal 8, my name came up in Ericsson, in the company, so they needed a front-end developer. I was not a front-end developer actually, I was working in the mobile initiative to strengthen my front-end skills, but then I was assigned to the intranet project in Ericsson, and then I worked there for 3 years. That completely changed my mindset, my career, my life, everything.

The project itself is based in Drupal 7, integrated with several internal services, using REST and SOAP. They have Apache Solr for indexing the content, really strict single sign-on internally with their computers ... More or less that’s all, it’s just an intranet, so it’s regarding the employee information, documentation, processing and this stuff.

4. How do you explain what Drupal is to other, non-Drupal people?

When I try to explain this to my parents, or with let’s say people that are more into politics or government, or not technical people in general, what I try to use is samples that everyone knows, like, for example, “Do you know what is NASA? Do you know what is the European Commission? So, their websites are running on Drupal, that means there’s this secure infrastructure where you can just have your websites.” So, more or less, that's how I pitch Drupal in the beginning.

Then if you want to go to younger people, how do you explain it to them? So, if they want to use Drupal, I just try to tell them: “Oh, you want to have your own website, to sell your own stuff, this kind of thing? Then with Drupal you can just do it yourself, it’s a matter of clicks.” More or less I try to tell people, if you are able to use Facebook, you are able to build your own website with Drupal. 

With the new generations, such as with teenagers that will get started into technologies pretty soon, it’s best to use examples that they know on a daily basis; those are really easy to link to, what is this and what is the solution that you get, the outcome of it, you know. For instance, the main or the major universities worldwide, they use Drupal, so, Oxford, Stanford, those are good examples, not for teenagers, but for people who are going to university.

5. How did you see Drupal evolving over the years? What do you think the future will bring?

At the moment I guess it’s not only Drupal, it’s just PHP, the PHP ecosystem must evolve, like the Java ecosystem. So in this case I guess Drupal will become more decoupled, meaning that internally in their core they’re going to have more loosely coupled components, and in the end Drupal is going to be an API-first CMS or even framework. 

Because I guess that with a lot of good things that we are doing in Drupal, all the PHP projects could benefit from them. Like, I don’t fully understand why we have for example a user login component in Drupal, but then Magento use their own user login component, Symfony and Laravel, they use their own, which makes it really difficult to maintain because of multiple components that are doing exactly the same task. 

So, for me, unifying this component in one single one for all the PHP projects should be beneficial, and I think that it isn’t that difficult to make it so loosely coupled that we can use it even as an API.

6. What are some of the contributions to open source code or to the community that you are most proud of?

My contributions … My case is, I guess one of the biggest ones is the Drupal Heroes stickers, because I guess they are now all around the world; I have seen them in Saudi Arabia, I have seen them in Africa, I have seen them in India, you know, Russia, United States, South America, so they are going everywhere. So that’s one of the things, it’s just let’s say a pet project that I started with a friend who did the design of the stickers and then I just printed and handed over all of them.

It’s easy to identify through these stickers, because people maybe don’t know me by Ruben, but they know “Ah, this is the guy with the superhero stickers!”, you know, that’s all - an easy way to get spotted and to create brand awareness in Drupal.

That’s one thing, and the other is I guess all the traveling I’ve been doing around Europe, speaking about Drupal, meeting all the communities, I guess I’m pretty proud about having met almost 20 to 25 different communities in different countries. 

7. Is there an initiative or a project in Drupal space that you would like to promote or highlight?

At the moment I’m pretty happy about what we are doing with the JavaScript modernization, since everybody says that Drupal sucks because the UX is terrible, and I guess we all agree that the user experience is really bad; the developer experience is getting better and better, but the end user is where we should work the most. 

Apart from that, it’s as usual a lack of new talent, like, in every not only company, but open source project, you really want to attract new talent to your projects, or you do things differently and you also improve it. So for me the Javascript Modernization initiative is a good one because it’s bringing React developers or JavaScript developers into Drupal in a really easy way. So I guess it’s not my contribution, but it’s a contribution or an initiative that I think is super beneficial, not only technically, but from the human perspective.

The most beneficial thing about this is that everything is going to be API-driven, so all the API features are going to be available for every framework. But the thing is, we should work more actively in the content creation, because at the moment it’s not only the interface that’s important, but actually the content creation process that’s the most important - the editorial experience. That’s the session I’ve been giving at Drupal conferences for the past couple of years. 

So, it’s about the editorial experience, when you create content, why people really hate Drupal, like editors when they create content. Because then in the admin interface you go to the user and permissions page and, probably, you do it twice during the development of the project and then you don’t do it again. So we don’t really need to invest a lot of time improving the user experience of that page. So that’s my thing - we should focus our energy and time into the editorial experience, more than into the admin interface.

8. Is there anything else that excites you beyond Drupal? Either a new technology or a personal endeavorment. 

As I said, I’m really happy to have the React community come into Drupal, at least we are attracting part of it. I guess JavaScript modernization will improve a lot, because in the last JavaScript framework that we included in Drupal, it was Backbone and Underscore during the development of Drupal 8; Ember was considered as well, but there’s a long journey to go to have a proper JavaScript framework in Drupal core. 

Apr 17 2019
Apr 17

What makes Drupal a great choice from a UX standpoint? What features are responsible for the enhanced end-user experience in Drupal 8? Those features that enable you to easily create an intuitive and enjoyable visitor experience on your own Drupal-based website/application.

And to constantly improve it...

Is it all those performance enhancements that it ships with? Or maybe its “responsive out-of-the-box” nature? Or rather its multilingual capabilities?

1. But First: 7 Evergreen Ways to Improve Your Website's UX

It goes without saying that, in order to create an enjoyable, rich user experience on your Drupal 8 website, you'll need to:

  • put together a solid UX strategy
  • run extensive user research and map the user's journey
  • come up with an effective, well-planned UX design, paying attention to all the latest design trends (and now decoupled Drupal empowers you to tap into a whole range of new possibilities...)

And while carrying out all these phases of the UX design process, make sure to apply the following evergreen techniques for enhancing the visitor's experience:

1.1. Optimize the page loading time

For speed will always be the factor with the biggest influence on the user's experience on your Drupal site.

In this respect, there are tons of performance enhancements that you can implement, ranging from aggregating your JS and CSS files to properly configuring your cache to opting for a CDN, to...

2.2. Use bullets to structure your text

Bulleted lists are the “holy grail” of neatly structured, easy to read content.

For, in vain you invest time and effort in providing content that delivers real value to your website's visitors if you display it as an... “impenetrable” block of text.

In this respect, bullets help you break down the information. The result: users will see the key product or service benefits/will go through all of the presented features a lot quicker.

2.3. Use white space strategically

Speaking of easy to read content: there's no better way to enhance readability and to draw attention to specific elements on a page than... by using the white space itself.

It will automatically direct their attention to the text/image emphasized by all the white space surrounding it.

2.4. UX design is consistent Design

From color palette to button styles, from the size of the headings in your text to the chosen font, from the used photos to various design elements... keep consistency across all the pages on your Drupal website.

Otherwise, you risk to confuse and eventually... tire its visitors.

2.5. Go for visible, attractive CTAs

Always use action words for your calls to action and make sure they're easily recognizable. CTAs play a crucial role in setting up an intuitive, efficient navigation structure on your website...

2.6. Use images wisely

As images are always well-deserved “breaks” for the eye, especially when it's a long text that it's challenged to go through.

And yet, if you fail in using the relevant images, those that perfectly team up with your text... the user experience that you'll deliver will be anything but compelling...

2.7. Make your headings a high priority 

Remember to write your headings around some of the main keywords.

Also, strategically design them so that they're highly visible and help users to quickly scan through the content.

2. 4 Features Responsible for the Superior End-User Experience in Drupal 8

Gluing together all the design best practices that make a great user experience does call for a flexible and dynamic web platform.

Drupal 8 is that platform. It comes packed with some powerful features that make it easy for you to create the best visitor experience on your website.

Here are the ones with a huge influence on your website's UX:

2.1. Drupal 8 is responsive right out-of-the-box

And responsiveness, along with top page loading speed, still is one of those factors with a great influence on visitors' experience with your Drupal website.


  • all the available base themes now being responsive
  • the convenience of adapting your images to various screen sizes right from their display properties

… creating a compelling end-user experience in Drupal 8 is dead-simple.

2.2. Enhanced performance

From a performance standpoint, Dries Buytaert's post on Drupal 8's performance optimizations is still one of the most relevant sources.

If Drupal was already built to “inject” enterprise-level performance into static pages, Drupal 8, with all its caching enhancements, is designed to speed up dynamic web pages, as well...

2.3. Multilingual capabilities

Remember the user experience's main facets, ranging from useful to findable, to valuable, to credible to... accessible?

Well, Drupal 8 provides you with multilingual capabilities right out of the box. You get to translate your website's UI, content, configuration, etc.

Meaning that, with this multilingual system at hand, you can easily create an accessible user experience on your website.

2.4. Content personalization (by segment, login time, device, language...)

In this respect, the Aqua Lift Connector module is your most reliable tool.

What it does is bring together customer data and content, so that you can deliver targeted content experiences across multiple channels and devices.

The END!

And these are those robust features that stand behind the superior end-user experience in Drupal 8. The very reasons why this platform, and particularly this version of Drupal, makes your best ally in creating the most compelling UX on your website.

Photo by Lucian Novosel on Unsplash


About Drupal Sun

Drupal Sun is an Evolving Web project. It allows you to:

  • Do full-text search on all the articles in Drupal Planet (thanks to Apache Solr)
  • Facet based on tags, author, or feed
  • Flip through articles quickly (with j/k or arrow keys) to find what you're interested in
  • View the entire article text inline, or in the context of the site where it was created

See the blog post at Evolving Web

Evolving Web