Upgrade Your Drupal Skills

We trained 1,000+ Drupal Developers over the last decade.

See Advanced Courses NAH, I know Enough
Aug 04 2020
Aug 04

argument-open-source Like many developers, some of our first websites were built on the backbones of WordPress. It’s the hyper-popular king of content management systems. It has name recognition, an overflowing user base, and plenty of third-party integrations that help cut your development time. But, over the years, we’ve migrated almost exclusively to Drupal. So why did we switch? What is it about Drupal that leaves developers drooling? And why would anyone pick Drupal — which has around 1.3 million users — over WordPress —which has over 400 million users? Today, we’re going to compare David to Goliath. Why is Drupal, the third most active CMS behind WordPress and Joomla, a good choice for businesses looking to build a refreshing, impactful, and feature-rich website?

UNDERSTANDING THE CORE DIFFERENCES BETWEEN DRUPAL AND WORDPRESS

By far, the most significant difference between WordPress and Drupal is the overall development need. WordPress is simple. There are hundreds of thousands of third-party plugins that you can leverage to build an entire website with virtually no coding or developing knowledge. And, that’s the single biggest reason that WordPress is so massive. Anyone can build a WordPress site. It’s easy. Drupal requires development. If you want to build a Drupal website, you’re going to have to hire some developers. So, naturally, Drupal has fewer overall users. But, it’s essential to make that distinction. Drupal is built for businesses, public entities, and enterprises. WordPress is built for your everyday website. It’s important to keep this main difference in mind. It’s this difference that resonates throughout these core pillars. And, it’s this core difference that creates pros and cons for each platform.

DRUPAL VS. WORDPRESS: SECURITY, FLEXIBILITY, AND SCALABILITY

We consider security, flexibility, and scalability to be the three primary pillars of a CMS. An amazing designer can make a fantastic template or theme regardless of the CMS. And ease-of-use is relative to your plugins/modules, familiarity with the platform, and overall development capabilities. So those are both highly subjective. Security, flexibility, and scalability aren’t subjective; they are what they are.

SECURITY

WordPress has a security problem. Alone, WordPress accounts for 90% of all hacked websites that use a CMS. There’s a tradeoff that comes with leveraging third-party plugins to build websites. You increase your threat landscape. WPScan Vulnerability Database shows 21,675 vulnerabilities in WordPress’s core and with third-party plugins. This security vulnerability issue has been an ongoing headache for WordPress from the start. If we do a play-by-play, year-over-year of WordPress’s history, we see an ongoing and consistent security issue:

  • 2013: 70% of the top 40,000 most popular WordPress websites were vulnerable to hackers
  • 2014: SoakSoak compromises +100,000 websites, a massive DDOS attack hits 160,000 websites, and All In One SEO Pack puts +19 million sites at risk.
  • 2015: A core vulnerability puts millions of websites at risk, Akismet opens millions of websites to hackers, and YoastSEO puts over 14 million websites in hackers’ crosshairs.
  • 2016: At this point, millions of hacks are happening every week across plugins. Check out this WordFence weekly update during this period.
  • 2017: The hacks continue. The average small business website using WordPress is attacked 44 times a day at this point, and WordPress websites are 2x more likely to be hacked than other CMS.

The list goes on. Year-over-year, more vulnerabilities happen across WordPress. And this is an important point. WordPress has subpar security by design. It’s the tradeoff they made to build an ecosystem that doesn’t require development. We aren’t saying that the core of WordPress is inherently security-stripped. It’s not. But, given the scale, scope, and third-party-fanatic nature of the platform, it’s weak on security by nature. Drupal, on the other hand, is the opposite. Websites require development time, each website is customized to the user, and building a website takes time and patience. The tradeoff is better security. Drupal has built-in enterprise-scale security, and you don’t rely on a hotchpotch of third-party applications to build your website’s functionality. There’s a reason that NASA, the White House, and other government entities use (or used) Drupal. It has better security. We want to take a second to make the distinction. WordPress has a secure core. We would argue that Drupal has a more secure core. But the difference isn’t massive. WordPress’s security vulnerabilities are a product of its reliance on third-party applications to make a functional website.

FLEXIBILITY

WordPress is more flexible than Drupal to some users. And Drupal is more flexible than WordPress to some users. That may sound complicated. But it comes down to your development capabilities. Drupal has more features than WordPress. Its core is filled with rich taxonomies, content blocks, and unique blocks than WordPress. But, if you aren’t experienced, you probably won’t find and/or use many of these functionalities. On the surface, WordPress has more accessible features. At the core, Drupal is the single most feature-rich CMS on the planet. So, for businesses (especially public entities and larger enterprises), Drupal has a more robust architecture to tackle large-scale projects that have hyper-specific needs. For small businesses and personal website owners, WordPress is easier to use and requires far less development experience to tap into its functionalities, features, and flexibility.

SCALABILITY

Drupal has better scalability. This one isn’t a competition. Again, this comes down to the dev-heavy nature of the platform. To scale WordPress websites, you add more plugins. To scale Drupal websites, you develop more. There’s a key practical difference here. Drupal modules, taxonomies, and content blocks all exist in the same ecosystem. Each WordPress plugin is its own micro-ecosystem. So, with WordPress, most users are stringing together a ton of third-party ecosystems in an attempt to create one overarching website. Also, Drupal is built for enterprise-scale projects. So there’s backend support and a large landscape of community support around large-scale projects. WordPress is a catch-all CMS that has a little of everything. If WordPress is a Swiss army knife, Drupal is a custom, hand-forged bread knife — explicitly designed to help you scale, slice, and butter larger projects.

ARE YOU READY TO DEVELOP YOUR PERFECT DRUPAL WEBSITE?

At Mobomo, we specialize in Drupal development projects. Our agile-based team of top-level design, development, and support talent can help you launch and scale your website to fit your unique needs. From NASA to Great Minds, we help private and public entities build dreams and execute visions.

Contact us to learn more.

Jul 30 2020
Jul 30

argument-open-source Over 500,000 businesses leverage Drupal to launch their websites and projects. From NASA to Tesla, public and private institutions regularly rely on Drupal to launch large-scale websites capable of handling their development and visual needs. But, starting a Drupal project doesn’t guarantee success. In fact, 14% of all IT projects outright fail, 43% exceed their initial budgets, and 31% fail to meet their original goals! In other words, if you want to create a successful Drupal project, you need to prepare. Don’t worry! We’ve got your back. Here are 5 things to keep in mind when starting a Drupal-based project.

1. GATHER REQUIREMENTS FROM STAKEHOLDERS EARLY AND OFTEN

According to PMI, 39% of projects fail due to inadequate requirements. Believe it or not, requirement gathering is the single most important stage of project development. In fact, it’s the first step Drupal itself takes when pushing out new projects (see this scope document for their technical document project). Gathering requirements may sound easy, but it can be a time-consuming process. We recommend using SMART (Specific, Measurable, Agreed Upon, Realistic, Time-based) to map out your specific needs. If possible, involve the end-user during this stage. Don’t assume you know what users want; ask them directly. Internally, requirements gathering should rally nearly every stakeholder with hefty amounts of cross-collaboration between departments. You want to lean heavily on data, establish your benchmarks and KPIs early, and try to involve everyone regularly. The single biggest project mistake is acting like requirements are set-in-stone. If you just follow the initial requirements to a “T,” you may push out a poor project. You want to regularly ask questions, communicate issues, and rely on guidance from stakeholders and subject matter experts (SMEs) to guide your project to completion.

2. PLAN YOUR SDLC/WORKFLOW PIPELINE

We all have different development strategies. You may leverage freelancers, a best-in-class agency, or internal devs to execute your Drupal projects. Typically, we see a combination of two of the above. Either way, you have to set some software development lifecycle and workflow standards. This gets complex. On the surface, you should think about coding standards, code flow, databases, and repositories, and all of the other development needs that should be in sync across devs. But there’s also the deeper, more holistic components to consider. Are you going to use agile? Do you have a DevOps strategy? Are you SCRUM-based? Do you practice design and dev sprints? At Mobomo, we use an agile-hybrid development cycle to fail early, iterate regularly, and deploy rapidly. But that’s how we do things. You need to figure out how you want to execute your project. We’ve seen successful Drupal projects using virtually every workflow system out there. The way you work matters, sure. But getting everyone aligned under a specific way of working is more important. You can use the “old-school” waterfall methodology and still push out great projects. However, to do that, you need everyone on the same page.

3. USE SHIFT-LEFT TESTING FOR BUG AND VULNERABILITY DETECTION

Drupal is a secure platform. Of the four most popular content management systems, Drupal is the least hacked. But that doesn’t mean it’s impenetrable. You want to shift-left test (i.e., automate testing early and often in the development cycle). Drupal 8+ has PHPUnit built-in — taking the place of SimpleTest. You can use this to quickly test out code. You can perform unit tests, kernel tests, and functional tests with and without JavaScript. You can also use Nightwatch.js to run tests. Of course, you may opt for third-party automation solutions (e.g., RUM, synthetic user monitoring, etc.) The important thing is that you test continuously. There are three primary reasons that shift-left testing needs to be part of your development arsenal.

  • It helps prevent vulnerabilities. The average cost of a data breach is over $3 million. And it takes around 300 days to identify and contain website breaches.
  • It bolsters the user experience. A 100-millisecond delay in page load speed drops conversions by 7%. Meanwhile, 75% of users judge your credibility by your website’s design and performance, and 39% of users will stop engaging with your website if your images take too long to load. In other words, simple glitches can result in massive issues.
  • It reduces development headaches. Nothing is worse than developing out completely new features only to discover an error that takes you back to step 1.

4. GET HYPER-FAMILIAR WITH DRUPAL’S API

If you want to build amazing Drupal projects, you need to familiarize yourself with the Drupal REST API. This may sound like obvious advice. But understanding how Drupal’s built-in features, architecture, and coding flow can help you minimize mistakes and maximize your time-to-launch. The last thing you want to do is code redundantly when Drupal may automate some of that coding on its end. For more information on Drupal’s API and taxonomy, see Drupal API. We know! If you’re using Drupal, you probably have a decent idea of what its API looks like. But make sure that you understand all of its core features to avoid headaches and redundancies.

5. SET STANDARDS

Every development project needs standards. There are a million ways to build a website or app. But you can’t use all of those million ways together. You don’t want half of your team using Drupal’s built-in content builder and the other half using Gutenberg. Everyone should be on the same page. This goes for blocks, taxonomy, and every other coding need and task you’re going to accomplish. You need coding standards, software standards, and process standards to align your team to a specific framework. You can develop standards incrementally, but they should be shared consistently across teams. Ideally, you’ll build a standard for everything. From communication to development, testing, launching, and patching, you should have set-in-stone processes. In the past, this was less of an issue. But, with every developer rushing to agile, sprint-driven methodologies, it can be easy to lose sight of standards in favor of speed. Don’t let that happen. Agile doesn’t mean “willy-nilly” coding and development for the fastest possible launch. It still has to be systematic. Standards allow you to execute faster and smarter across your development pipeline.

NEED SOME HELP?

At Mobomo, we build best-in-class Drupal projects for brands across the globe. From NASA to UGS, we’ve helped private, and public entities launch safe, secure, and exciting Drupal solutions. Are you looking for a partner with fresh strategies and best-of-breed agile-driven development practices?

Contact us. Let’s build your dream project — together.

Jul 28 2020
Jul 28

argument-open-source

DRUPAL MIGRATION PREPARATION AUDIT

All good things must come to an end. Drupal 7 will soon meet its end. Does your organization have your migration plan to Drupal 9 in order? Here’s what you need to know to keep your Drupal site running and supported. Talk to Our Drupal Migration Experts Now!

OUR APPROUCH TO DRUPAL MIGRATION.

  • Analyze 
  • Inventory
  • Migration
  • Revision
  • SEO

OVERVIEW

Staying up to date with Drupal versions is vital to maintaining performance to your site:

  • Future-proofing
  • Avoiding the end-of-life cut-off
  • Performance
  • Security

GOALS

  1. Catalog existing community contributed modules necessary to the project
  • Do these modules have a corresponding Drupal 8 version?
  • If the answer to the above question is no, is there an alternative?
  • Is there an opportunity to optimize or upgrade the site’s usage of contributed modules?
  1. Catalog existing custom built modules
  • Do these modules rely on community contributed modules that may not have a migration path to Drupal 8?
  • Do these modules contain deprecated function calls?
  • Are there any newer community contributed modules that may replace the functionality of the custom modules?
  1. Review existing content models.
  • How complex is the content currently—field, taxonomy, media?
  • What specific integrations need to be researched so content will have feature parity?
  1. Catalog and examine 3rd party integrations.
  • Is there any kind of e-commerce involved?
  • Do these 3rd party integrations have any Drupal 8 community modules?
  1. Catalog User roles and permissions
  • Do user accounts use any type of SSO?
  • Is there an opportunity to update permissions and clean up roles?

PRE-AUDIT REQUIREMENTS

  • Access to the codebase
  • Access to the database
  • Access to a live environment (optional)
  • Access to integrations in order to evaluate level of effort

DELIVERABLES

Module Report The module report should contain an outline of the existing Drupal 7 modules with the corresponding path to Drupal 8, whether that’s an upgraded version of the existing module or a similar module. This report should also contain a sheet outlining any deprecated function usage for the custom modules that will need to be ported to Drupal 8.

Content Model Report The Content Model report should contain an overview of the existing site’s content types, users, roles, permissions and taxonomic vocabularies with each field given special consideration. Recommendations should be made in the report to improve the model when migrating to Drupal 8.

Integration Report The integration report contains a catalog of the third party integrations currently in use and marks those with an existing contributed module from the community and those that will require custom work to integrate with the Drupal 8 system.

Our Insights on Drupal Our latest thoughts, musings and successes.

Contact us. We’ll help you expand your reach.

Jul 16 2020
Jul 16

Acro Media is proud to be a part of Google Summer of Code 2020 for the first time in it’s 15 year history. 

What is Google Summer of Code (GSoC)?

“Google Summer of Code is a global program focused on introducing students to open source software development. Students work on a 3 month programming project with an open source organization during their break from university.” - About | Google Summer of Code

Why is Acro Media involved in GSoC?

Introducing students to open source software development and helping drive open source coding forward are key mandates of GSoC, which is something Acro Media can definitely get behind. 

Improved coding and talented new developers are only going to make the Open Source Community stronger.

Student developers like Vishal Chaudary gain valuable mentorship and insight through a 3-month internship. 

Vishal was chosen to take part in GSoC as a student developer working on the Drupal Commerce Fraud Project. The project aims to port the Commerce fraud module to Drupal 8/9 with candidate level release. This includes updating the current module with adding new features compatible with latest versions of Drupal. 

Vishal has been sharing his intern experience through a series of blog posts highlighting the things he has learned along the way. 

Here is a quick look at some of his highlights:

  • Week 1
    • Debugging and fixing for porting of Drupal 8 version
  • Week 2:
    • Added test for the feature to show cities previously having fraudulent orders
  • Week 3:
    • Added improvement in Features of the module
  • Week 4:
    • Addition of Reset fraud score functionality
  • Week 5:
    • Converting Rules entity form content type to config
  • Week 6:
    • Improving documentation for the module version 7.x and 8.x

Read more about Vishal’s GSoC journey here

Jul 14 2020
Jul 14

Mauricio Orozco from the SC Commission for Minority Affairs gave a talk about the state of Drupal within the SC State government. In recent years Drupal has grown from a tool used on a small number of projects to the platform of choice for all new agency sites. He spoke about the state’s initiative to move more to Drupal, South Carolina Interactive and their role in supporting government projects, which agencies are moving toward Drupal, and how this is benefiting residents of South Carolina.

[embedded content]

If you would like to join us please check out our up coming events on MeetUp for meeting times, locations, and remote connection information.

We frequently use these presentations to practice new presentations, try out heavily revised versions, and test out new ideas with a friendly audience. So if some of the content of these videos seems a bit rough please understand we are all learning all the time and we are open to constructive feedback. If you want to see a polished version checkout our group members’ talks at camps and cons.

If you are interested in giving a practice talk, leave me a comment here, contact me through Drupal.org, or find me on Drupal Slack. We’re excited to hear new voices and ideas. We want to support the community, and that means you.

Jul 10 2020
Jul 10

argument-open-source

When you first sit down to create your Drupal website, you have plenty of decisions to make. What are your first blog posts going to be? What kinds of marketing materials do you need to help your website convert? What is your SEO strategy to boost your SERP position? These are all important, and we highly recommend that you consider each point before you launch your first website.

But those are details. The most significant decision you’re going to make is what theme you’ll use. Think of your theme as the building block of your website. It’s how users are going to perceive your site, interpret your content, and engage with your products or services. You want a beautiful, interactive, intuitive, and easy-to-browse website that pushes customers to think, engage, and consume your rich creatives.

Here’s the problem: there are thousands of Drupal themes. When you first look through the avalanche of bright colors, minimal panes, and unique content configurations, it can be dizzying. How do you pick a theme with that certain something that sets you apart? 

Here are some criteria to help you sift through the tsunami of designs on the market.

How Important is Your Drupal Theme, Really?

At some point, you need to pull the trigger. But how soon should you go with your gut instinct? After all, is picking the “perfect” theme really that important? In today’s hyper-redundant theme ecosystem, it’s easy to think that website design is a secondary factor in your website build process. Many websites today have eerily similar themes, and you may be looking to copy-paste that minimalist, white-space-heavy style that your competitors probably use.

Don’t make the mistake of minimizing the importance of the theme. Your competitors may use cookie-cutter themes, but you shouldn’t. Here’s why:

  • 38% of people will flat out refuse to engage with a website if its looks aren’t appealing to them.
  • 88% of people won’t return to your website ever again after a single bad experience.
  • 75% of customers make a judgment call on your brand’s credibility based on your website design.
  • Given 15 minutes to read content, people would rather view something beautifully designed than something plain-looking.
  • 94% of negative feedback regarding your website will be design related.

In other words, your customers are going to judge the efficacy of your brand based on your website’s design. Remember the phrase, “first impressions are everything.” Well, 94% of first impressions are based on design—you want something stunning. Obviously, design is still a highly personal experience. Some people like quirky and weird, some like minimal and smooth, and others like aggressive and animation heavy. It depends on your end user and who you are as a brand.

So how do you go about picking the right one? After all, there’s a lot at stake. Your theme is going to be the first thing customers see when they click on your website. Here are the three core components of website themes you should consider before you make your choice.

1. Your Brand’s Identity

We all know that branding is a big deal. 89% of marketers say that branding is their top goal, and branding is the first thing that 89% of investors look at when deciding whether or not to open their wallets. So, when it comes to your design, brand should be front-of-mind. Who is your company? What does it stand for? And, most all, what does it look like?

Your Drupal theme is a powerful branding tool. Every single component of your website is an opportunity for branding. We could get overly complicated diving into website branding, but we’ll stick with the simple stuff. Let’s talk about color. Seems simple enough, right? Check this out:

  • Color alone improves brand recognition by 80%.
  • 93% of people focus on your brand’s color when buying products.
  • When people make subconscious decisions about your product, 90% of that decision is related to color.

Ok! So color is obviously important. But what about all the other “stuff” on your website? Does the position of content boxes, navigation menu, and blog posts really matter? You bet! Consistent brand representation across content boosts bottom-line profits by 33% on average. And 80% of people think content is what drives them to really engage and build loyalty with brands.

In a nutshell, think about branding when you look at themes. 90% of users expect you to have consistent branding across all channels. If you can’t find a theme that screams, “you,” that’s ok! If you can’t find one, build one.

2. Performance

The theme you choose will have a direct impact on your website’s performance. Unnecessary components, visual clutter, and poor frontend coding can all increase load times and disrupt website accessibility. Obviously, some of your performance capabilities happen on the backend (e.g., caching, DB Query optimization, MySQL settings, etc.) But your theme still has a sizable effect on how your website performs.

Overly large CSS files, redundant coding for modules, blank spaces, and other issues can all increase time-to-load, create visual issues, and create stop-points for your users. To be clear, performance is a significant component in both lead generation and retention:

  • A 100-millisecond delay drops conversions by 7%.
  • Increasing the number of page elements from 400 to 6,000 drops conversion rates by 95%.
  • 79% of shoppers that encounter a website with poor performance will never return.

Always test out themes for performance. The aesthetic qualities of a website are important, but performance is a necessity.

3. UX

We like to call UX the “hidden performance.” It’s how your users will engage with and consume content throughout your website. The theme you pick will dictate a significant portion of your UX. Before you choose a theme, build out your information architecture strategy, create mockups for UI (or at least find UI examples that you enjoy), and plot out your broad content strategy. Then, choose a theme that compliments your strategy and information architecture.

Here’s the most important thing: always evolve your UX. Consider applying agile to your theme building and choosing practices. Even after you select the right theme, constantly make improvements to your UI/UX to breed consistency and customer-centricity. You can purchase a pre-made theme on the Drupal marketplace, but you still need to customize the theme to fit your brand and conform to your UX framework. You don’t want to choose a cookie-cutter theme on the marketplace and fail to maximize its value. Not only will your website look nearly identical to thousands of other Drupal sites, but you also won’t truly build an experience-driven website. Give your customers home-cooked steak and potatoes—not a microwaved frozen dinner.

Are You Looking for the Perfect Drupal Theme?

If you want a theme that’s hyper-branded, built for performance, and created using brand-specific information architecture, you won’t find it on a pre-built theme website. You need to create it. At Mobomo, we help public and private entities create breathtaking Drupal themes specifically for their brand and their users. Let’s build your brand something amazing.

Contact us to learn more.

Jul 08 2020
Jul 08

argument-open-source

Businesses and governments build websites for one reason: to provide value to their users. But what if your website was incapable of reaching millions of your users? 25% of Americans live with disabilities. For some of them, the simple act of navigating websites, digesting information, and understanding your content is difficult. Yet, despite brands increasing spending on web design and digital marketing, less than 10% of websites actually follow accessibility standards. Businesses are spending significant money to capture an audience, yet they’re not ensuring that their audience can engage with their website.

It’s a problem—a big one.

You don’t want to exclude customers. It’s bad for business, and it’s bad for your brand. Better yet, accessibility features help improve your SEO, reduce your website complexity, and increase your ability to connect with your loyal audience. But accessibility standards aren’t always baked into the architecture of websites.

Luckily, there are some content management systems (CMS) that let you create hyper-accessible websites without even trying. Drupal comes equipped with a variety of accessibility features — each of which helps make your website more accessible for your customers.

Understanding the Importance of Website Accessibility

Creating an accessible website may sound vague, but there’s already a worldwide standard you can follow. The Web Content Accessibility Guidelines (WCAG) — which is maintained by The World Wide Web Consortium — is the global standard for web accessibility used by companies, governments, and merchants across the world.

Sure! Following the WCAG standard helps you reach a wider audience. But it also keeps you out of legal hot water. Not only has the ADA made it abundantly clear that compliance requires website accessibility. A United States District Court in Florida ruled that WCAG standards are the de facto standards of web accessibility. And there are already cases of businesses getting sued for failing to adhere to them.

  • The DOJ sues H&R Block over its website’s accessibility.
  • WinnDixie.com was sued for accessibility, and the judge required them to update their website.
  • The National Museum of Crime and Punishment was required to update its website accessibility.

The list goes on. Adhering to WCAG web accessibility standards helps protect your brand against litigation. But, more importantly, it opens doors to millions of customers who need accessibility to navigate and engage with your amazing content.

One-third of individuals over the age of 65 have hearing loss. Around 15% of Americans struggle with vision loss. And millions have issues with mobility. The CDC lists six forms of disability:

  • Mobility (difficulty walking or climbing)
  • Cognition (difficult remembering, making decisions, or concentrating)
  • Hearing (difficulty hearing)
  • Vision (difficulty seeing)
  • Independent living (difficulty doing basic errands)
  • Self-care (difficulty bathing, dressing, or taking care of yourself)

Web accessibility touches all of those types of disabilities. For those with trouble seeing, screen readers help them comprehend websites. But, screen readers strip away the CSS layer. Your core content has to be accessible for them to be able to comprehend it. Those with mobility issues may need to use keyboard shortcuts to help them navigate your website. Hearing-impaired individuals may require subtitles and captions. Those with cognitive issues may need your website to be built with focusable elements and good contrasting.

There are many disabilities. WCAG creates a unified guideline that helps government entities and businesses build websites that are hyper-accessible to people with a wide range of these disabilities.

Drupal is WCAG-compliant

WCAG is vast. A great starting point is the Accessibility Principles document. But, creating an accessible website doesn’t have to be a time-consuming and expensive process. Drupal has an entire team dedicated to ensuring that their platform is WCAG compliant. In fact, Drupal is both WCAG 2.0 compliant and Authoring Tool Accessibility Guidelines (ATAG 2.0) compliant. The latter deals with the tools developers use to build websites. So, Drupal has accessibility compliance on both ends.

What Accessibility Features Does Drupal Have?

Drupal’s accessibility compliance comes in two forms:

  1. Drupal has built-in compliance features that are native to every install (7+).
  2. Drupal supports and enables the community to develop accessibility modules.

Drupal’s Built-in Compliance Features

Drupal 7+ comes native with semantic markup. To keep things simple, semantic markup helps clarify the context of content. At Mobomo, we employ some of the best designers and website developers on the planet. So, we could make bad HTML markup nearly invisible to the average user with rich CSS and superb visuals. But when people use screen readers or other assistive technology, that CSS goes out-of-the-window. They’re looking at the core HTML markup. And if it’s not semantic, they may have a difficult time navigating it. With Drupal, markup is automatically semantic — which breeds comprehension for translation engines, search engines, and screen readers.

Drupal’s accessibility page also notes some core changes made to increase accessibility. These include things such as color contrasting. WCAG requires that color contrasting be at least 4.5:1 for normal text and 7:1 for enhanced contrast. Drupal complies with those guidelines. Many other changes are on the developer side, such as drag and drop functions and automated navigation buttons.

Of course, Drupal also provides developer handbooks, theming guides, and instructional PDFs for developers. Some of the accessibility is done on the developer’s end, so it’s important to work with a developer who leverages accessibility during their design process.

Drupal’s Support for the Accessibility Community

In addition to following WCAG guidelines, Drupal supports community-driven modules that add additional accessibility support. Here are a few examples of Drupal modules that focus on accessibility:

There are hundreds. The main thing to remember is that Drupal supports both back-end, front-end, and community-driven accessibility. And they’ve committed to continuously improving their accessibility capabilities over time. Drupal’s most recent update — the heavily anticipated Drupal 9 — carries on this tradition. Drupal has even announced that Drupal 10 will continue to expand upon accessibility.

Do You Want to Build an Accessible Website

Drupal is on the cutting-edge of CMS accessibility. But they can’t make you accessible alone. You need to build your website from the ground up to comply with accessibility. A good chunk of the responsibility is in the hands of your developer. Are you looking to build a robust, functional, beautiful, and accessible website? 

Contact us. We’ll help you expand your reach.

Jul 06 2020
Jul 06
Kaleem Clarkson

It feels like a lifetime ago that the event organizers’ request to become an official working group was approved by the Drupal Association at DrupalCon Amsterdam. Since then, 2020 has been a year that no-one will forget-from a global virus to social justice demonstrations-the world as we know it has been forever changed.

So far in 2020, we have learned some valuable lessons that we think will help us be a better working group moving forward.

Organizing Events is Hard. Organizing volunteer-led events is difficult already, let alone during complete uncertainty. Many event organizers have had to make very difficult but swift decisions by either canceling or trying to pivot to a virtual conference format.

Finding the Right Time is Hard. Organizing a global group of volunteer event organizers is also hard. As someone who has had little time on international teams, I admittedly thought of finding a meeting time a breeze. I was completely wrong.

Global Representation is Hard. One of our top priorities was to have global representation to help foster growth and collaboration around the world but unfortunately due to either the meeting times or not enough focused marketing on international event organizers the participation was just not where the board felt it should be.

After a few emails and some friendly debates, the board looked for opportunities for change that can help solve some of the lessons we have learned.

Alternating Meeting Times in UTC Format. To help foster more international participation, all scheduled meetings will alternate times all marketed and posted in the Coordinated Universal Time (UTC) format. Public meetings will now be at 12:00 pm UTC and 12:00 am UTC.

Increase Board Membership to 9. The group decided to expand the board members to 9. We are highly encouraging organizers from around the world to submit their names for interest to increase our global representation.

Maintain and Recruit Advisory Board Members. Succession planning is critical for any operation, and our advisory board provides more flexible commitment in participation which we hope will be our number one resource for new members down the road.

Board Members Nominations. In addition to expanding the number of board seats, Suzanne Dergacheva from DrupalNorth (Canada) and Matthew Saunders (DrupalCamp Colorado) have accepted their nominations from advisors to board members.

  • Camilo Bravo (cambraca) — DrupalCamp Quito — Ecuador / Hungary
  • Baddý Sonja Breidert (baddysonja) — DrupalCamp Iceland, Germany, Europe, Splash Awards — Europe
  • Kaleem Clarkson (kclarkson) -DrupalCamp Atlanta — Atlanta, GA, USA
  • Suzanne Dergacheva (pixelite) — DrupalNorth — Montreal, QC CANADA
  • Leslie Glynn (leslieg) Design 4 Drupal Boston, NEDCamp — Boston MA
  • Matthew Saunders (MatthewS) — Drupalcamp Colorado — Denver, CO, USA
  • Avi Schwab (froboy) — MidCamp, Midwest Open Source Alliance — Chicago, IL, USA

There are so many things that all of us organizers would like to get working, but one of our goals has been to identify our top priorities.

Event Organizer Support. We are here to help. When volunteer organizers need guidance navigating event challenges, there are various channels to get help.

Drupal Community Events Database. In collaboration with the Drupal Association, the EOWG has been working on putting together a new and improved event website database that will help market and collect valuable data for organizers around the world.
Submit your event today: https://www.drupal.org/community/events

Drupal Event Website Starter kit. To help organizers get events up and running quickly, an event website starter kit was identified as a valuable resource. Using the awesome work contributed by the Drupal Europe team, JD Leonard from DrupalNYC has taken the lead in updating the codebase. It is our hope more event organizers will help guide a collaborative effort and continue building an event starter kit that organizers can use.

Join the Event Organizer Slack here and Join #event-website-starterkit

The Drupal Event Organizers Working Group is seeking nominations for Board Members and Advisory Committee Members. Anyone involved in organizing an existing or future community event is welcome to nominate.

EOWG Board Members. We are currently looking for nominations to fill two (2) board seats. For these seats, we are looking for diverse candidates that are event organizers from outside of North America. Interested organizers are encouraged to nominate themselves.

EOWG Advisory Committee. We are looking for advisory committee members. The advisory committee is designed to allow individuals to participate who may not have a consistent availability to meet or who are interested in joining the board in the future.

Nomination Selection Process: All remaining seats/positions will be selected by a majority vote of the EOWG board of directors.

Submit Your Nomination: To submit your nomination please visit the Issue below and submit your name, event name, country, territory/state, and a short reason why you would like to participate.

Issue: https://www.drupal.org/project/event_organizers/issues/3152319

Nomination Deadline: Monday, July 6th, 11:59 pm UTC

Jun 30 2020
Jun 30

Consider a situation wherein your car indicators are placed near the glove compartment, the horn near the back seat, ignition turn on/off button near the fuel tank, and steering wheel with the button to open the side doors. How infeasible it would be!

A man sitting on chair and working on system

Of course, nobody will ever want to drive such a non-ergonomic car that can cause a threat to human life.

Likewise, for content marketers and publishers who create and publish content, their editorial experience must be seamless. It implies that they should be able to publish quality content in less time ahead of their competitors.

This blog is an attempt to interconnect the long-proven Japanese concepts of manufacturing - Kaizen and 5S’ technique with the editorial experience in the digital world to help companies implement it through Drupal and make their teams more productive for content creation and publishing.

Applying Manufacturing Concepts to Editorial Workflows in Publishing

Whether you have realized or not, you do have an editorial workflow. It is simply the way your content gets published.

However, if you have never given it much thought or attention, your team’s workflow is likely undefined, unclear, and unhelpful. It probably changes from article to article, and steps are missed or completed out of order.

See how manufacturing concepts can be applied to improve editorial workflow -

Getting into Editors’ Shoes

Engineer at the assembly line

Advancement in technology can facilitate editors to produce good   quality content and with high quantity. Though leveraging it the right   way can only ensure the productivity and quality of the work.

For an engineer on a manufacturing assembly line, carefully studying each step from pulling an electric screwdriver hanging from the ceiling and 5 screws from a bucket kept right near the waist level to eventually gripping those screws in the car.

Likewise, for editorial teams, it’s important to understand tasks that are repeated by the majority of the users and categorize them in high, medium, and low-frequency High Time tasks.

Understanding Key Pain Areas

A man stamding and operating system


Editors and publishers when working in collaboration should be able to maximize efficiency and revenue for the business. Stakeholders should emphasize the use of a specific mindset and tools to create efficiency and value. Here are some pain points that enterprises must resolve to help address those challenges-

American Society of Quality teaches a concept of FMEA (Failure Mode Effect Analysis) which can be directly applied to Editorial experience betterment
"Failure modes" means the ways, or modes, in which something might cause delays or complicate the workflow

"Effects analysis" refers to studying the consequences/results of those.

Focus on the tasks that hold the highest chances of occurrence and their consequences on the editorial experience and on business outcomes

Examples of Failure Modes and Effects

Failure Mode

Effects

Long Content Forms

Time Delays, Frustration for teams

Excessive clicks to complete a form

Time Delays for publishing, complicated workflow

Multiple Screen Navigations

Possible loss of information, time delays

One body field for all content

Difficult to manage changes, Low-richness of content

Applying Lean Manufacturing 5S’ technique for better Editorial Experience

The term 5S is taken from five Japanese words -

  • Seiri
  • Seiton
  • Seiso
  • Seiketsu
  • Shitsuke

When translated in English, these words become-

  • Sort
  • Set in Order
  • Shine
  • Standardize
  • Sustain

Here, each “S” represents one part of the five-step process that can improve the overall functioning of a business. Let’s get in detail of each “S”.

1. Sort:  This involves going through all the tools(buttons), furniture(fields), equipment(process), etc. in a work area(content management system) to find what needs to be present and what can be removed. 

  • When was this item(field) last used?
  • What is the purpose of this item(field)?
  • How frequently is it used?
  • Who uses it?
  • Does it need to be here?

Logical Grouping of Fields: When was the last time you cribbed about the monologue like marketing forms or a job application which took you years to complete?

day comLong and Verbose Content Forms vs Logical Grouped Forms with Form tips

 

Now think wearing editors’ hat who have to create content using those long forms 10, 20, 50, 100 times a day, these just prove as a hindrance for editors to create and innovate with their content

Logical Grouping of fields via the Field Group module makes the form short and easy for editors to only pick and add information in the fields which are concerned to them.

Form Tip is another intuitive feature to avoid long-form(black box in the screenshot on right) and give editors some info about the info that needs to be added in the field.


2. Set in Order

Once the clutter is gone, it's easier to see what's what. Now workgroups can come up with their strategies for sorting through the remaining items.

  • Collapsible Fields is another way to reduce the length of the form and collapse the fields which are not used widely in all content

a rectangular white bar with text

vehicles moving on road

  • Conditional Fields  is another way to reduce the   number of fields on the form, show/hide fields   based on condition, eg. the ‘Primary Image  Summary’ field for an image will appear only if  there is an image uploaded to an article (As seen  for ‘Primary Image’ field in Screenshot) 
  • Number of Clicks - Carefully minimize the number of clicks to achieve a task 


gif showing various rich multimedia formats

Rich Multimedia Features- Helps  creating a modular content structure with different logical fragments of content rather than just one large body field. Use this to add rich social media features like Embeds, Slideshows, Videos, Audio Podcasts.

two sections divided on white background

  • Taxonomy Manager  allows editors to manage all the master content and vocabularies in the system in an intuitive interface

8 sections divided showing people

Gives a selection view for images and videos 

text on white background

Helps listing the items together for a section of the website


3.  Shine:

The Shine stage of 5S focuses on styling and theming of the interface for the creation and publishing of content for editors. 

  • Giving editors much larger space to write and manage content contrary to the traditional content forms
  • Max Length Helps defining field limits to make sure the user doesn’t exceed the limits 
  • Colors and Font: Use clear visible font-size which are not stressful to the eye. Use solid colors for the header/footer menu of content entry screens for better visibility of text.  

two images juxtaposed on white backgroundHeader/footer menu of content entry screens for better visibility of text

 

4. Standardize: Use standardized field types to supplement faster creation of content.

Anubhav 4.0

Some industry-standard field types that can be used are mentioned below:

-  A long list of options: Eg. the country field can be configured using Auto-complete deluxe 

- Multiple values in a field: Eg. Keywords field can be configured using Chosen fields; it’s quick and gives a fast response if the user wants to remove an item

- Hierarchical items can be configured using SHS

There are a few more industry-standard features that should be added to the interface for standardizing editorial experience:

Auto-Save of Progress

 If the user's browser or machine   dies while editing an article; the   edits will be presented to the user the next time they return to the article

a dialog box on white background

 Content Locking 

When a user is editing an article, any other user that attempts to edit the same article will be blocked from doing so and notified that the content is already being edited. fields on white background

5. Sustain: This is the last of the 5S’. It is not only about keeping the 5S running smoothly, but also about keeping everyone in the organization involved.

video in white backgroundTraining and Onboarding: Quick Editorial onboarding for the editors which means the teams can self-learn on creating content and publishing content without specialized training. 

Saves a lot of time and money to onboard a new publishing interface.

Summing up-

Though 5S is quite a simple concept, beginning a new program of it can feel daunting.

You can start by rolling out a plan with practical steps such as deciding the departments and individuals to be involved, what training will be needed, and what tools will be helpful in executing the process.

Determining these concrete steps would help you successfully carry out the process of 5S implementation. Besides, Drupal has the potential to enhance the editorial workflow significantly through its powerful modules and distributions.

Jun 26 2020
Jun 26

Drupal 9 was launched on June 3, 2020. Given this, it would be necessary for enterprises to upgrade to it later or sooner to acquire complete functionality and retain the ability to receive security updates within the bi-yearly cycles.

In the past, migrating from one version to another has been similar to moving from another CMS to Drupal, bringing in more time and fatigue.

However, the upgrade from D7/8 to D9 is much easier and painless. Let’s dive into more details and understand as to why moving on to Drupal 9 would be a better choice.

Why Should You Upgrade?

With the end of life approaching for Drupal 7 and 8 soon, operating the website on them securely and with complete functionality won’t be a feasible option.

At the same time, it might also be overwhelming for Drupal 7/8 site owners to know that their website will need the upgrade, especially when their site is running absolutely fine; thereby, resulting in confusion among them.

 

Here are 3 reasons why you should consider upgrading your site to Drupal 9:

 

  1. The Drupal security team will soon no longer provide support or security advisories, wavering your website’s and its users’ cybersecurity
  2. D7 and 8 releases’ on all project pages will be flagged as ‘not supported’. D7/ 8 may be flagged as insecure in 3rd party scans making the integration with other third-party tools and systems challenging
  3. Leading hosting services providers like Acquia and Pantheon will also soon withdraw their support from D7 leaving you without many options but to assume hosting responsibility for maintaining your application and server level configurations

The good news for Drupal 7/8 site owners is that even when it goes out of official support in November 2022, remaining Drupal 7/8 sites won't stop working at that point.

Should an Existing Drupal 7 Site Be Upgraded to Drupal 8 or 9?

One of the major reasons that more than seven hundred thousand Drupal 7 sites still haven’t migrated to Drupal 8, is due to the known challenges in the migration process. And with the majority of people on Drupal 7, it is quite likely that most of them did not want to upgrade their CMS twice in the span of one year.

A safe bet seems to be migrating from Drupal 7 to Drupal 9. But will the site be secure? Let’s get to know a few facts.

Since D8 and D9 are similar except for deprecated codes removed and third-party updates in D9, it would be a feasible option for enterprises to migrate to D9 instead of D8 - to save them from constantly going through the same process and investing time, money, and efforts unnecessarily.

What’s New in Drupal 9?

There are innumerable capabilities added in Drupal 9 which further will be consistently updated biannually to help enterprises stay up-to-date.

Now once you upgrade your system to D9, you won’t require to make major changes the next time you plan to update it to a newer version. 

Here are some of the new capabilities that are added to D9-

  1. Backward compatible

    Drupal 9 is backward compatible, i.e., it is compatible with its predecessor, Drupal 8. That being said, D9 will be able to use modules, configurations, and data created on D8 of the same software, unlike the case with D7 and D8.
    Additionally, preserving this functionality won’t burden Drupal with historical baggage and so the performance of the system will remain unaffected. The Drupal community has also focused on breaking code and not the data.
    This way, Drupal will remain fast, clutter-free, and yet an up-to-date technology.

  2. Faster and Better Performance

    Drupal 9 has taken it further to extend its support for responsive images, wherein mobiles can display the best-sized images and hence, consume fewer amounts of data.
    In a recent webinar by Dries, he mentioned that Drupal 9.1 onwards versions/updates will witness the innovation and pave the way for faster and better performances of the websites. Drupal 9.1 update is just six months post the release of Drupal 9. Meanwhile, here are some of the features of D9 that you can leverage for efficient workflows-

        A.  BigPipe increasing page view performance and supporting faster initial page loading

        B.  Content Workflow allowing you to define multiple workflows

        C.  Multilingual capabilities

        D.  Structure Content- Drupal 9 comes in with an array of available fields, encompassing phone, email,       data, and time.

  3. Cleaner code base

    Drupal 9 has removed the support for deprecated codes in D8. This implementation will ensure that the code marked as deprecated will no longer be supported and used in the Drupal ecosystem. 
    The motive behind this is to make D9 a cleaner version so that whenever the modules in D8 want to become compatible with D9, they need to first eliminate the deprecated code. 
    Thus, the end result is clear- to make the code more nimble and improve the website’s performance.

  4. Newer Major Versions of Symfony and Twig

    Symfony 3 will be replaced with Symfony 4 or 5 after November 2021. Also, the Drupal community can introduce an upgrade to Twig 2.0. These upgrades will only result in enhanced performance, improved developer experience, and enhanced security.

  5. Panelizer will be removed and replaced 

    What’s new in Drupal 9? Well, the panelizer will be replaced with the Layout Builder, the “star” module of the moment.

  6. Headless CMS

    Drupal 8 and 9 both come with an API-first approach. Dries also mentioned in the webinar that the Drupal community is vigorously capitalizing on Headless CMS so that it can enhance users’ experience with the powerful front-end of the website with Javascript framework like React or Angular. 

The essential features of Drupal Headless CMS are-

  • Front-End Freedom
  • Create Once, Publish Anywhere
  • API-First Approach
  • Easier Resourcing

Drupal 9 is more usable, accessible, inclusive, flexible and scalable than previous versions, with the following updated features-

  • It will be significantly easier for marketers to use D9
  • Simple than ever to maintain and upgrade for developers
  • D9 is experimenting with its headless or decoupled capabilities

Additionally, you can also learn from our previous blog where we have explained how to find and fix the deprecated code - Site Owner’s Guide to a Smooth Drupal 9 Upgrade Experience.

Why Remove Deprecated Code in Drupal 9?

To ensure that the D8 modules remain compatible with D9, it’s typically essential to remove deprecated codes- 

  1. The all-new Drupal 9 ready code gets deployed on Drupal 8 sites and issues can be tested.
  2. It is a continuation of the fully-tested and stable codebase of Drupal 8

With time, the effort is being made to make Drupal better. There are functions that have been around for a long time but will not be a good fit in the latest release. Most were deprecated in Drupal 8.7.0, which will be removed in Drupal 9.

To sum it all, the key to achieving this smooth transition to Drupal 9 is to rollout your migration plan within deadlines and save yourself from any unnecessary hassle later on.

Srijan is working with leading enterprises to help them migrate their digital web properties to Drupal 9 for better user experience. 

If you are also looking for a smooth upgrade/migration process for your enterprise’s system, we are all ears and excited to assist you. Contact Us!

Jun 22 2020
Jun 22

It’s nearly a decade since the release of Drupal 7. During this time, we have seen new legislation in web accessibility, privacy (GDPR), the rise of mobile internet, and the proliferation of high-performance devices. 

The way we interact through technology has changed too. Customer expectation has risen, and interaction has become automated, facilitated by the integration of CRMs and marketing tools. 

The case for 'Versions'

These social changes are why ‘versions’ of technology are released. When the world changes in such a fundamental way, it is illogical to make a historic version continue to fit. Instead, new versions are built with the way we communicate at their source.

Drupal 7 was created in an unrecognisable world by today’s standards, and by staying on D7, you remain in that past world.

If you wish to remain secure, keep pace with innovation, consumer expectations, and meet modern digital standards, it is necessary to migrate your website to a CMS version built for the new world. 

These new requirements are why Drupal 8 and most recently Drupal 9, which I will come onto later, have been released.

 

What happens at Drupal 7’s End of Life?

Previously, Drupal 7's end-of-life was scheduled for November 2021. Given the impact of COVID-19 on budgets and businesses, the Drupal project has extended the end of life until November 28, 2022. It is important to understand what this means to your organisation:

  • The Drupal Security Team will no longer provide support or Security Advisories for Drupal 7 core or contributed modules (additional components for your website), themes, or other projects.
  • Drupal 7 will no longer be supported by the community at large. The community at large will no longer create new projects, fix bugs in existing projects, write documentation, etc. around Drupal 7.
  • After November 2022, using Drupal 7 may be flagged as insecure in 3rd party scans as it no longer gets support.
  • Best practice is to not use unsupported software, it would not be advisable to continue to build new Drupal 7 sites.

It is important to appreciate that your website does not suddenly become insecure come November 2022, rest assured we present you several options, detailed below.

 

Drupal 8: What’s new?

Drupal 8 is a massive leap forward for the community and the organisations using it.

There are so many reasons why Drupal 8 (and 9) implementations appeal to Drupal 7 site owners. Here are a few which stand out:

  • Content authoring experience designed with marketers in mind
  • Drag and drop page builder
  • Flexible page layouts with components
  • Introduce modern headless front end
  • Mobile-first by default
  • Fast page load times, great for end-users and SEO alike
  • Media library simplifying work with video, images and documents
  • Social integration
  • Easily exchange data with CRM, marketing and back-office systems
  • WCAG 2.1 accessibility
  • Ability to introduce personalisation

 

How to decide your Drupal 7 strategy

Your path forward depends upon your organisation’s attitude towards the Drupal 7 site. Which category does your site fall into?

Category 1 Site Owners
  • Our website is critical to our business operation.
  • Our website needs a redesign.
  • To perform efficiently, we additional features now or in the future.
  • Our website must comply with accessibility and/or GDPR legislation.
  • Our website is in active development.

Recommendation: Drupal 8 Re-platform (Click or keep scrolling)

Category 2 Site Owners
  • We have no plans to develop further features.
  • We will retire the site in the next 12-24 months.
  • Our site content and design will remain the same for a number of years.

Recommendation: Drupal 7 Long Term Support program (Click or keep scrolling)

Category 1 Site Owners:

Drupal 8 replatform 

To help you consider what approach to take, consider which of the next set of categories your site falls into. Each results in all the benefits Drupal 8 offers, but takes a different journey to get there.

Level 1/3: Your site is great as is.

Your site functions with minimal issues. You want to spend little time planning and you're migrating for security reasons.

Level 2/3: In need of a refresh.

You need a visual refresh and to evaluate some features, but on the whole, your site operates just fine.

Level 3/3: Time for a big rethink.

Your site doesn't meet your requirements or business goals. It's time for a big rethink.

Recommendation: Lift and shift £

Maintain the same functionality and look-and-feel, but with a new Drupal 8 CMS.

Steps: A Drupal 8 migration.

Recommendation: Minor upgrade ££

A solution similar to your existing site, with a design refresh.

Steps: Short planning phase to deliver new wireframes, creative design, and a Drupal 8 migration.

Recommendation: Major upgrade £££

A solution significantly different to your existing site with a totally new design.

Steps: A discovery, definition, and full design process before the Drupal 8 migration.

Category 2 Site Owners:

Drupal 7 long term support

Staying on Drupal 7 is an option only if you subscribe to extended support, commercially available security updates are made available via a subscription model. This will be available until 2024.

Additionally, patching of Symfony and PHP will be necessary. Over time this option becomes less attractive since innovation is not here, the burden to maintain a secure site will grow.

What about Drupal 9?

Drupal 9 was released June 3rd 2020, built from the final version of Drupal 8. It can be considered a housekeeping release. The release removes features no longer necessary and any “deprecated code” to maintain compatibility with key underlying third-party systems like Symfony. These third-party systems that are also benefiting from security and performance updates. These changes are all centred around keeping pace with the modern web.

Moving to Drupal 8 means you are ready for Drupal 9. Once a majority of modules are ported to Drupal 9, many of which already are, only then should you update to 9.

If you migrate to Drupal 8, ensure your new site does not reference features deprecated in Drupal 9. If you do this, moving between Drupal 8 & 9 will efficient and return great value.

“Moving between Drupal 8 & 9 is the easiest upgrade in a decade.”

Drupal 8 migration audit

When deciding and planning for a migration, you must audit and consider the following:

  • Integrations and 3rd Party features
  • Bespoke modules and design
  • Front end styling and customer experience
  • Live data systems
  • Data housing and quality
  • Page and content structure, volume, and quality
  • Back office processes
  • Workflows and approval systems
  • Security
  • Accessibility

It would be a missed opportunity to not tell you that we offer this service as both an initial review and an extensive audit. If you require these services, please inform me of your concerns and website address on our contact page.

Building a business case for a Drupal upgrade

Once you have identified the risks of Drupal 7, you may need to convince your colleagues, superiors, and peers. We have developed business cases for Universities, the Public Sector, Membership bodies, Legal Professionals, and Not-For-Profit organisations.

The crux comes from the opportunity deficit. While the risks of security and accessibility are clear to most, the opportunity deficit is created first by your technical knowledge, and finally by your creative application. Having been in the depths of Drupal since the beginning, we know the hidden potential of Drupal, and as such, can help you identify the business-critical opportunity a migration can bring.

Useful links

University of West London D7 to D8 Migration

Drupal 7 Roadmap on Drupal.org

Founder of Drupal, Dries' Drupal 7, 8 and 9 Blog

Accelerated Drupal Migrations with CTI Digital

Jun 10 2020
Jun 10

Welcome friends, once again, to our long-running blog feature covering the best modules available for Drupal 8. Many of our past module favorites have made their way into the award-winning Rain distribution which we debuted last year at Drupalcon, Seattle.

This edition will cover every project included with the Rain distribution with notes on how we use the module. The first heading groups all the modules we label as “Essentials'” for most Drupal site builders. The second list covers other modules we package with Rain that also highly recommend.

As usual, if you have any questions or feedback hit me on Twitter at @drupalninja.

Essentials

Paragraphs Browser module used in Rain

  1. Admin Toolbar (Beginner) - The admin toolbar is a simple module that adds rollover menus to the Drupal admin experience.
  2. Component Libraries (Intermediate) - This module is a must-have if you are doing custom theming development. We leverage this module in our Rain theme to map Drupal templates to their corresponding Pattern Lab component.
  3. Field Group (Beginner) - This module lets you organize fields into tabs, accordions, etc. to give your content editors a better experience. All of the content types provided by Rain Features use the same groupings under the following headings: “Basic”, “Summary”, “Content”, and “Taxonomy.”
  4. Googalytics - Google Analytics (Beginner) - This module replaces the former Google Analytics module. Its purpose is to give administrators the ability to easily add basic visitor tracking.
  5. Linkit (Beginner) - The LinkIt module gives you an autocomplete popup inside of Wysiwyg for adding links.
  6. Metatag (Beginner) - Maintained by Mediacurrent’s very own Damien McKenna, this module lets you configure all of your meta tags for SEO purposes. We have the meta tags field enabled on our content type features by default, which skips a step when you need to customize them on individual pages.
  7. Node Revision Delete (Beginner) - By default Drupal core does not do anything to pare back old revisions. This can be a problem on larger sites as well as sites that use Paragraphs which act as a multiplier for revisions. This module provides a simple solution in that it allows admins to discard older revisions automatically.
  8. Paragraphs / Entity Reference Revisions (Beginner) - Our team uses Paragraphs extensively which we tie to Pattern Lab components in the Rain theme project. Paragraphs enable editors to create robust pages that rely on structured content. The advantage of this approach is that content can be more easily deployed across multiple channels such as a decoupled Frontend.
  9. Paragraphs Browser (Beginner) - One of the significant features is a better UX with custom thumbnails for each Paragraph feature we offer in Rain Features. We believe this gives editors a much better experience when using Paragraphs.
  10. Pathauto / CTools / Token (Beginner) - The Pathauto module lets you set up clean alias patterns for all of your content. If you want all of your blogs to have the path /blog/[title of the blog with hyphens instead of spaces] - this will be the module that you use.
  11. Redirect (Beginner) - Most new sites need to incorporate 301 redirects for old page URLs. The redirect module gives site admins an easy interface for creating those redirects in Drupal.
  12. Search API (Intermediate) - The Search API suite of modules is a fantastic way to configure your site searches. Our Rain distribution pre configures a simple site search out of the box.
  13. Simple Sitemap (Intermediate) - A pretty easy to configure module for creating XML sitemaps for search engines.
  14. Webform (Beginner) - This module makes it easy to create forms on your Drupal website. Rain ships with 2 integrations out of the box: 1 feature that adds Webform as a Paragraph, another feature that supplies a Webform content type.

Top Picks From Rain

These modules make all the difference to improve your content, media, and theming experience. They come pre-configured with the Rain distribution.

“List View” paragraph using Viewsreference module

  1. Address (Beginner) - In our Rain distribution we use the Address field with the Geolocation module to create a Map Paragraph. This allows authors to easily place a Map anywhere on a page.
  2. Allowed Formats (Beginner) - This module lets you define allowed formats at the field level. We use this module to configure an “Embed” paragraph strictly for 3rd party embeds.
  3. Block Field (Beginner) - One of our newer paragraphs features uses this module to render a Block within a paragraph. This allows editors to have a consistent experience for how they construct a page.
  4. Geolocation (Beginner) - The Geolocation module makes it simple to add a point on a map and have that map render in a field. As mentioned previously, we leverage this module in our Map paragraph feature.
  5. Moderation Sidebar (Beginner) - The moderation sidebar adds improved UX for modifying content states by integrating moderation into the admin toolbar area.
  6. Multiline Config (Intermediate) - This is a small utility module we use with Rain to allow config to wrap multiple lines, which is a huge help when managing Webforms.
  7. Scheduler (Beginner) - The scheduler module lets you schedule the publishing and unpublishing of your content. We have this feature integrated with our Rain content types by default.
  8. SVG image (Beginner) - The SVG image module allows SVG files to be used with image formatters. Our team often uses SVGs as the main image within a card component.
  9. Taxonomy Access Fix (Beginner) - This project addresses the fact that core Taxonomy doesn’t have granular enough permissions. The Taxonomy Access Fix module provides additional permissions to fill in the gaps.
  10. Twig Tweak / Twig Field Value (Intermediate) - These theming utility modules add functions to Twig to make it quicker and easier to theme in Drupal.
  11. Video Embed Field (Beginner) - This module is used in the Rain distribution to provide a Video media type that can support popular 3rd party services like YouTube.
  12. Viewsreference (Beginner) - The Viewsreference module gives editors the ability to select a View from a field. The Rain profiles adds this field to the “List View” paragraph type to give editors the ability to embed a View anywhere on the page.
  13. Yaml Content (Advanced) - This module is used by developers to stage sample content. Mediacurrent’s team uses Yaml Content during development to construct a consistent “state” that makes collaborative development faster and easier.

Be sure to visit the Rain distribution page on Mediacurrent.com for more information on how to get your Drupal project up and running in under 30 days with our team of talented designers, strategists, and developers. The Rain open source platform adds security, editorial enhancements, SEO and content features that save weeks of development time. 

Jun 05 2020
Jun 05

In anticipation of the June 3rd launch of Drupal 9, I spent the weekend a week previous to the launch dusting off the Drupal module I'm most famous for: the Pirate module! What does it do, exactly? Like the WP extension, the Pirate module changes your site's content to pirate-speak on September 19th, International Talk Like a Pirate Day. I took the tagline ("Ah, Squiddy! I got nothing against ye. I just heard there was gold in yer belly. Ha ha har, ha ha ha har!"), which I buried in the configuration, from a non-pirate, sea captain Horatio McCallister. (Spoiler alert: He's not even a real sea captain.) It adds a text filter (previously known as an input format) to whatever field you specify, and on September 19th, that field's content is changed into various pirate-like sayings, interspersed with yarr! and avast! During Drupal's semantic versioning transition, versions 8.x-1.1 forward are intended to be fully compatible with Drupal 9.

The module started out as an internal ticket at Bryght in 2005. Boris Mann came across the Talk Like a Pirate plugin for WordPress, and since both Drupal and WordPress are written in PHP, he wanted it ported over. I took the ticket, 45 minutes before a colleague saw it and, almost 15 years later, it serves as the project I use to keep up with Drupal internals. Thanks to a patch from Snehal Brahmbhatt, later confirmed by a robot, I am able to legitimately claim that the module has full Drupal 9 compatibility. (Unlike the move from Drupal 7 to 8, Drupal 9 is an update, not a rebuild.) It has had an official release for all versions of Drupal since 4.6.

Over the weekend of updating the module for D9, I caught wind of DrupalSpoons, and without fulling realizing the implications, I applied to have the Pirate module mirrored there. (Moshe was excited!) After reading the DrupalSpoons announcement, I understood it to be an experiment in using GitLab as the issue queue and repository platform more directly than the Drupal core and contributed modules projects, which uses GitLab as an underlying provider for their official repositories. As long as code and issues are synced between the two, I don't have a problem pushing and responding in both spaces.

I'm looking forward to September 19th this year and years to come. Yarr!

Jun 03 2020
Jun 03

Drupal 9 will be launched today. After so much hard work, collaboration, anticipation and excitement, it is finally here.

Although a lot of discussion is happening around the upgrade and possibilities it brings along, the final product can only be as good as the process itself.

The good and important news is that moving from Drupal 8 to Drupal 9 should be really easy — radically easier than migrating from Drupal 7 to Drupal 8.

As a site owner, here’s what you need to know about the new release and what to take care of to make the process easier without many glitches.

The Drupal 9 Release and Timeline

The goal of Drupal 9 is to make it an easy upgrade as much as feasible from Drupal 8. Unlike most of the previous upgrades, D9 will be different in terms of:

  • Updates of dependencies to versions that stay supported.
  • Removal of our own code that we deprecated with removal before Drupal 9's release.

The new release will be a cleaned-up version of Drupal 8. Built on the same code base with deprecated code removed and third-party dependencies updated, Drupal 9 is not a reinvention of Drupal.

a horizontal table with Drupal versions

The next question is what happens to Drupal 7 and 8, then?

One of the major dependencies of Drupal 8 is on Symfony 3. Since Symfony 3 enters the end of life in November 2021, Drupal 8 support will be lifted around the same time. A long-term-support (LTS) minor release of Drupal 8 will be released alongside Drupal 9 and supported until November 2021.

No new features will be added to Drupal 8 and no new minor releases will be made available of Drupal 8. It will only receive patch releases after which.

Drupal 7 will also stop receiving community support after November 2021.

Data migration features in Drupal core to move from Drupal 7 to Drupal 9 will be active until then since they are required for a stable migration. 

The Upgrade and The Tips

The only caveat is that you need to manage is the "deprecated code". Here’s what you need to take note of, for an easiest upgrade experience to Drupal 9:

drupal 9.0 api

  1. Keep Core Up-to-Date: As mentioned above, Drupal 9 is Drupal 8.9 - deprecated parts plus dependencies updated.

    If your site doesn't use deprecated code that is scheduled for removal in Drupal 9, your upgrade to Drupal 9 will be easy. In fact, it should be as easy as a minor version upgrade (like upgrading from Drupal 8.6 to Drupal 8.7).

  2. Keep Modules Up-to-Date: Although Drupal 9 will not have new features (other than those provided by updated dependencies). While most modules will improve Drupal 9 compatibility, to ensure you don’t lose them in the upgrade, keep them updated.

    The key benefit of Drupal 9 over previous versions is that the platform will be supported with security fixes much later after support is lifted from 8. For contributed modules, the pace of Drupal 9 updates will depend on the module maintainers.

  3. Check Custom Codes for Deprecation: In case of any custom code on the site, you can use the deprecation checking and correction tools and fix issues locally. Tools you can use to check code depreciation:
    1. Drupal Check (read more her about PHP version compatibility check
    2. Rector (Read more about Rector here)

      Further, you can also use an IDE or code editor that understands deprecations (@deprecated annotations particularly) or Drupal 8’s branch of Upgrade Status for full site reporting.

What is Deprecated Code?

Deprecated code is referred to as the functions and API’s which are being replaced with new and better versions. In the journey from Drupal 8 from Drupal 9, you will experience API changes, with the new implementation is already present in core along with older one. We have to replace older code/API usage with the new.

Here is an example of the deprecated function:

* @deprecated in Drupal 8.5.0 and will be removed before Drupal 9.0.0. * Use \Drupal\Core\Messenger\MessengerInterface::addMessage() instead. */ function drupal_set_message($message = NULL, $type = 'status', $repeat = FALSE) { @trigger_error('drupal_set_message() is deprecated in Drupal 8.5.0 and will be removed before Drupal 9.0.0. Use \Drupal\Core\Messenger\MessengerInterface::addMessage() instead. See https://www.drupal.org/node/2774931', E_USER_DEPRECATED); $messenger = \Drupal::messenger(); if (isset($message)) { $messenger->addMessage($message, $type, $repeat); } return $messenger->all(); }

In above example the function drupal_set_message is deprecated and has to be replaced with:

\Drupal\Core\Messenger\MessengerInterface::addMessage()

Ways to Find and Fix Deprecated Code in your Drupal Project

As mentioned above , you can find and fix your deprecated code in the following ways:

  1. Drupal Check: It's a library developed by Matt Glaman. Check the git code here. For installation and usage, you can refer to the readme. 
    In case you want to install using Composer, prepare using composer global require mglaman/drupal-check. You can also read more about the composer check
    1. Get into your project/Drupal root directory
    2. Choose the module you want to check for deprecations
    3. Run drupal-check --help for help items. Here, I am using watchdog_prune module for demonstration.
      run : drupal-check -d watchdog_prune
      The output will be something similar to the image shared below:
      deprecated-code-1-srijan
    4. You will, now, have the report of deprecated code to fix.
    5. Let say it is giving us File src/Form/WatchdogPruneSettings.php containing issue : Call to deprecated function drupal_set_message(). In this case just navigate to the body of function as in this case drupal_set_message()

      You will notice that the the documentation under red box reads that the function is deprecated and what we need to do instead
      Ways to Find and Fix Deprecated Code in your Drupal Project
      Now replace the current code with the recommendation and you are done.

2. Drupal Upgrade Status Module: This module checks the list of projects you have installed and shows their availability for newer versions of Drupal core.
  1. Use the Upgrade Status module form
  2. Download and install module using composer: composer require drupal/upgrade_status
  3. Install the module and navigate to URL using admin user: /admin/reports/upgrade
  4. You can run a complete project/ individual module scan
  5. Fix the deprecated code in the same way as mentioned above.

Wrapping Up

Because Drupal 9 is an extended version of Drupal 8, for site owners, this means that it should be much easier to upgrade. But keeping custom codes and module updated needs to be meticulously planned.

Have questions around Drupal 9 upgrade and how it might impact your site? Experts at Srijan are all ears, connect with us to chalk out the right course to Drupal 9.

Jun 02 2020
Jun 02

End of life (EOL) software is a very real problem. Whether your business is using ecommerce and customer relationship management systems across multiple platforms or relying on basic scheduling and accounting software, you will at some point reach a technological expiry date.

When a system reaches end of life, the creator/owner of the software/technology no longer delivers support services for the product. That can include technical support, hardware or software upgrades, bug fixes, security patches, or feature development. In short, the system gets abandoned by its owner. 

Software becoming obsolete can cause all sorts of problems. Here are five risks to your business in running EOL software:

1. Security

End of life technology receives no security updates. No bug fixes. No patches. No monitoring. Your technology is dead in the eyes of the creator. That means your security is completely compromised, not only for the platform that is EOL, but also potentially for any others that connect to it.

At minimum, your system can be accessed and your content or records edited, stolen, or deleted. If you have any user data, financial data, or sensitive information, you could have a major problem. The monetary and reputational cost could kill your business.

A survey of 2,600 CIOs across the U.S. found that the number one concern was keeping systems and information secure. If you take no action on EOL systems, you are essentially condemning yourself to failure in that regard. 

2. Maintenance

Just because the software maker is no longer supporting the software doesn't mean you have no options for supporting it going forward. There are agencies that specialize in supporting older technology. But that support doesn’t come cheap, and integrations into other systems require even more time-consuming and expensive workarounds. 

As a general rule, maintaining EOL software is complex and expensive. Is it really worth not moving due to fear of change?

3. Liability

If you hold people's information and data, you are responsible and liable for it. Using systems that are not properly supported to keep that data secure means you can be prosecuted for not complying with government or industry regulations. Fines, shutdowns, and even jail time are potential outcomes from not acting responsibly with the information you have been entrusted with. 

4. Reliability

If you were a taxi driver, would you willingly drive an old car that is no longer maintained and has sporadic issues? Of course not. That’s because your livelihood relies on the economics of your vehicle. 

But that is what you are doing if you continue with EOL software. Old software is less reliable and more prone to failure. Even if you are able to find people who will work on it for you, it's going to cost a lot more money, because it takes much more time and expertise. 

And if it connects to other systems, be prepared for much more testing time to ensure that all the variables across all systems are working properly. Because there's no guarantee that they will.

5. Cost

EOL software costs more, whether it’s through lost/stolen data, updating and maintaining with third parties, legal liabilities, or lost revenue from downtime or issues. 

The sticker price on a new system can sometimes seem large. But the security gained from having well maintained and supported systems is critical. 

One side benefit from moving from EOL software is the opportunity to review your company's entire technology stack/architecture. We often see that when going through the cost and process of moving systems: Other changes are made to improve workflows and processes. These often result in net savings for the business. So not only do they spend less, they eliminate their security risks and improve workflows.

If you have software moving towards EOL, it's essential to look at not only replacing the single system, but also assessing your whole technology landscape for opportunities to make larger improvements.

Conclusion

Ultimately, EOL technology is costly to your business in multiple ways. Most technology providers give lots of notice when one of their products is going to be unsupported. That gives you time to assess your options and determine the path you should take. 

In some cases, it's migrating to a new version or equivalent product. In others, it’s reorganizing your company's whole technology structure and moving away from a system that was holding you back. 

To determine if your system has reached EOL and plan for your next move, check out our End of Life Playbook.

Download the End of Life Playbook (PDF)

Jun 02 2020
Jun 02

End of life (EOL) software is a very real problem. Whether your business is using ecommerce and customer relationship management systems across multiple platforms or relying on basic scheduling and accounting software, you will at some point reach a technological expiry date.

What are the risks in running end of life software?

  1. Compromised Security

  2. Lack of Reliability Kills Innovation

  3. Higher Operational Costs

Acro Media has developed a 6 step action plan for handling software end of life. View it here >>

When a system reaches end of life, the creator/owner of the software/technology no longer delivers support services for the product. That can include technical support, hardware or software upgrades, bug fixes, security patches, or feature development. In short, the system gets abandoned by its owner. 

Software becoming obsolete can cause all sorts of problems. Here are a few of the  risks to your business in running EOL software:

1. Compromised Security

If you hold people's information and data, you are responsible and liable for it.

End of life technology receives no security updates. No bug fixes. No patches. No monitoring. Your technology is dead in the eyes of the creator. That means your security is completely compromised, not only for the platform that is EOL, but also potentially for any others that connect to it.

At minimum, your system can be accessed and your content or records edited, stolen, or deleted. If you have any user data, financial data, or sensitive information, you could have a major problem. The monetary and reputational cost could kill your business.

A survey of 2,600 CIOs across the U.S. found that the number one concern was keeping systems and information secure. By being proactive and not letting your systems reach their end of life, your company is better positioned to ensure that your data, and your customer’s information remains secure.

2. Lack of Reliability

If you were a taxi driver, would you willingly drive an old car that is no longer maintained and has sporadic issues? Of course not. That’s because your livelihood relies on the economics of your vehicle. 

But that is what you are doing if you continue with EOL software. Old software is less reliable and more prone to failure. 

Maintaining EOL software is complex and expensive, and integrations into other systems require even more time-consuming and expensive workarounds. 

Regular updates, bug fixes and support in general goes away at EOL, which makes system maintenance much more difficult. Instead of spending your resources on new tools or building better customer experiences, you are stuck paying top dollar for fixes and updates no longer covered by the software creator.

Which brings us to our final point...

3. Higher Operational Costs

EOL software costs more, whether it’s through lost/stolen data, updating and maintaining with third parties, legal liabilities, or lost revenue from downtime or issues. 

The sticker price on a new system can sometimes seem large and prohibitive from a business point of view. But, consider the consequences of a security breach, or a major bug. The peace of mind  that comes with having a fully secure and supported system that won’t arbitrarily go offline is worth its weight in gold.

Another benefit from moving away from EOL software is the opportunity to review your company's entire technology stack/architecture. If you have software moving towards EOL, it's essential to look at not only replacing the single system, but also assessing your whole technology landscape for opportunities to make larger improvements.

Conclusion

Ultimately, EOL technology is costly to your business in multiple ways. Most technology providers give lots of notice when one of their products is going to be unsupported. That gives you time to assess your options and determine the path you should take. 

To help you assess your options download our 6 step action plan for handling software end of life.

Download the End of Life Playbook (PDF)

Editor’s Note: This article was originally published on June 2, 2020 and has been updated for freshness, accuracy and comprehensiveness.
Jun 01 2020
Jun 01

Many organizations are running into the challenge of managing content on their multiple websites for gaining centralized control and ensuring its secure flow.

Taking a piece-by-piece approach and allocating teams to work on each site separately drives the higher cost of maintenance, development, results in complex infrastructures, and inefficiencies in the process.

While content cannot be shared and shipped using CMI tools unlike configurations, Drupal modules can be utilized for sharing content among different sites or different instances of the same site.

This blog sheds light on the features that enterprises should not overlook while leveraging Drupal modules and also examines the benefits & limitations of the Entity share module and the cases in which it makes the biggest difference.

A Cost-effective Solution to Manage Content Across Sites 

Entity Share module helps enterprises achieve a workflow where subsites of a multisite architecture can share a piece of content across without disrupting the workflow at their respective ends. Besides, it also keeps UI experience and cost-effectiveness in check.

The module works for a setup where each of the sites have different databases. It provides easy means to share entities like nodes, taxonomy terms, media, etc on the basis of endpoints obtained from the JSON:API module via basic authentication.

 

Note- The websites sharing content among each other are designated by the terms, Server, and Client. The server (site) being the one from where content is shared and the client (site) is the one that takes in shared content.

Installation and Configuration Process of Entity Share Module

Follow these steps to install and configure the module-

  1. The entity_share module of desired version might be installed either via composer using
  2. Thereafter the module needs to be enabled using the drush command “drush en entity_share”.

  3. Next step is to create channels on the server site containing exact data to be exposed from its end. Channel configuration can be done after enabling the entity_share_server v.i.a command “drush en entity_share_server” which is a submodule present within entity_share. Additional filtering and sorting rules can be set on these channels as required after navigation through

    Configuration-> Web Services-> Entity Share-> Channels.

    text fields in white backgroundThe specification of an authorized user is a must to access this channel. 
    text fields in white background
  4. The client site, on the other hand, contains remote data that comprises the remote/server URL that it needs data from and authorization details like user and password to connect to the server which is provided after enabling the submodule entity_share_client using command “drush en entity_share_client”. Note this module needs to be enabled on the site that will pull shared content.

     

    Navigate to Configuration-> Web Services-> Entity Share-> Remote Websites and configure the remote settings. Ensure that the username and password in the Basic Auth section is the same as the credentials of the user that has access to entity share channels on the server end configured earlier.

    text fields in white background
  5. After successful authentication, all the shared content (from server end) will be available to the client site at [client_base_url]/admin/content/entity_share/pull to be pulled and displayed at its end. 


    This provides an added advantage to the client-side where it can accept the shared content only after complete verification. The shared content simply does not get created as soon as the server shares it.

    Moreover, the interface that the module provides for the entities to be pulled is user-friendly and easily understandable. It clearly depicts newly created and already pulled content along with its synchronization status. In case the content after being shared and pulled gets edited either at the server or client-side, the status gets immediately updated.

text fields in white background

Use Case of Entity Share

We implemented Entity Share module for a client project 

Recently Srijan came across a requirement where one of its established clients had local websites in regional languages distributed across many countries in the world.

Our main objective was to provide them with a solution where the administrator or central authority would be able to share some content like news updates, press releases, etc from the main/corporate website without affecting the rest of the content at each end. 

Additionally, a necessity of central control over each of the shared content/nodes was required where any change on the main site would be available on the client end to be pulled again or re-synchronized. 

Similarly, if a client site made any change on the content at its end, changes would appear on the corporate/main to be synced. The entity share module was best suited for such a scenario. 

We configured channels and remote sites as described above and the functionality was achieved. One of the custom functionalities added was to set the default status of the node being pulled into the Draft state so that the content editor can review the same before publishing. 

Despite the fact that Entity Share module is not yet identified as secure since a lot of inaccessible data is exposed using JSON:API endpoints, we implemented it for the client project. 

Because an extra security layer can be implemented to the web server configuration level by blocking requests from unwanted sources and allowing only trusted sources to fetch data. No third party expensive integrations were required. It matched with the clients’ requirements and also simplified our process of adding custom functionalities to it.

Benefits of Entity Share Module

It offers the following benefits-

  1. Authorized access- The module provides content exposure to a site ensuring authentication. Without proper authentication, no site can have access to the channel data exposed from the server website.
  2. Enhanced security for verifying content- The client site has a choice to pull data from the available list of content shared with it. This allows an extra layer of security that allows the administrator/editor of the client site to verify data at its end before synchronizing it. A link to the content/entity being shared is available beside each item in the list of entities present in the respective channel.
  3. Different versions to detect changes, if made- The module lets you view the difference between the already pulled entity and the entity on the server end, in case anyone of them gets changed.

    Given this, you have to install a module called diff to let you view revisions of an entity. Although the module has issues depicting differences in the reference fields; developers have an opportunity here to contribute to the community by finding an appropriate solution to the same.

  4. Multilingual support- Translated entities may be shared among sites provided the language is configured on both the ends. Even in the case where the default language of the server and the client site is different, this module is appropriate to use. 
    The client site may add appropriate translations based on the pulled content at its respective end.
  5. Auto-creation of referenced entities- All the referenced entities are auto-created based on UUID when a content/entity gets pulled if not present on the client end. Hence referenced paragraphs, images, and media that contain references to such fields need not be present on the client end before pulling content. They will be automatically created and linked.
  6. Clean and simple user interface- Lastly, the UI interface that entity_share provides for pulling/synchronizing content is easy to use. The entity pull access might be given to a specific user/editor of the website without developer intervention, once configured properly.

Limitations of Entity Share Module

Like other modules mentioned above, entity_share has limitations too:

  1. The entity when pulled on the client site, is displayed in the same state, i.e., published/unpublished as that on the main/server website. It implies that the module doesn’t obey customized editorial workflow and moderation process. Editors can’t take appropriate action of passing content through various workflow states such as draft, ready for review, approved and then published.

    For example - A published content when pulled is directly assigned a state from the pulled reference i.e published rather than in draft mode.

    However, there is a possibility to change this functionality by subscribing to the event

    \Drupal\entity_share_client\Event\EntityListDataAlterEvent

    provided by entity_share_client module to alter the status of the content being pulled.

    Likewise, other events are also available in the module that can be used to   tweak any functionality as and when required.

  2. The revision history of the node gets affected after pulling an already pulled entity that has been edited on the client end as well. This is because the changed timestamp that the JSON:API endpoint provides gets added to the client-side as it is after synchronization.

    This also needs to be fixed in the module to allow pull operations without affecting revisions on both ends. You can find another related issues  too.

Instead of using exorbitant and ineffective Drupal modules for content management across the various sites, give a try to Entity share module, it is a cost-effective solution that can be optimized as per enterprises' requirements.

Looking for a similar solution? Drop us a line and our team will get back to you.

May 28 2020
May 28

This month’s SC DUG meeting featured Will Jackson from Kanopi Studios talking about his virtual background and office.

Before everyone was learning to use Zoom virtual backgrounds, Will had built out a full 3D room for his background, including family pictures and other fun details. He talked about what he built and may inspire you to try some more personalized than swaying palm tree and night skies.

[embedded content]

If you would like to join us please check out our up coming events on MeetUp for meeting times, locations, and remote connection information.

We frequently use these presentations to practice new presentations, try out heavily revised versions, and test out new ideas with a friendly audience. So if some of the content of these videos seems a bit rough please understand we are all learning all the time and we are open to constructive feedback. If you want to see a polished version checkout our group members’ talks at camps and cons.

If you are interested in giving a practice talk, leave me a comment here, contact me through Drupal.org, or find me on Drupal Slack. We’re excited to hear new voices and ideas. We want to support the community, and that means you.

May 28 2020
May 28

Mediacurrent Multisite+ logo

One of the most powerful features with Drupal is the ability to create multiple site instances from the same base platform. The Drupal multisite system is great for managing university departments, government agencies, and corporate microsites wanting to standardize design and features across many sites.

The problem with the standard multisite setup is that it’s not easy to spin up new sites without the help of a developer. Mediacurrent makes this process painless with our new launch tool for multisite! The Mediacurrent Multisite+ solution allows site administrators to create a new site from a simple web form located in their website’s Drupal 8 admin interface. Creating a new site instance now takes a matter of minutes. 

Read on to find out how this works, or contact us now for a free demo.

Here’s How Multisite+ Works

We will get you up and running in 3 steps. For our initial launch, we support Drupal 8 on Pantheon.io’s hosting platform with Acquia support in Q3, 2020 and Drupal 9 coming soon. 

Step 1 - Configuring the Application

The first thing we will do is set up the application environment to be compatible with a multisite environment. Drupal 8, by default, is built to be multisite-compatible by allowing configuration to be re-used across multiple site instances. 

For the Pantheon hosting environment, we will create a custom Upstream from the desired Drupal 8 application. Our Multisite+ integration will leverage this Upstream to provision new sites, each with their own dedicated resources.

custom upstreams for Area Alert and Rain distributions

Example of Upstreams created by Mediacurrent

Step 2 - Setting up Automation

As a next step, our DevOps team will set up the automation that allows the Drupal application to interact with the hosting environment. This process does the “heavy lifting” of actually spinning up the site instance and running the installation process.

Step 3 - Enabling the Multisite+ Module

Finally, we will add and configure our Multisite+ module for the primary Drupal 8 application that needs to kickoff new site installations. This module connects your application to the automation that does the actual work to set up your new website instance.

When we’re done with this one-time setup, a new form becomes available that administrators can use to initiate a new website build.

Mediacurrent's Multisite+ form setup in Drupal

Multisite+ form example

And that’s it! Now your administrators have the keys to create new campaign sites, microsites, or any other type of site that leverages an existing Drupal 8 application.

Ready to get started?

Mediacurrent would love to work with you to better enable your teams to manage multiple Drupal websites. For more information on how to get your organization set up, please visit our contact page or chat with us right now (see bottom right corner of the page). We would be happy to talk more about your project or schedule a demonstration.

May 26 2020
May 26

Many costs are associated with developing a new ecommerce site or migrating from an antiquated setup to an upgraded version. And unless you work in the thick of ecommerce development every day, you likely don't know what questions to ask to ensure you’re getting the full picture.

This article explains what your typical expenses will look like and makes a few suggestions about how to approach budgeting for this undertaking.

Open Source vs. SaaS: A Comparison of Costs

You need to decide whether you will go with open source or a Software-as-a-Service (SaaS) platform to power your site. The cost of doing business is very different with each model.

An open source ecommerce framework has the expenses front-loaded. You pay for development time and configuration costs, and then the final product is yours to own and manage—license-free. 

A SaaS approach is quicker to get live and has lower costs up front. But then you pay an annual license fee and give a percentage of your revenue to the platform with each transaction made. 

Start by doing some easy math. Calculate three percent of your average annual sales. With an SaaS approach, if you sell $50 million online each year, you'll pay $1.5 million in revenue share (on top of licensing fees). If that is an acceptable cost of doing business and allows you to “set it and forget it," then SaaS is likely the right way to go for you.

But if you're a business that needs or wants more control of the front- and back-end experiences, you can use that three percent as a starting point to decide how to shape and invest in your online architecture. With open source software, you’d invest this money up front in year one. In years two and beyond, expenses taper down to about 15 percent of this initial investment annually to keep operational. 

Complete this exercise in relation to your own revenue and figure out what your working budget would be to get started. If three percent leaves you with peanuts, I’d suggest searching out a DIY platform-first ecommerce tool and seeking the help of an independent contractor to start generating revenue online. Your year-one investment may look closer to 50 percent of your annual online revenue to get where you need to be. 

Try to avoid thinking of this as an expense. Instead, think of how much money you’re going to spend to get a return on investment. How long will it take you to earn that ROI? Are these expectations realistic?

How to Budget for an Open Source eCommerce Architecture

Moving from an existing platform (typically SaaS or home-brew) over to a fully open source, headless ecommerce architecture setup incurs costs like:

Planning

Planning is the backbone of a successful ecommerce development project. If you don’t spend the time and money to work out that foundational blueprint, you will get a half-assed outcome that will likely cost more than you were initially promised.

On average, the planning processes for building a substantial ecommerce site for businesses that generate $50 million or more in revenue take 10 weeks of work and cost about $50,000. 

Planning is the absolute MUST-DO on your list. If you skip it, you may save $50,000, but your project will spend it on the other end trying to figure out who meant what because you flew cheap and blind. 

Ask if your proposed agency completes the following activities in their planning phase: 

  • Visualization / live prototyping 
  • Conversion planning, persona development, user journeys 
  • API integration planning, platform and integration reviews and selections 
  • ERP / product mapping 
  • Server and dev ops planning, security, performance and scalability planning

If you’re being pitched the above list, and you can see working past examples of blueprints such as these, then you’re spending your money wisely and you have a shot at getting this project right the first time. 

TIP: This plan should be detailed enough that you can either take it and build out your new site in its entirety with your on-staff tech team, or take it to ANY agency and have a crystal-clear spec for execution. 

Planning is not conceptual. It is a fully operational blueprint that the engineers have stamped and approved. This is a one time cost and the most essential ingredient in your budget. 

If you can only afford to get through planning in year one, make it a priority and wait for the next round of capital expenditure funding to implement it.  

Creative Design

Designing a new eComm site is the fun part. This phase of the project should be done after planning is fully signed off on. That’s because planning allows ideas to flow and evolve. And changes in functionality dictate front-end experiences. 

Your design phase will vary in price depending on what you want to see mocked up versus just built by the team without your input. Set aside $25,000 to $45,000 to make sure your creative phase reflects the quality of your business accurately. This is a one-time cost.

Here are a few tips to ensure that you’re spending your money wisely:

  • Beware of agencies that propose mockups for 30 pages within your new ecommerce site. This is a waste, a cash grab, and a sign of an inexperienced development team.  
  • Limit mockups to the home page, catalog landing page, product details page, and a general content page. However, if you have some funky options in your cart and/or checkout process, design them, too. 
  • Don’t bother fully mocking up creative designs for responsive options. If you’re dead set on seeing the mobile experience, start with the homepage on phone only and evaluate from there. 
  • Don’t waste time or money creating full mockups for each page. You can always add more designs as you go, if needed, or designers can provide elements to improve designs on single pages.
  • Complete and approve the home page design fully first before moving onto any “internal” templates. You don’t want rework across multiple designs. 
  • Use a web design agency, not a design agency. There are specifics for designing to web standards that don’t apply to companies that deal in logos, brands, and print work.

Sprinting / Development

Your project team should work with you to break your planning into stories, block these stories into epics, and group these epics into sprints. You’ll then have an idea of how many sprints you’ll need to get live.

Typical costs for sprinting range from $20,000 to $60,000 a month for the lifetime of the build cycle, which is usually six to 12 months. After this investment, you have a feature-rich ecommerce setup to push live. (Remember: These expenses are front-loaded. After this one-time cost, you own the site and don’t have to pay licensing fees or share your revenue).

Sprinting costs depend on velocity. That is, how many bodies can we afford to put on this development until the sprints are done? If you have $20,000 a month to spend for six months, you’ll get through $120,000 worth of programming or about 600 hours (give or take per agency).

That’s a decent amount of programming time for a version one go-live. You can alter the velocity, or speed with which you move, by altering your spend. After you get to that first launch, you may have the option to taper down resourcing (i.e., output) and slow spending over the following months.

Additional Features or Ongoing Support

Your site is not a static business channel. You’ll need to budget for continued rollout of new ideas, features, integrations, and changes. We often work with companies to train an in-house developer and take the agency expense out. With an open architecture and open source ecommerce setup, the ongoing costs are fully in your control.

Plan out your monthly spend over 12 months to figure out what’s realistic to your ROI, and if you should start right away or take a break.

TIP: Budget for  at least a year of ongoing expenses at whatever rate you deem suitable if you want to get a little consulting, training, advice, or coding from some experts. Just be sure to align your expectations of output with your willingness to spend.

Third-Party Expenses

Look past your site to see the full picture. What else does it need or plug into that has an annual contract? Account for these costs, too. A few typical additional expenses include:

  • Hosting
  • Server maintenance, security, updates and monitoring
  • Accounting software
  • ERP software / PIM 
  • CRM software
  • 3PL software (shipping, warehousing, labeling)
  • Programmers on staff
  • CSRs on staff 
  • Training and documentation

Conclusion

Your website is not an expense; it's a revenue channel that needs to be flexible and well architected. A substantial investment will be needed to compete online, so make sure you understand the costs involved. 

If you don’t know where to start, chat with a consultant to see if your math lines up with your goals, and then take this information to your internal team. You have options, and they should be clearly laid out for you up front, not presented to you with an invoice when you’re well into development with an agency’s team. 

Inform yourself on the process, not on the programming, and you’ll be in a better position to evaluate the best path forward.  

Click to contact one of our ecommerce consultants

May 19 2020
May 19

How amazing does it feel when you walk into a coffee shop and the barista greets you by name and asks if you’d like the usual? Or when you meet someone you haven’t seen in a long time and they ask about some obscure and specific hobby you once mentioned you had?

These personalized experiences give you the warm and fuzzies. You typically come away from those interactions a fan of the place or person. Heck, if someone were to criticize them, you’d speak up that that's not your experience. And you wouldn’t hesitate to recommend that place or person to others.

At an event a few years ago, I noticed someone who seemed a little hesitant. I introduced myself and invited them to join me at my table, and we chatted a little. We never spoke much after that. But on multiple occasions over the past few years, that person has given me a glowing reference when I came up in conversation. 

Personalization makes us feel valued and understood. And that's how you want your customers to feel. Because if they do, they will buy more and advocate for your brand.

Personalized Marketing Options to Consider

Broadly speaking, there are two ways to do web personalization: with real-time data or historical data.

Real-time data involves using location data to serve up a specific site, content, or offer. Here are a few examples:

  • Using device type or operating system to either manage how content is displayed or make assumptions on product needs
  • Using traffic source to tailor content (i.e., looking at when and what the user came from)
  • Basing promotions on products or services that have proven popular with others

Historical data goes deeper. This involves presenting personalized content, products, or offers based on users' previous interactions. You could look at factors like:

  • The number of orders they made
  • Their average order size
  • The total amount they spent
  • The products they looked at
  • The carts they abandoned
  • The time that has elapsed since their last transaction and/or visit

The options are as vast as the data you have collected. But through segmentation and rules, you can greatly increase the user's odds of converting.

Why You Need to Tread Carefully

Many consumers are becoming increasingly concerned about privacy and data management. You need to ensure that the personalization you supply is helping them in making a conversion decision and not simply showing them how much you know about them.

For instance, your barista asking if you fancy trying the new mocha latte (because they knew you had recently bought one from another brand) is much less creepy than being greeted with, "I heard you’re now into chocolate, so try this new mocha latte." The difference is small, but crucial.

Choose the Right Tools

With the overwhelming array of personalization options, it's important to work with an experienced team that can help guide you. At Acro, we love Drupal, and it can do many entry personalization functions within its platform (much more than most content management systems).

However, if you need to get very sophisticated, then you need a third-party platform. We love Acquia Lift. For features, usability and support, it is unparalleled. If you would like a personalized introduction to Acquia, hit me up and I’ll set you up, personally. 

The Bottom Line

Global research and advisory firm Gartner stated that the three key takeaways on personalization are:

  1. Consumers want to receive personalized help as they navigate the buying journey.
  2. Focusing solely on personalized recognition is potentially detrimental to a company’s commercial objectives.
  3. When it comes to help, consumers prioritize information, a simpler purchase process and saving time.1

Peronalization isn’t the ultimate goal. It’s another tool to achieve whatever your actual goal is, whether that be increased sales, increased order value, increased frequency or brand loyalty. Once you define what your goals are, you can explore if personalization will give the required ROI.

If you would like to have a conversation about your business goals and see if personalization is an appropriate tool for you, give me a call. And if not, if we ever meet out and about, you’re always welcome to sit at my table.

Click to contact one of our ecommerce consultants

1 - Source: Gartner, "Maximize the Impact of Personalization,” April 2019

May 14 2020
May 14

Mediacurrent designer Becky Cierpich recently discussed the UX choices and persuasive techniques used in designing Area Alert, our open source emergency site. Our VP of Technical Operations, Jay Callicott, also discussed the beta release of the distribution and how Mediacurrent has worked with Pantheon to provide a free public upstream and 90 days of free hosting for qualifying organizations looking to develop the site quickly and efficiently for their needs. 

This week, I’m excited to dive into the navigation choices we made for the distribution and how this can be best utilized when you are creating your site.

The Psychology Behind Our Navigation Design Choices

When you think about all of the information your site users need to get through the crisis at hand, you may be thinking about the emergency at hand and the people’s lives at stake. An intuitive navigation and establishing effective communication patterns may not be top of mind right away. However, your navigation should be a major factor into how your site is set up. 

We can empathize with this need and created a navigation on Area Alert that is framed around what your users are looking for when they enter your site; namely, they are focused on fulfilling immediate physiological needs (such as access to food or shelter) one might find in Maslow’s hierarchy of needs. We created a navigation that would meet the basic requirements someone might search for in a crisis.

Along with the design patterns chosen, the navigation follows a Z-shaped pattern in that we utilize negative space to the left of the logo and around the search bar to give breathing room to the top part of the site. As the Gestalt principles in design highlight, negative space can be used to improve composition, which is what informed us to allow for space between elements in the navigation. We followed that with topics most important to users based on reviewing information about past widespread emergencies. For instance, we included sections like Urgent Help after learning about how the public had limited access to information when Hurricane Harvey disrupted typical emergency communication methods in 2017.

Arrows in the navigation are expected visual cues and indicate subpages for the main topics to guide the user to find information most relevant to them. Users who are looking for information regarding a crisis are already in a heightened sensitive state, and ensuring that even the smallest elements of your design align with the expectations is critical in a reassuring experience.

Our Top-Level Navigation Topics

The top-level navigation topics reflect some of the most pressing needs related to the current crisis, especially in terms of public health. We felt it was important to leave space for people to self-select and choose a bucket of topics most important to them because at any given time they may be in various levels of need or explore topics based on different aspects of their lives. A working parent who has a young child may want to explore topics relevant to their child’s virtual learning one day, but the next may want information about how the current crisis impacts their job. 

We also employed digital psychology methods when thinking about the main ideas in our navigation—namely the Fogg Behavior Model. The model focuses on: 

  • Motivation - desire or willingness to do something

  • Ability - possessing the means to do something
  • And a trigger that compels us to take action

In order to understand users’ immediate needs and motivations, we reviewed several government sites, live press conferences, and user comments across social media to identify four main reasons for looking for content:

  • Urgency - Users may have been in a time of need or loss with no time to click around
  • General fact-finding - Users who went this route were typically validating something specific they heard about

  • Timeliness - Users may feel nervous and want to be informed on the latest

  • Authorative/Procedural - Users may be in a position of responsibility looking for guidelines and procedures relevant for their needs (e.g. an employer looking for guidelines relevant to his industry)


In general, we find that people using the site are likely highly motivated to find some of the top-level information, such as Urgent Help. In choosing this and other high-level topics in our main navigation, we have lowered the barrier of entry for users to take action through a consistent layout and sensible categorization of information. 

“Resources For” Dropdown

We chose the personas (Residents, Employees, Employers, and Students) in the Resources dropdown section because our research indicated these users would be the likely ones looking for information. 

In the current COVID-19 crisis, for instance, we know that many people have concerns about their employment situation and may want to know more about their rights. Employers are also an identified site visitor because they may be looking for information about how to keep their employees safe and this information may not be readily available from other sources. 

We also recognize that some people may fit multiple categories. For example, a parent may want to navigate to Residents resources for some topics to better understand overall community issues and to Students resources at other times for topics that impact their child’s education.

Public Health

In the current COVID-19 crisis, public health has been a major issue that site visitors are interested in learning about for their local area. Since mandates vary by locale and are being updated frequently, users may need a place to validate information they may have heard from family or on other channels. 

We developed the navigation to work fluidly based on the emergency at hand, with our current COVID-19 pandemic in the forefront of our thoughts. In other situations, this section may be a navigation item that can be customized to fit other needs for a particular emergency issue. 

All News

As a main level navigation, All News provides users access to timely news content that impacts everyone. We determined this was a necessary navigation item because as much as people may want to self-select, they may also wish to catch up on information quickly without often returning to the site. Adding All News into the navigation allows them to look at information quickly in one set area.

Urgent Help

Like All News, Urgent Help was developed with all personas in mind. We understand that people may be seeking information quickly, potentially experiencing loss or distress with little time or patience. They may not know where to start right away when they have an immediate need and this gives them a quick starting point. And just like the Public Health section, subtopics as part of Urgent Help may change depending on the particular emergency issue being faced at the time. 

We created Area Alert to be versatile, and content editors will be happy to know that if they wish, they can use other components, such as the accordion from the FAQ page, to make their Urgent Help page a quick resource with answers to questions users may have answered right away.

User-Focused Navigation Designed with You in Mind

Mediacurrent, a long-time contributor to open source, is committed to creating community-focused solutions to emergency situations, such as the COVID-19 pandemic currently happening worldwide. We would love to help you with setup or walk you through the demo so it works how you’re expecting when you use it. Likewise, we encourage you to use this navigation strategy as a resource as you develop your emergency management website. In the spirit of open source, we hope this information can prove useful for those seeking direction.

We aspire to help both organizations and municipalities seeking ways to help their communities in any way we can, so please contact us to answer any questions you may have regarding Area Alert.

May 12 2020
May 12

Many people researching Drupal Commerce 2.x for Drupal 8 (or the upcoming Drupal 9) are likely wanting to either remove the extra ecommerce shopping carts or allow checkout for multiple carts. This blog post will explain why we have multiple carts—and why being able to checkout with multiple carts is challenging, but possible.

Why you can have more than one Drupal Commerce cart

First, let’s demonstrate what Commerce 2.x can do out of the box for a single user and is often considered a bug. 

  1. Go to Acro Media’s demo store.
  2. Start out as anonymous and register as a user.
    1. Register here.
    2. Check your email/spam and click a link.
    3. Set your password because you’ll need to log back in shortly.
      Note: Acro doesn’t use your email address used on the account sign up on this site to contact you for marketing purposes. You can opt into marketing materials by clicking the large red help question mark on the right.
  3. Once registered, add something to your cart, and log out.
  4. Add something to your cart and log in.
  5. Go to /cart.

Shopping-cart

If you are seeing two carts, then you have discovered, like many others, that Drupal Commerce 2.x shows multiple carts by design. Drupal Commerce 1.x created multiple carts like this as well, but would only show one cart at a time. In 1.x, you could follow the five steps outlined above, then checkout and your original cart would display.

Why? Because the system will not delete carts. We’re using a simple anonymous session to create two carts in a potentially common edge case.

The pros and cons of multiple carts

Pro Con
  • Customers never lose a cart, even if their use of the site means they have more than one.
  • You could have multiple sellers, enabling a marketplace feature to be built on top of the existing functionality
  • You could enable different checkout workflows (one for digital services, one for recurring services, and another for physical items that require shipping).
  • You could end up with a confusing user experience by making your customers check out multiple times.
  • Payment and fulfillment must be handled separately for different items or different vendors.
  • More than one cart presents a significant visual challenge for designers. In the cart dropdown, for example, how do you should more than one cart? On the cart page, for another example, how do you handle more than one checkout button?

Turning off multiple carts in Drupal Commerce 2.x

There are two relatively simple Drupal modules you can use to show a single cart to a user:

Commerce Combine Carts—If this module is turned on, the multi-cart demo above would not produce two carts.

Commerce Cart Advanced—This module packs a lot of features into it for the crowd of users who want management tools around their multiple cart experience, but it also includes the feature to display only one cart at a time. It was created and is maintained by Acro Media’s senior developer known as krystalcode (Dimitris Bozelos).

Checking out multiple carts, Etsy/Amazon style

The holy grail of marketplace commerce is multi-store and single-checkout. The idea is that you could have a site that features multiple stores and customers could check out once from more than one store. 

According to the original author and former maintainer of Drupal Commerce 2.x, bojanz, you can do this by coding a form that acts like a checkout flow-form, but changes more than one order simultaneously.

However, you also have to consider a number of other issues: 

  • Fulfillment—If the stores are selling physical products, how will these orders appear to the customer and to customer service for each store? Likely, each store would want to only see the products for which they are responsible.
  • Order management—Even Amazon does some weird things with orders for its customers. Often, orders are split up for seemingly no reason, changing order totals and making order management challenging for customers and for customer service.
  • Payment—If you, as the site owner, plan to pay stores from your own bank account, you’ll want to set up a single, site-wide payment gateway and manage disbursement payments to your store owners. If not, then you’ll require each store to have its own payment gateway credentials or some other even more complex setup.
  • Taxes—Assuming you have good solutions for all of the above, taxes will still likely make it very hard to move forward. Tax law is hard in the best of times, and depending on how you take payment, tax rules would need to be created and maintained per store. Solutions like Avalara AvaTax only work per store and can be overly expensive for small retailers.

The bottom line

Basically, you have a few contrib options if you want to manage carts for your customers. But if you want that elusive multi-vendor, single checkout, you’ll have to plan well according to your business needs. Regardless, the flexibility of Drupal’s ecommerce cart functionality is capable of creating the best ecommerce shopping carts out there, you just need to know how to do it.

May 08 2020
May 08

Announcing Our New Training Workshops

Mediacurrent training logo

Here at Mediacurrent, we’re excited to introduce live, online training series. These full-day training sessions will demonstrate how to plan, build, style, and integrate components with Drupal 8. These are hands-on workshops where you will be able to follow along with predefined exercises for a better learning experience.

The Power of Components

We chose to focus our first workshop events on a theming approach that’s been successful for Mediacurrent— and our clients. Contrary to traditional top-to-bottom theming, the component-based approach enables us to build Drupal websites, or any type of website for that matter, by breaking down the UI into self-contained, reusable parts. This presents many advantages over traditional development, delivering robust, scalable, and flexible components that promote reusability and code efficiency.

Workshop attendees can expect to leave these sessions with the tools and knowledge to work on Drupal 8 websites and will be prepared for building great Drupal 9 websites using this revolutionary approach.

Youur Training Lead 

Lead trainer Mario Hernandez is a regular speaker and trainer at tech conferences with over ten years of experience as a Front End Developer. His credentials include conducting a series of in-person component-based development training workshops at DrupalCons throughout America and Europe in addition to a recently published ebook: Component-Based Theming for Drupal 8 & 9.

Mario’s personal philosophy as a trainer is to be accessible and available to all students before, during, and after the workshop. To maximize time, attendees will receive detailed instructions on how to set up their training environment.  This ensures our time during training is used to learn about the topic at hand vs. fixing technical issues.  All students will get copies of the training recordings and full access to the training curriculum in an online form.  Our curriculums are constantly being updated and these updates will automatically be available to students at no additional cost.  Finally, all students will get a copy of our latest eBook on Component-based Theming for Drupal 8 & 9.

Ready to get started? 

Visit our registration page to learn more about the course topics and purchase tickets for the Drupal 8 Component-Based Theming & Design virtual training workshop

Mediacurrent blog readers can save 20% by registering with the promo code mctraining20 by Friday, May 15. We hope to see you there!

May 05 2020
May 05

Hands-On Machine Learning With PHP, Part Two

By Liam Wiltshire

Last month, we looked at how we can take our data and, using machine learning, categorize the data by groupings we’d already decided upon—spam, ham, fraudulent, good, etc. This usage is a great way to start, but you might quickly find you want to take things further. Perhaps this means analyzing the data differently, to come up with new relationships you hadn’t previously considered, or maybe you want to improve the accuracy of your results by avoiding some common pitfalls in machine learning. These are the questions we are addressing today, starting with a different approach to machine learning—unsupervised learning.

Decoupling Drupal From Its Frontend System to Use in an Existing Website

By Jack D. Polifka

The ability to create and publish content in real-time without knowing HTML or the ability to program is a common feature of many websites. This capability allows individuals to produce web content regardless of their technical ability. Producing web content is a common feature of many content management systems (CMS). Some websites don’t allow direct creation and publication of content, so a possible solution to address this shortcoming is integrating a CMS into these websites. This article describes how Drupal, a CMS, was added to an existing Symfony website to allow users to publish content in real-time. Implementation details about integrating Drupal into the existing website using Headless Drupal are shared.

Passwordless Authentication

By Brian Reterrer

Passwords are part of our everyday life. You may not even think about them most of the time, that is until you forget one. What if you never had to use a password again? What if I told you it was more secure not to have a password? Would you believe me? Find out why companies are ditching passwords and moving towards multi-factor authentication.

PHP Puzzles: Factorials

By Sherri Wheeler

Each installment of PHP Puzzles presents a small coding exercise typical of those we might encounter in a job interview, or on a coding challenge website. In the following month, we’ll look at a couple of possible solutions for today’s puzzle. Perhaps one of the most common coding puzzles, I recall this one from high school computer class&msdash;calculating a factorial.

Education Station: Anatomy of a Web Response

By Chris Tankersley

Last month, we looked at HTTP requests and how a user agent asks for a specific resource. How do we provide an answer? Web servers send it back in an HTTP response. Let’s look at the parts of a response, how to indicate success or failure, and how to build the response body.

The Workshop: Specification BDD with Phpspec

By Joe Ferguson

phpspec is a package which allows us to use Behavior-Driven Development, BDD, which comes from Test-Driven Development, TDD. When applying BDD, we write our tests first and then only enough code to pass our tests and then refactor and verify the tests still pass exactly as we would with TDD. This cycle continues and is often referred to as red-green development of writing tests that fail and enough code to make them pass, then restarting the process.

History and Computing: Transcontinental Railroad

By Edward Barnard

We’re looking at the background behind the U.S. Department of Justice plan to consider antitrust action against the giants of high tech. We’ll see how ocean transportation gave way to transcontinental transportation. That’s the background we’ll need for seeing how transcontinental transportation became the antitrust action that’s setting a precedent for big tech.

Security Corner: Request Replay Protection

By Eric Mann

One of the most overused terms of security is “token.” It’s used in many different, often unrelated contexts to mean very different things. This month we’re going to discuss one form of tokens—replay prevention nonces—and how to use them.

By Eric Van Johnson

This month, we revisit our Canadian friends, this time we travel north of Toronto, Canada, to the York Region of Canada and the You Region PHP User Group.

finally{}: What’s in PHP Eight?

By Eli White

While much of the world shuts down, the PHP core developers have been hard at work preparing for the release of PHP 8.0 at the end of this year! The feature freeze is in just a few months (July 28th), so this is the exciting time when there is a push to get various features into this momentous release! Let’s take a look at a few of the bigger things currently planned for PHP 8.0.

May 05 2020
May 05

The ability to create and publish content in real-time without knowing HTML or the ability to program is a common feature of many websites. This capability allows individuals to produce web content regardless of their technical ability. Producing web content is a common feature of many content management systems (CMS). Some websites don’t allow direct creation and publication of content, so a possible solution to address this shortcoming is integrating a CMS into these websites. This article describes how Drupal, a CMS, was added to an existing Symfony website to allow users to publish content in real-time. Implementation details about integrating Drupal into the existing website using Headless Drupal are shared.

This article was originally published in the May 2020 issue of php[architect] magazine. To read the complete article please subscribe or purchase the complete issue.

May 04 2020
May 04

 

Area Alert Drupal distribution logo

For the past several weeks, the Mediacurrent team has spent hours collaborating on an open source emergency site. In a recent Area Alert post, expert designer Becky laid out the UI design approach to creating websites dedicated to emergency responses like the COVID-19 pandemic. Becky walked through user scenarios and digital psychology that inspired her design choices. 

This week, we are proud to announce the beta release of the Area Alert distribution! Mediacurrent has partnered with Pantheon to create a free public upstream along with 90 days of free hosting for qualifying organizations.

What’s In The Box

The goal of the Area Alert project is to enable organizations to rapidly develop and deploy emergency websites in a matter of hours or days, not weeks or months.

area alert demo page

Explore the full demo at https://areaalert.mediacurrent.com/.

Flexible Components

The first way we help expedite website creation is by giving content editors the tools to easily drop different types of components onto the page. The screenshot below shows you a toolbox of components that can be added to any page.

Area Alert sample content

The Area Alert distribution is pre-loaded with sample content that can help editors quickly get started and provides guidance about how to keep going.

Color Support

The next way this distribution supports the rapid setup of emergency response sites is with the “Color” feature. This feature gives administrators the ability to change the color scheme of the website from the UI.

Area Alert Colors

By giving editors the ability to quickly add branded colors, site administrators will be able to give site visitors more confidence in the authority of the website and more trust in their information right from the start.

Additional Features

The Area Alert profile comes with 4 content types and 15+ components including carousels, FAQs, maps, and media content.

Key features include:

  • Enterprise-level security
  • Fully responsive, mobile-ready theme
  • Fast translation using https://gtranslate.io/
  • Full-text site search to quickly search for a specific topic
  • Out of the box, pre-configured content types such as landing pages and press releases
  • Automated content aggregation for article content with a dedicated landing page and featured news area on the homepage
  • Twitter integration

Getting Started

As mentioned, Mediacurrent has partnered with Pantheon to create a free public upstream. This means that with a free account on https://pantheon.io/, you can fully install the Area Alert profile in a matter of minutes. Pantheon is also offering free elite plans for qualifying organizations. Read more about Pantheon’s offers. Visit the Area Alert public upstream link hosted on Pantheon to get started.

For advanced installations, developers are encouraged to visit the official project page on Drupal.org for more information. The project page also has information about how to submit bugs or join our public Slack channel.

If you would like to use this product but need some help to get started, Mediacurrent is standing by, ready to partner with organizations that need assistance with building out and maintaining their COVID-19 site, or any emergency response site. Contact us for a live Area Alert demo or for more information about our services. 

We’re In This Together

Mediacurrent, a long-time contributor to open source, is committed to helping the community respond to emergencies, like the COVID-19 pandemic, in any way we can. If you have any questions or comments, please contact us for more information. Our hope is that this contribution can help municipalities and organizations better communicate with the public during this difficult time.

Apr 23 2020
Apr 23

We’ve been making big websites for 14 years, and almost all of them have been built on Drupal. It’s no exaggeration to say that Four Kitchens owes its success to the incredible opportunities Drupal has provided us. There has never been anything like Drupal and the community it has fostered—and there may never be anything like it ever again.

That’s why it’s crucial we do everything we can to support the Drupal Association. Especially now.

The impacts of COVID-19 have been felt everywhere, especially at the Association. With the cancellation of DrupalCon Minneapolis, the Drupal Association lost a major source of annual fundraising. Without the revenue from DrupalCon, the Association would not be able to continue its mission to support the Drupal project, the community, and its growth.

The Drupal community’s response to this crisis was tremendous. For our part, we proudly joined 27 other organizations in pledging our sponsorship fees to the Association regardless of whether, or how, DrupalCon happened. I ensured my Individual Membership was still active, and I made a personal contribution.

But we need to do more.

You can help by joining us in the #DrupalCares campaign.

The #DrupalCares campaign is a fundraiser to protect the Drupal Association from the financial impact of COVID-19. Your support will help keep the Drupal Association strong and able to continue accelerating the Drupal project.

The Drupal Association

The outpouring of support has been… Inspiring. First, project founder Dries Buytaert and his partner Vanessa Buytaert pledged their generous support of $100,000. Then, a coalition of Drupal businesses pledged even more matching contributions. We are proud to count ourselves among the dozens of participating Drupal businesses.

Any individual donations, increased memberships, or new memberships through the end of April will be tripled by these matching pledges, up to $100,000, for a total of $300,000.

Please join us in supporting the Drupal Association. Your contribution will help ensure the continued success of the Association and the Drupal community for years to come.

Give to #DrupalCares through April to help the Association receive a 3:1 matching contribution. 

Apr 22 2020
Apr 22

Drupal 9 is rapidly approaching with a release planned, at the time of writing this blog, of June 3, 2020. In addition to much anticipated updates to core (use of Symfony 4.4), there also comes the removal of a ton of deprecated code. This blog will help you prepare for Drupal 9 with answers to your most pressing questions like:

  • Why is code being deprecated? 

  • How will the release of Drupal 9 affect my site? 

  • What's the best way to update a Drupal contrib module to work with Drupal 9? 

Deprecating Code

What is deprecated code? Simply put, code becomes depreciated when it is no longer the best way to achieve the original goal. We deprecate code instead of outright deleting it to provide backwards compatibility and to make sure we don’t release code that breaks sites.

If you have spent any time programming in Drupal 8, I am sure you have found yourself using strategies available to you in Drupal 7, take Node::load() for example. If you go to the API docs you will see a warning that this method is deprecated and will be removed in Drupal 9. Under the hood, Node::load() uses the Drupal 8 EntityTypeManager to get the node storage and load it which is the accepted way to do it. Deprecating and removing deprecated code should be seen as a healthy sign of an open source project as it proves progress is being made to keep it fresh with the latest best practices. 

How This Will Impact You

What does this mean for module developers and site maintainers? Fortunately, if your site works for Drupal 8.9.x it will work for 9.x as the only change between the releases is the removal of deprecated code. After updating to 8.9.x, you’ll want to update each contrib module currently installed on your site. Even so, the best way to be 100% confident your site is Drupal 9 ready is to use the drupal checker command line tool to scan your custom and contrib code. 

How to Install and Run Drupal-Check  

To run the drupal checker  on your project, use composer to install it, and run it in the directory you want to scan:

composer global require mglaman/drupal-check
cd path/to/module/to/test
drupal-check *

This will print a report that you can share with your internal development team, or if it is in regards to a contrib module, make a patch and fix it yourself.

Making a Contrib Module Ready for Drupal 9

Now that we know about the awesome drupal-checker CLI tool, we are going to use it to make sure one of our favorite modules, YAML Content, is Drupal 9 ready. YAML content already has an open Drupal 9 readiness issue, but if you have to create a new one, the issue should look something like this:

Note how we’ve added the project name to the title and added the issue tag of “Drupal 9 compatibility”, this will make it easier to find in the issue queue.  

If you are new to contributing or just looking for an easy way to set up a local development environment, take a look at my previous blog, Get Drupal 8.6 Running Locally in 5 Steps.  

These are the steps we are going to follow:

  1. Start with Drupal 8.8.x or 8.9.x
  2. Install/update drupal-check:
  3. $ composer global require mglaman/drupal-check
  4. Download module using git:
  5. $ git clone [email protected]:project/yaml_content.git
  6. Run drupal-check:
  7. $ drupal-check *
  8. Update the info.yml file(s) (remember that some projects include more than one module!) by removing the “core:” line and adding this one in its place:
  9. core_version_requirement: ’^8 || ^9’
  10. Fix all deprecations that are reported.
  11. Upload patch(es).

Drupal-check will print out the file, line number, deprecation message and the total number of errors. At this time, we have 11 errors for yaml_content:

Writing a Patch to Fix Deprecated Code

While patching the issue it is important that we follow best practices and use dependency injection rather than calling the drupal service container. Luckily this patch has two different examples of dependency injection, one via service.

Yaml_content.service.yml:

services:
  ...
  yaml_content.load_helper:
    class: Drupal\yaml_content\Service\LoadHelper
    arguments:
      - '@yaml_content.content_loader'
      - '@logger.channel.yaml_content'
      - '@string_translation'
      - '@file_system'
      - '@messenger'

Src/Service/LoadHelper.php: 

/**
   * @var \Drupal\Core\Messenger\MessengerInterface $messenger
   *   The messenger.
   */
  protected $messenger;

  /**
   * Constructs the load helper service.
   *
   * @param \Drupal\yaml_content\ContentLoader\ContentLoaderInterface $content_loader
   *   The content loader service to use for content imports.
   * @param \Drupal\Core\Logger\LoggerChannelInterface $logger
   *   The logging channel for recording import events.
   * @param \Drupal\Core\StringTranslation\TranslationInterface $translation
   *   String translation service for message logging.
   * @param \Drupal\Core\File\FileSystemInterface $file_system
   *   The file system.
   * @param \Drupal\Core\Messenger\MessengerInterface $messenger
   *   The messenger.
   */
  public function __construct(ContentLoaderInterface $content_loader, LoggerChannelInterface $logger, TranslationInterface $translation, FileSystemInterface $file_system, MessengerInterface $messenger) {
    $this->loader = $content_loader;
    $this->logger = $logger;
    $this->fileSystem = $file_system;
    $this->messenger = $messenger;

    $this->setStringTranslation($translation);
  }

This allows us to replace drupal_set_message() with $this->messenger->addMessage().

For an example of dependency injection within a plugin, take a look at File.php in the patch attached to the issue.

While preparing modules for Drupal 9 readiness it is equally important to update the tests. The drupal-check command found failures in the test files but that is only for known existing deprecation in Drupal8 and PHPUnit 4, not the new dependency injection we added. We’ve touched LoadHelper.php and File.php which both have tests.  If you are unfamiliar with writing automated tests, there’s no better time to learn than now. However, it is my opinion that you push up the patch first and tag the issue with needs review. This will kick off the tests on Drupal.org and you may get help writing tests from the community. 

Conclusion

In this blog we’ve reviewed why Drupal 9 is removing deprecated code, how to create an issue for a contrib module, how to install and run drupal-check and how to write a patch to fix deprecated code. Now is the best time to start testing and getting your site ready for Drupal! Here are some extra resources that may help you get you started:

Apr 20 2020
Apr 20

Area Alert Drupal distribution logo

In a recent post, Communicating Coronavirus: Planning Your Emergency Response Website, we shared examples of COVID-19 sites around the U.S., highlighting insights we gleaned from our review. Mediacurrent has been using these findings to build out an open source Drupal emergency site, Area Alert. Our goal is to support organizations that are on the front lines, providing trustworthy, timely information during times of pandemic. We’ve partnered with Pantheon who is offering free hosting services—for at least 90 days—to qualifying organizations that join their platform.

Our UI Design Approach 

We took a user-centric approach, as always, mapping the journeys of citizens faced with perhaps some of the most difficult days of their lives—and in some cases matters of life and death.

On a personal note, my user empathy is strong as I am currently quite concerned myself with getting coronavirus/covid-19 information for my family from the city of New Orleans, where we live. I also have first-hand experience navigating another emergency—Hurricane Katrina in 2005. We evacuated, watched our city fall, and spent months navigating life as refugees—suddenly jobless and homeless and in a strange city with no way to return home. Information was vital every step of the way and not always easy to track down in a timely manner.

I may be a part of one or two use cases, but it is important to broaden my personal lens to encompass an appropriately diverse audience, with a focus on the most vulnerable users. User testing is ideal but at this time, at our current velocity, we are relying on our own internal teams, a wider network of experts, and the examples being set on other, similar sites. We will continue to hone the distribution over time.

Dire User Scenarios

While we always engage in mobile-first design, the mobile user seemed the most likely to be in a hurry—if not desperate in an emergency. So we prioritized and put together user scenarios for various difficult situations, imagining them both on mobile devices as well as on desktop:

  • I’m homeless and I don’t have health insurance but I feel very sick. What do I do? Who can I call?

  • I lost my job and I don’t have money for diapers or food for my children. Are there places I can go to pick up donated food and supplies? How do I apply for assistance?

  • I am blind. I use a screen reader to interact with websites and must be able to access the same vital information that impacts my health and safety as sighted citizens.

  • I’m parked outside of a place that has wifi—I don’t have it at home. I only have my mobile phone and I need to find what evacuation route is safe so I can go pick up my family and get out of town as quickly as possible.

Digital Psychology provides us with much applicable insight. Emotion affects cognition. Anxiety—even panic—can limit one’s ability to perform the most basic tasks, like navigating a website or even just touching a button.

While we considered action and information priorities for emergency scenarios, our overall design approach also took the panicked user into consideration. We strove to maximize findability by employing high color contrast, clear type hierarchy, plain language, and classic interface colors (such as blue for links, red for alerts, yellow for warnings, etc.) We allowed for large, clear pointer/touch targets for shaking fingers. We make certain that in the code all menu items, buttons, and other interface elements are clearly labeled for screenreader users.

We took into consideration the fact that the most vulnerable users may not have fast internet, or users may be on mobile data. In an emergency, networks can become overloaded and slow. That’s where Drupal comes in. 

Drupal sites are typically highly performant—speedy. While these emergency sites won’t typically serve lots of large images or videos, when they do, we’ll employ code to prioritize the delivery of information via text, even loading the display font after the data, so info reaches users as rapidly as possible. 

We also decided to make image alternative text a required field. Reading the image description is a faster way to take in the information so the user can obtain it and move on if they do run into situations where their internet is very slow.

We built in an alert system for the very most important and timely pieces of information. Below that, a row of quick-info cards can be used to summarize additional sets of information and options to lead users to the landing pages that they need:

  • Stay At Home Order 

  • Student Lunches To Go 

  • How to Help Others 

We also provided navigation elements that can be used to lead users to landing pages for collections of information relevant to specific personas:

  • Seniors & At-Risk

  • Homeless

  • Undocumented

  • Parents & Youth

  • Unemployed

  • Small Business

Each of these landing pages will contain collections of summaries of additional sets of information and options to lead users deeper into the site’s content and connect them with the local resources they need most.

Design note: despite the highlighting of urgent needs, and cognizant of the fact that we will sometimes be showing “red alert” messages to people who are potentially in states of intense stress, we strove to design in a task-oriented manner. The user interface itself should not inspire panic. Quite the opposite; it should reassure the user that help is on the way—the situation is as under control as it can be. 

Messages we want to convey include: Survival is possible; Here is the latest information; Here is what you can do; Here is what we—your city, organization, etc.—are doing. We built in areas that could be customized and suggested optimistic content for them in our mockups. For example:

  • A large image at the top of the page of the city skyline or perhaps the facade of neighborhood houses and the suggested message “We’re in this together” to play on emotion to inspire an immediate sense of unity and hope. A sense that there is a bigger entity the user is part of that is taking care of things. A picture is worth a thousand words and a good slogan goes a long way to provide grounding and comfort.
  • A spot to display data with the suggestion to show charts highlighting how many have recovered compared to died (as recoveries is always the larger of the two numbers). Little touches like this can subliminally shift focus from bad news to the bigger picture.

Area Alert Drupal Distribution mock homepage

Our goal for defining user pathways was to provide multiple ways for users to find relevant content by incorporating concise titles and offering summaries of information leading to easy-to-follow step-by-step instructions, clearly defined options, and lists of resources.

Our next priority was to provide the latest data or at least a way to point the user in the direction of reputable sources of data. Our design suggests a separate component to aggregate charts, maps, and apps to aid the user in navigating the crisis.

We also included an area in the footer that can be used for links to suggested, reputable info sources such as the CDC or NOAA.

Next we prioritized the latest news and updates from the city, college university, healthcare organization, etc. as well as a spot for the latest social feed if there is frequent activity on a platform such as Twitter.

Site Builders & Content Editors

While the majority of website users will be end-users, those who produce and publish the website are a crucial link in the chain. A Content Management System (CMS) must take these folks and their specific user journeys into account as well. These users will be spending their time building out pages and putting specific content into the set of containers (also known as “components”) the system we are building provides. These components must do their jobs flexibly. They must display a wide range of critical information clearly, offering content editors the right set of tools for their job: to provide end-users with the help and the resources they need in a crisis.

We wanted to build a system flexible enough to accommodate not only a wide range of emergency scenarios but the many potential competencies and quantities of personnel that would be resourced to make this vital information available to the public.

For large cities, universities, or organizations, they may have the resources to maintain the website with all the needed updates,  but what about a small town with a very limited number of staff members? We considered the various scales and skills for potential content administration teams and not only leveraged some great out-of-the-box features, but baked a flexible content strategy—complete with hints—into the system. This gives those entering information a sound roadmap to getting crucial content to the citizenry.

We’re here for you

We’re continuing to make improvements to our open source emergency website, Area Alert, to provide organizations who are communicating timely information during this pandemic the best framework for their site. If your organization is in need of help with your COVID-19 website, we’re ready to help. Contact us now to learn more about our open source solution for emergency websites.

Apr 08 2020
Apr 08

open waters

In this episode, we welcome a new host, Christine Bryan. And as a sort of initiation, we interview her about project managing an open source project.

About Christine

Christine has been working in marketing and technology for over fifteen years. She’s worked in government, non-profit, and for-profit industries. Her first Drupal project was on Mass.gov, the state website for Massachusetts, and since then she’s worked with clients including universities, manufacturing, and financial services. In her spare time she parents a pretty awesome one year old kiddo, plays video games, and likes to walk around the world at Epcot.

Audio Download Link

Tool Pick

Let’s talk about Jira.

Interview

  1. Tell us about yourself and your role as a project manager (PM) at Mediacurrent.
  2. How did you get started in Project Management?
  3. What are some qualities you need to be an effective PMs?
  4. Are there specific challenges an Open Source project presents from a PM point of view?
  5. When we asked you what you wanted to talk about on your first time out on the podcast, why did you choose Jira?
  6. As a PM, do you interact with Marketers of the project you are managing?  How do marketers get involved with your projects?
  7. What could potentially make a project fail if not managed properly? And how would you avoid failure?
  8. A project, although managed by a PM, depends on the execution of many people (devs, stakeholders, etc.), what do you think others can do to increase the chances of success?
  9. How do you define success when managing a project?
Apr 06 2020
Apr 06

It’s amazing to see the outpouring of support among people during this uncertain time. Whether it’s helping an elderly neighbor with getting groceries or supporting small businesses, people around the world are showcasing a “we are in this together” mentality. 

At Mediacurrent, we have been doing what we can in response to COVID-19 from sharing tips on how to connect as a remote team to working on initiatives that can be utilized in times of a pandemic or natural disaster. Our customers and organizations we support, such as the Drupal Association (DA), are also top of mind for us as we navigate the coming weeks.

During a webinar on Friday, April 3, Heather Rocker, Executive Director of the Drupal Association, and Dries Buytaert, Founder of Drupal, provided a transparent operational update about the impact COVID-19 is having on the Drupal Association. As expected with the postponement of DrupalCon—the primary revenue driver for the DA—difficult decisions are needing to be made around how to sustain the Drupal Association during this unprecedented time. They mentioned staff layoffs had been started, but the DA has been looking at all other possible options.

After listening to the webinar Mediacurrent made the decision to leave our sponsorship 100% “intact.” Essentially, this means we want the Drupal Association to use the funds that were earmarked for one of DrupalCon North America’s six Platinum sponsorships in May to help the DA continue to push forward. Heather and Dries discussed how sponsorships remaining intact was just one of many financial hurdles that needed to be addressed. There is still a $500,000 delta that must be overcome due to DrupalCon Minneapolis potentially being postponed to a virtual event (or canceled). The most viable path to doing this is crowdfunding and reaching out to as broad an audience as possible for help—this includes enterprise organizations that are using Drupal and donations from those who believe that technology should be shared and free.

What can you do to support the Drupal Association?

The Drupal Association is the foundation for the Drupal community. It is a non-profit organization that relies on the support of individual members and organizations. To be more direct, without the DA, the future of Drupal would be in an extremely precarious position—there would be no staff dedicated to maintaining infrastructure like Drupal.org or to organize events like DrupalCon. Essentially, as the Drupal Association undergoes financial hardship, this is an opportunity for all us to lean in to help preserve the future of Drupal.  

To help the Drupal Association, consider supporting in these ways:

  • Make a direct donation to the Drupal Association.
  • Join as an individual or organization member. If you’re already a member, consider increasing your membership.
  • Advertise on Drupal.org to raise awareness of your brand to a Drupal audience.
  • Create a culture of giving back to the Drupal community at your organization.
  • Spread the word in your network. Here are a few pre-populated messages you could use in your support of the Drupal Association:
    • Many @DrupalConNA sponsors are pledging to leave their sponsorships intact, but the Drupal Association needs more support to maintain necessary infrastructure. Donate and share how you’ve supported @drupalassoc. https://www.drupal.org/association/donate [Tweet me]
    • Organizations I support, such as the Drupal Association, are at the top of my mind as we all navigate the coming weeks. Together we are stronger. Support #opensource https://www.drupal.org/association/support @drupalassoc [Tweet me]
    • Now, more than ever, the Drupal Association needs our support. Help sustain @drupalassoc by making a donation or becoming a member. https://www.drupal.org/association/support [Tweet me]
    • The Drupal Association is experiencing financial hardship and needs our support to preserve the future of Drupal. Read @mediacurrent’s blog post to understand how you can support the Drupal Association. [Tweet me]

There are so many unknowns with the impact that COVID-19 is having on each of us individually and with organizations like the Drupal Association. Coming together as a community and supporting each other however we can will allow us all to come out ahead when this challenging situation passes. We’re grateful to be part of the Drupal Association, which has always strived to serve the Drupal community, and we’re determined to help as they continue to navigate these uncertain times. 

Apr 01 2020
Apr 01

Platform.sh, like any good PaaS, exposes a lot of useful information to applications via environment variables. The obvious parts, of course, are database credentials, but there's far more that we make available to allow an application to introspect its environment.

Sometimes those environment variables aren't as obvious to use as we'd like. Environment variables have their limits, such as only being able to store strings. For that reason, many of the most important environment variables are offered as JSON values, which are then base64-encoded so they fit nicely into environment variables. Those are not always the easiest to read.

That's why we're happy to announce all new, completely revamped client libraries for PHP, Python, and Node.js to make inspecting the environment as dead-simple as possible.

Installation

All of the libraries are available through their respective language package managers:

PHP:

composer install platformsh/config-reader

Python:

pip install platformshconfig

Node.js:

npm install platformsh-config --save

That's it, you're done.

Usage

All three libraries work the same way, but are flavored for their own language. All of them start by instantiating a "config" object. That object then offers methods to introspect the environment in intelligent ways.

For instance, it's easy to tell if a project is running on Platform.sh, in the build hook or not, or if it's in a Platform.sh Enterprise environment. In PHP:

$config = new \Platformsh\ConfigReader\Config();

$config->inValidPlatform(); // True if env vars are available at all.
$config->inBuild();
$config->inRuntime();
$config->onEnterprise();
$config->onProduction();

// Individual Platform.sh environment variables are available as their own properties, too.
$config->applicationName;
$config->port;
$config->project;
// ...

The onProduction() method already takes care of the differences between Platform.sh Professional and Platform.sh Enterprise and will return true in either case.

What about the common case of accessing relationships to get credentials for connecting to a database? Currently, that requires deserializing and introspecting the environment blob yourself. But with the new libraries, it's reduced to a single method call. In Python:

config = platformshconfig.Config()

creds = config.credentials('database')

This will return the access credentials to connect to the database relationship. Any relationship listed in .platform.app.yaml is valid there.

What if you need the credentials formatted a particular way for a third-party library? Fortunately, the new clients are extensible. They support "credential formatters", which are simply functions (or callables, or lambdas, or whatever the language of your choice calls them) that take a relationship definition and format it for a particular service library.

For example, one of the most popular Node.js libraries for connecting to Apache Solr, solr-node wants the name of a collection as its own string. The Platform.sh relationship provides a path, since there are other libraries that use a path to connect. Rather than reformat that string inline, the Node.js library includes a formatter specifically for solr-node:

const solr = require('solr-node');
const config = require("platformsh-config").config();

let client = new solr(config.formattedCredentials('solr-relationship-name', 'solr-node'));

Et voila. client is now a solr-node client and is ready to be used. It's entirely possible to register your own formatters, too, and third-party libraries can include them as well:

config.registerFormatter('my-client-library', (creds) => {
  // Do something here to return a string, struct, dictionary, array, or whatever.
});

We've included a few common formatters in each library to cover some common libraries. We'll be adding more as time goes by, and, of course, PRs are always extremely welcome to add more!

But what about my language?

We wanted to get these three client libraries out the door and into your hands as soon as possible. But don't worry; Go and Ruby versions are already in the works and will be released soon.

We'll continue to evolve these new libraries, keeping the API roughly in sync between all languages, but allowing each to feel as natural as possible for each language.

Mar 24 2020
Mar 24

In this post, I’m going to be showing a recipe for how to add syntax highlighting and code segments to a decoupled Drupal site. Want to see an example? It’s right in front of you! The code blocks down below use prism.js, React and Code Snippet module, just as they explain.

First, install Code Snippet module on your Drupal 8 site. This module integrates the “codesnippet” ckeditor plugin, which provides a button that does the following:

  • It gives editors a WYSIWYG button that lets them choose a language and embed a code snippet.
  • Behind the scenes, it escapes and encodes the pasted code segment so that html tags and php tags do not get stripped.
  • Provides a pretty good visual treatment of the code segments when displayed in Drupal. (You could just use this if your site is not decoupled, but I’ll be going one step further to show how to apply syntax highlighting in React).

Get Code Snippet via Composer, like this:

composer require drupal/codesnippet

You also have to put the library in place. First, add the following to your projects composer.json

 {
    "type": "package",
    "package": {
        "name": "ckeditor/codesnippet",
        "version": "4.11.4",
        "type": "drupal-library",
        "dist": {
            "url": "https://download.ckeditor.com/codesnippet/releases/codesnippet_4.11.4.zip",
            "type": "zip"
        }
    }
},

Check for the most current stable version. Next, require the new package using Composer CLI

composer require ckeditor/codesnippet

After that’s done, turn on the module

drush en -y codesnippet

Now it’s time to add the code snippet tool to one of your WYSIWYG profiles on a text format. In our case, we have WYSIWYG  UI on the “Full HTML” text format.

Navigate to Content Authoring > Text Formats and Editors (/admin/config/content/formats), and configure the text format containing the WYSIWYG profile you want to modify:

Image showing how to configure text formats

If you have installed Code Snippet module and its library correctly, you should see a little button in the ckeditor staging area that looks like this:

Image showing code snippets ckeditor icon.

Drag that down into the active buttons tray, and save.

It’s time to edit one of your articles and try out the new code snippet tool. Once you’ve found an article, edit and verify that the code snippet icon is there. Give it a click, and you should see a modal asking you to paste in some code:

Image showing code snippet editorial window.

Time to show off your code! You’ll find the Code Snippet module to be quite nice - as you add code blocks, it styles it pleasantly in the WYSIWYG area and also when you view the node:

Image showing styled and highlighted React code.

Are you building a decoupled site? No? Then you’re done!

If you are stopping here, I will give one warning - Code Snippet module uses highlight.js, and it is a big boy. It has the same problem as the date library moment.js: in most cases, you will only want to use a small subset of its many languages, but it comes packaged with everything. On its own, this probably won’t totally kill your site’s performance, but it definitely won’t make it better. It will stick out like a sore thumb the next time someone does a frontend performance audit.

But let’s move on - this article is mainly about syntax highlighting for decoupled sites. Let’s pretend you are building a Gatsby/React blog that gets its data from Drupal.

What we need is a syntax highlighting library that can be pulled in language-by-language, so that the bundle size stays small. I looked around for a while, and the best one I found was Prism.js.

At this point, I could probably point you to this article explaining how to add prism.js to Gatsby sites and call it a day. I’m going to repost some of that but also add a few things.

First, let’s install the prismjs npm module and some required Babel plugins. 

npm install  --save prismjs babel-plugin-prismjs babel-preset-gatsby

Then, add this to your .babelrc (create this file in your project root if it doesn’t already exist):

{
  "presets": ["babel-preset-gatsby"],
  "plugins": [
    ["prismjs", {
      "languages": ["javascript", "css", "markup"],
      "plugins": ["show-language"],
      "theme": "okaidia",
      "css": true
    }]
  ]
}

Once you’ve got it working, you can customize these settings.

We’re almost done. The last piece of the puzzle is actually applying prism.js to your pages. There are a lot of ways to do it, but the simplest is telling prism to highlight all viable code tags it finds. Let’s say you have a “Body” component that you use to render WYSIWYG content from your CMS. You would invoke the prism.js highlighting like this:

import React, { useEffect } from 'react';
import reactHtmlParser from 'react-html-parser';
import Prism from "prismjs";
 
const Body = ({children}) => {
 const options = {
   decodeEntities: true,
 };
 
 useEffect(() => {
   Prism.highlightAll();
 });
 
 return (
   <div>
     {reactHtmlParser(props.children, options)}
   </div>
 );
};
 
export default Body;

Note that reactHtmlParser is just a useful tool for rendering WYSIWYG content, rather than using dangerouslySetInnerHtml.

At this point, if you do a Gatsby build (or if you’re not using Gatsby do whatever it is needed to hydrate this React component), you should see syntax highlighting in all its glory.

Now .. if you are astute .. you might be a little confused. Doesn’t Code Snippet module provide code tags that work with highlight.js? And aren’t we using Prism.js on the frontend? Sure, they both work with code and pre tags, but aren’t the class conventions different for setting language?

Turns out It Just Works™. This is really lucky! Both libraries use “language-<language>” as their class naming convention. Still, it’s worth remembering that this is somewhat brittle. One could solve this problem by contributing a plugin for prism.js to the Code Snippet module.

I hope you found this useful!

Mar 16 2020
Mar 16

Category 1: Web development

Government organizations want to modernize and build web applications that make it easier for constituents to access services and information. Vendors in this category might work on improving the functionality of search.mass.gov, creating benefits calculators using React, adding new React components to the Commonwealth’s design system, making changes to existing static sites, or building interactive data stories.

Category 2: Drupal

Mass.gov, the official website of the Commonwealth of Massachusetts, is a Drupal 8 site that links hundreds of thousands of weekly visitors to key information, services, and other transactional applications. You’ll develop modules to enhance and stabilize the site; build out major new features; and iterate on content types so that content authors can more easily create innovative, constituent-centered services.

Category 3: Data architecture and engineering

State organizations need access to large amounts of data that’s been prepared and cleaned for decision-makers and analysts. You’ll take in data from web APIs and government organizations, move and transform it to meet agency requirements using technology such as Airflow and SQL, and store and manage it in PostgreSQL databases. Your work will be integral in helping agencies access and use data in their decision making.

Category 4: Data analytics

Increasingly, Commonwealth agencies are using data to inform their decisions and processes. You’ll analyze data with languages such as Python and R, visualize it for stakeholders in business intelligence tools like Tableau, and present your findings in reports for both technical and non-technical audiences. You’ll also contribute to the state’s use of web analytics to improve online applications and develop new performance metrics.

Category 5: Design, research, and content strategy

Government services can be complex, but we have a vision for making access to those services as easy as possible. Bidders for this category may work with partner agencies to envision improvements to digital services using journey mapping, user research, and design prototyping; reshape complex information architecture; help transform technical language into clear-public facing content, and translate constituent feedback into new and improved website and service designs.

Category 6: Operations

You’ll monitor the system health for our existing digital tools to maintain uptime and minimize time-to-recovery. Your DevOps work will also create automated tests and alerts so that technical interventions can happen before issues disrupt constituents and agencies. You’ll also provide expert site reliability engineering advice for keeping sites maintainable and building new infrastructure. Examples of applications you’ll work on include Mass.gov, search.mass.gov, our analytics dashboarding platform, and our logging tool.

Mar 12 2020
Mar 12

by David Snopek on March 6, 2019 - 1:56pm

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 Critical security release for the EU Cookie Compliance module to fix an Cross Site Scripting (XSS) vulnerability.

The module provides a banner where you can gather consent from the user when the website stores cookies.

The module doesn't sufficiently sanitize data for some interface labels and strings shown in the cookie policy banner.

This vulnerability is mitigated by the fact that an attacker must have a role with the permission "Administer EU Cookie Compliance banner".

See the security advisory for Drupal 7 for more information.

Here you can download the Drupal 6 patch or the full release.

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

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).

Mar 12 2020
Mar 12

This post was created jointly by Michael Hess of the Security Working Group, and Tim Lehnen, Executive Director of the Drupal Association.

Last year, with the security release of SA-CORE-2018-002, the most significant security vulnerability since 2014, we heard the pain of site owners and development teams around the world staying up at all hours waiting for the complex security release process to complete and the patch to drop. We heard the pain of agencies and end-user organizations required to put teams on late shifts and overtime. We heard from some users who simply couldn't respond to patch their sites on the day of release, because of lack of resources or entrenched change management policies.

We've heard calls from the community for rotating the timezones for security advisories from release to release, or for having more on-call support from security team members across the globe, or simply for a longer horizon between the release of PSA and SA.

Yet at the same time, we're cognizant that these solutions would put increased burden on a security team composed of dedicated volunteers and contributors. There are a number of generous organizations who sponsor many of the members of the security team, but relying on their altruism alone is not a sustainable long-term solution—especially if we consider expanding the role of the security team to address the larger pain points above.

Last week, with the release of SA-CORE-2019-003, we heard these concerns for site owners and the sustainability of the security team echoed again.

The Security Team and the Drupal Association have been developing solutions for this issue for well over a year.

The goals are simple:

  • Provide a new service to the Drupal community, from small site owners to enterprise-scale end users, to protect their sites in the gap from security release to the time it takes them to patch.
  • Create a new model for sustainability for the Security Team, generating funding that 1) covers the operating costs of the program 2) can support security team operations and 3) can support additional Drupal Association programs.

Although the execution will take care and careful partnership, we are happy to announce that we've found a solution.

We're tentatively calling this: Drupal Steward. It is a service to be provided by the Drupal Association, the Security team, and carefully vetted hosting partners.

Drupal Steward will offer sites a form of mitigation through the implementation of web application firewall rules to prevent mass exploitation of some highly critical vulnerabilities (not all highly critical vulnerabilities can be protected in this fashion, but a good many can be - this method would have worked for SA-CORE-2018-002 for example).

It will come in three versions:

  • Community version - for small sites, low-budget organizations, and non-profits, we will offer a community tier, sold directly by the DA. This will be effectively at cost.
  • Self hosted version - for sites that are too large for the community tier but not hosted by our vendor partners.
  • Partner version - For sites that are hosted on vetted Drupal platform providers, who have demonstrated a commitment of contribution to the project in general and the security team in particular, protection will be available directly through these partners.

Next Steps

The Drupal Association and Security Team are excited to bring this opportunity to the Drupal Community.

We believe that the program outlined above will make this additional peace of mind accessible to the broadest base of our community possible, given the inherent costs, and are hopeful that success will only continue to strengthen Drupal's reputation both for one of the most robust security teams in open source, and for innovating to find new ways to fund the efforts of open source contributors.

We will announce more details of the program over the coming weeks and months as we get it up and running.

If you are a hosting company and are interested in providing this service to your customers, please reach out to us at [email protected].

Please also join us at DrupalCon for any questions about this program.

If you are a site owner and have questions you can join us in slack #drupalsteward.

For press inquiries, please contact us at: [email protected]

Mar 10 2020
Mar 10

If you’ve discovered this blog post, chances are you're looking for Drupal expertise and knowledge from Mediacurrent - and likely also have or plan to have a Drupal site. You've probably considered ways to extend the reach of your Drupal site. Combining Drupal and Flutter is a simple way to create a mobile app experience and reach a wider audience through App Store exposure. This post explains how.

Native mobile app experience

You’ve invested lots of time and resources into building your Drupal website. Then lots of effort populating it with great content and making sure it stays updated with fresh content. And now your analytics show you have strong audience engagement, but it’s really just holding steady and you’re looking for new ways to market your content and reach new audiences and engagement.

Perhaps your quest to optimize the mobile experience has led you to consider a mobile application. A mobile application (or "app" in the commonly used short form) can serve as an alternative marketing solution that extends your existing Drupal website. This can help attract new visitors by means of an App Store, or provide existing visitors with a new mobile experience built with a mobile application framework called Flutter.

What is Flutter?

Flutter is a cross-platform mobile application framework created by Google, with its first stable release in 2018. It competes with other frameworks like Facebook’s React Native, Microsoft’s Xamarin, and Apple’s Swift and SwiftUI. Flutter is a declarative framework written with the Dart programming language, which is comparable to Javascript in syntax. It’s an open source framework that is free to use and promotes community contributions into the code repository.

Flutter is Google’s UI toolkit for building beautiful, natively compiled applications for mobile, web, and desktop from a single codebase.

Source: https://flutter.dev/

For a deeper introduction, check out Mediacurrent’s presentation on Decoupled Drupal with Flutter (Florida Drupalcamp 2020).

Benefits

Cross-platform with a single codebase

The main benefit of Flutter over native platforms, like Swift for iOS and Java/Kotlin for Android, is the ability to compile native applications from a single codebase. While it’s already in progress, but not yet production-ready, there will be support in the future for web and desktop applications that can also be driven from the same, single codebase.

Cross-platform mobile application framework Flutter

Source: https://techcrunch.com/2019/05/07/googles-flutter-framework-spreads-its-wings-and-goes-multi-platform/

Open Source

While the framework was built by Google, it is an open source project. It’s free to install and use for business or personal projects without the propriety limitations of other frameworks. As with other open source projects, there is a large developer community that drives the project and provides contributions back to it in the form of writing documentation, performing code changes, and knowledge sharing of technical challenges. Get involved today in the Flutter community!

Dart programming language

Flutter’s programming language of choice, Dart, makes the framework relatively easy to learn and get started building applications. It’s particularly easy to learn and understand because it has features and borrowed concepts that are similar to other languages and frameworks, but with it’s own syntax and infrastructure. Also, it’s fast!

Flexibility and customization

Flutter is flexible and highly customizable. It is similar to Drupal in that it’s easy to get started, but when you need to extend and customize it for your own use cases, instead of reinventing the wheel for everything, there are pre-built packages and code snippets to get you going. In Drupal, there are contributed modules on Drupal.org. In React Native, there are packages on Node Package Manager (npm). In Flutter, there are Dart and Flutter packages.

Fast and steady growth rate

Flutter released its first official version in December 2018. In a little over a year, interest in the Flutter framework has increased dramatically and is still rising according to a Google Trends report.

Source: https://trends.google.com/trends/explore?cat=5&date=today%205-y&q=React%20Native,Flutter,Xamarin

Flutter has also surpassed both React Native and Xamarin on Stack Overflow, at least with the number of technical questions being asked around the technology. With the widespread adoption rate comes more developers building more complex applications, which results in more documentation, resources, and knowledge sharing in the Flutter community that can drive its continued growth and adoption.

StackOverflow trends comparison

Source: https://insights.stackoverflow.com/trends?tags=flutter%2Creact-native%2Cxamarin

Integrated developer tools with hot reload

It’s easy to get up and running with a Flutter application to start building proof-of-concept applications. Development is fast and fun with features like hot reload and Visual Studio Code editor integration. With hot reload, the changes made in the editor can be seen in real-time in a device simulator.

Everything is a Widget

A Flutter application’s user interface is composed of building blocks called widgets. A widget is comparative to the term "View" in other frameworks, except that Flutter widgets are all-encompassing, whereas other frameworks offer more separation with views, view controllers, layouts and other components.

The main building blocks to any Flutter application are going to be Stateless or Stateful widgets. These are essentially the container widgets that act as the parent to one or many more child widgets. Stateful widgets are reactive to state changes, so when the state of the data changes, the widget rebuilds it’s UI.

Examples of widgets can be structural elements like buttons and images, element styling like fonts and colors, and even layout control like padding and margin.

Flutter - everything is a widget

Source: https://hackernoon.com/flutter-create-beautiful-native-apps-in-record-time-nv1e93whh

Decoupled Drupal with Flutter

Drupal is great at complex data structures and content management. It’s also secure and highly customizable with solutions for mostly anything, and if there isn’t a solution, there are APIs to build the solution.

Flutter makes it easy to compose screens and control the navigation of an app. It also makes it possible to build a single app that can be compiled to both iOS and Android platforms. With Flutter, you get a lot of functionality baked in that typically comes with extra effort in the other frameworks.

Flutter makes it easy and fast to build beautiful mobile apps.

Source: https://flutter.dev

In order to decouple Drupal with Flutter, Flutter needs to be able to communicate with Drupal. Luckily for us, there are solutions built right into Drupal core for exposing data to external systems, such as JSON API and RESTful Web Services.

There is also a JSON:API Flutter package available to help with the communication between Drupal JSON API and Flutter. This package was used in the Contenta Flutter demonstration in this Florida Drupal Camp 2020 talk on Decoupled Drupal with Flutter.

Wrapping Up

I hope this post was helpful to provide insights into how easy it can be to extend your existing Drupal website with a companion native application with Flutter. This will, in turn, increase your audience reach with the help of App Stores. For more ways to make the most of Drupal in your marketing strategy, check out our Drupal 8 for Marketer’s ebook.

Mar 02 2020
Mar 02

To kickoff women’s history month, we sat down with Drupal Association Executive Director Heather Rocker. Heather brings her experience as the former CEO of GirlsInc. of Greater Atlanta to encourage girls to explore tech careers. In this interview, she reflects on year one in her new role and shares what’s on the horizon for the Drupal community on the path to Drupal 9. 

1. Hi Heather, thanks for joining us! You are coming up on one year as the Global Executive Director for the Drupal Association. What drew you to Drupal? What makes Drupal different from other development communities?

I think the first gateway to being drawn to Drupal was being drawn to open source and the idea of how open source is created and distributed. That it's so people driven and community focused really aligned with a lot of what drives me personally and professionally.

As I had the chance through the recruitment process to learn about Drupal, it became very obvious that Drupal was a leader in open source. The way that Drupal moderates and organizes the community is at the forefront of open source projects. The strength at the local, regional, and international level is strong and is growing every day.

The way Drupal recognizes contribution I thought was really impactful. You can be an individual contributor, you could be an organization, and you can be recognized for the way that you impact the project. I thought that was really ahead of other projects as well.

One of the cool factors for me was the fact that it was a large thriving open source community, but it was actually one of the few that is that large and successful that's still independent. For me, the independent factor weighted as well because I think it really aligns with what draws me to both technology and nonprofit. The Drupal community brought in all the things that make me love working with people and with organizations. And then the fact that it's a successful independent community is what really made Drupal stand out to me. 

2. What has been the accomplishment you are most proud of so far?

What I'm really proud of is the ability to organize our team both within the Drupal association and the board level in conjunction with our community so that we've got the right people in the right places. Now, we have strong leadership across all levels of the organization — board, staff, and community.

I'm excited that we're putting the right process and programs in place so that we can really start to scale our impact effectively,better support the community and focus on questions like why does Drupal and the Drupal association exist? How do we be really strategic about those objectives and stay in alignment across the community? We're working on a really neat strategic plan right now that I think is unlike what the DA has produced in the past. We'll be unveiling that to the community in 2020 and you'll be able to see what the strategic objectives are and how everything we do lines up so that we can all stay on the path to create even more impact. 

3. As the former CEO of Girls, Inc, you have a lot of experience with introducing girls to careers in technology. What are some of the things you’re focused on in your current role to recruit people, especially girls and young people, to consider a career path in Drupal?

I've been very fortunate to have the Girls, Inc. experience as STEM was becoming more and more of a focus as a career path. For a variety of reasons, not only because that's where the careers are and the supply and demand works in your favor in a technology career. Depending on your circumstances, being in a lucrative, steady career in STEM can really change your trajectory. In the case of Girls, Inc, this was taking girls and their families potentially out of a poverty cycle by getting them in those jobs. 

In addition to that, I had the opportunity through the Women in Technology (WIT) foundation to develop our Girls Get IT program. I learned how vulnerable girls are when it comes to peer pressure and STEM. You really have to start in fourth grade -- both girls and boys, but girls in particular -- to get them excited about STEM. Then you have to stay with them in middle school, high school and college to make sure that they don't hit one of those pieces of the pipeline that causes them to roll out. So we learned a lot about the pieces of that pipeline and how you effectively support girls in technology.

It takes mentorship for any STEM education effort to be really successful. Quite frankly, we see that in women that are mid-career as well, it doesn't apply just to youth. Then the piece that I also get to layer in is my work as a board member with GeorgiaFIRST Robotics. I know a lot of Drupal community members that I've met are involved with FIRST Robotics. Hands-on exposure to STEM makes it real — it’s so important.

I will be taking all of those concepts and learnings to put together our Drupal talent pipeline and outreach efforts.  

4. What would you say to others who want to get involved to help girls and young people explore careers in Drupal?

Be present. Girls, boys, students in general, anybody that we want to have in our Drupal talent pipeline, they have to know what Drupal is first before they can get excited about it and learn it and be a part of our community. So the first best thing you can do with a student of any age is to get in front of them. They can't be what they haven't seen. Show them what you do and talk about your organization’s work at an age appropriate level. Spark an interest.

One of the things we'll be working on from a resource perspective is how to utilize our collective effort across the Drupal community to organize those efforts so that we can come together - especially at the local level. Mediacurrent’s work with Kennesaw University is a perfect example. 

5. You’re in the same neighborhood as Mediacurrent’s HQ and we’re always glad to see you at local Atlanta Drupal events! In your experience, why is it so important for agency partners like Mediacurrent to give back to open source projects?

The large scale answer is open source requires it. If you think about the way that open source is structured, it's people contributing. Not just individual people but organizations as well. Aside from the “it's the right thing to do” reasons, there really are some good business reasons for agencies, and quite frankly, organizations of all types to be involved and contribute on a constant basis. 

The business savvy piece of that is contribution at a variety of levels, from a variety of perspectives makes for a better product. In turn that makes for a stronger community and project which all adds up to increased business success. So there really is ROI; if Drupal is a great product, it is easier to sell. And it only remains great if we have the right contribution and the right interaction. From a business perspective, you are creating a little bit of your own business destiny by being involved and having an impact on the Drupal project.

I was able to spend some time recently with Nikhil Deshpande, the Chief Digital Officerfor the state of Georgia, who runs georgia.gov. He made it very clear that when he was looking at how to implement everything he needed to do, he wanted partners that were contributors to the Drupal project. His thought was if you're contributing in a meaningful constant way we can assume that you're going to be the best partner to help us implement Drupal as well.

6. What are the top three things the Drupal community can look forward to for 2020?

  1. I think the biggest thing that most people are excited about is the Drupal 9 launch. We're coordinating with the community to celebrate Drupal because it's such a large effort to make something like that happen.
  2. In addition to the community celebration, we want to make sure the Drupal Association is leading an effort from a marketing perspective to make sure that the business community understands why Drupal 9 is good for their business and why they should be interested. That's going to be a huge initiative for us. I'm excited and I would assume the community is as well.
  3. We recently launched our Contribution Recognition Committee led by Mike Lamb at Pfizer. It has a volunteer steering committee but a lot of the community has been involved in giving feedback. We have a strong contribution system in place now but we realized we need to be broader in what we consider contributions so that we can be more effective in the recognition. Donating code has been the general standard for contribution. But if you run a camp, if you go to a college and help develop our talent pipeline, those things should count as well. We're looking at how to build in systems to help reward that behavior.
  4. The other thing that we're excited about internally at the DA, that we're dedicated to launching in 2020, is how do we support that talent pipeline cultivation and how do we do that with a diversity, equity and inclusion lens?So we're committed as a team to launch at least one pilot program in 2020, to address that effort. And that will definitely take community collaboration to make it happen.

Thanks again for joining us, Heather, and for all you do to make our Drupal community even stronger. We’ll see you at DrupalCon 2020! 

Mar 02 2020
Mar 02

The moment the Drupal community has long been contributing to and anticipating is soon upon us: Drupal 9 will be released later this year. The question that faces any organization that uses Drupal is, of course, whether to upgrade. Any organization that has done a major release upgrade before certainly knows it’s not a decision to be made lightly. Let’s explore the history of Drupal upgrades further to see why past trepidations are no longer a concern.

The Challenge With Previous Drupal Upgrades

With most of the previous major Drupal release upgrades, for example from Drupal versions 5 to 6, 6 to 7 (here’s a relevant case study), 7 to 8 (here’s a guide we built for this purpose), etc., the site owner was often required to rebuild their entire site due to the major code changes -- and even architectural changes -- between releases. In many cases, it was easier to build a new site in the new platform and import the data from the previous one, rather than do a by-the-books “upgrade.”

This challenge was most evident with the transition from Drupal 7 to Drupal 8. Up to Drupal 7, Drupal’s core code was procedural PHP that had grown in complexity over time, and with it came disadvantages compared to more modern, cleaner, object-oriented codebases. Object-oriented code typically has the advantages of greater readability, reuse, testability, maintainability, and modularity over procedural code. 

Because of this and more, the Drupal community made the decision to switch to an object-oriented architecture for Drupal 8, based on the popular Symfony framework. Along with the advantages of object-orientation this change had brought, it also immediately and significantly expanded the pool of skilled Drupal developers since developers from the Symfony community could easily transition to working with Drupal.

However, the introduction of these advantages came at a cost, and that was upgradeability. Custom modules for Drupal 7, for the most part, would not work with Drupal 8 because of the change in architecture. Complicating matters, some of the major Drupal 8-compatible contributed modules weren’t ready for use when Drupal 8 was released, and site owners had to monitor the status of each such module before deciding to upgrade.

A final thorn in the side (or Lego block to the bare foot) of the upgrade effort to Drupal 8 came in the form of a new theme engine called Twig. Twig replaced Drupal’s aging PHPTemplate templating system, originally added in Drupal 4.7.0 way back in 2006. Twig is a much more robust and secure templating engine which is also used by other CMSes. In every case where we’ve had to rebuild the theme from scratch in Drupal 8, it wasn’t technically possible to reuse any of the Drupal 7 PHPTemplate template files, and it wasn’t worth the effort to try reusing the CSS or JS files either. Both the DOM output structures on the page had dramatically changed. Besides, output paradigms had changed and most Drupal 8 sites were being built with component-based designs.

What’s Different About Drupal 9

In stark contrast to the architectural changes in Drupal 8, the architectural changes in Drupal 9 are, well, nonexistent. With Drupal 9, the Drupal community is taking the latest Drupal 8 codebase and simply removing all deprecated code

Thus, to perform the upgrade, remove the references in your custom code to any deprecated Drupal core or contributed code, replace by referencing current code where applicable, implement new functionality where you have to, and the upgrade is done. There is no new object model to learn, no new theme layer to adapt to, and no new data schema to adopt. The upgrade process resembles more of that of a point release than of a major one.  The move to Drupal 9 is not revolutionary, it is evolutionary.

The updates to most of the major contributed modules are well underway. For Drupal 8 sites that require no changes to their custom code, many of them will be upgradable to Drupal 9 on day one. 

Mediacurrent and Drupal 9

As a top 10 contributor to Drupal, Mediacurrent is remaining consistent with its contribution ethos for Drupal 9. At this writing, there are numerous Drupal 9 beta 1 blockers, and we are dedicating several developers to the resolution of those blockers. 

Further, we at Mediacurrent are updating our three major Drupal 8 distributions for Drupal 9:

  • Rain -- Rain is a Drupal installation profile that adds out-of-the-box editorial, administrative and media enhancements to the core Drupal installation. Modeled after the distributions Acquia Lightning and Thunder CMS, the Rain profile packages and pre-configures many core and contributed modules to make building Drupal websites faster and easier.
  • Guardr -- Guardr is a Drupal distribution with a combination of modules and settings to enhance a Drupal application's security and availability to meet enterprise security requirements out-of-the-box.
  • Collective Directory -- A new distribution that will be available for Drupal 8 at launch and then available for D9 shortly after release - full details soon!

As part of this effort, we will be collaborating with the community to get the necessary pieces of these, especially all of the contributed modules they use, ready to run on Drupal 9. We expect to have beta releases of these available soon after Drupal 9.0.0-beta1 is launched later this year.

Finally, we are preparing our clients and colleagues for the Drupal 9 release. For our clients, we are preparing individual roadmaps unique to their architecture to optimize their transition to Drupal 9. We’re reviewing each client’s custom codebase and creating a ticket for each project as necessary for the upgrade.

For our colleagues in the Drupal community, be on the lookout for a blog post on top changes needed to make your module or theme run on Drupal 9, along with our existing post on how to get your site and team ready for D9.

We’ll Help You Get Ready For Drupal 9

Whether you’re ready to help your team make the transition to Drupal 9 or are weighing the pros and cons of it, we’re ready to help you at your point in the journey. Contact us in our online chat to the right, or by filling out our contact form. We look forward to working with you!

Pages

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