Upgrade Your Drupal Skills

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

See Advanced Courses NAH, I know Enough
Apr 21 2021
Apr 21

This is the second of the two-part series on ‘Formulating a business case for a new CMS’. The first part debates on open source CMS and proprietary CMS. The second part will discuss various other factors that are to be considered before opting for a new CMS for your business.

A Content Management System is one of those things that we didn't realise we needed until they became commonplace, and now it is near impossible to survive without using, or hearing of one every now and then. In an age where convenience and agility are prioritised, the concept of a CMS holds great merit. It highly simplifies the work of creating a website and expands the use case of technology, making it accessible to a wide range of people - whether technically proficient or not.

Factors to consider while choosing a new CMS

While one CMS may be good for a particular enterprise, it might add no value or even prove to be detrimental to the other. Hence, skimming through important factors is an essential aspect of building a business case for a new CMS. While in part 1 we have discussed multidimensional comparisons between open source and proprietary software, this part is focused mainly on discussing the factors that are responsible and must be addressed before bringing a new CMS to the table. 

Why go for a new cms? 

Before trying to answer questions like why to choose an open source CMS or when to go for a proprietary one, first the need for a new CMS should be justified. Is there aur technology problem that you're facing? Can that problem be solved by undergoing something less monumental than migrating all your content to a new CMS? If yes, should you update, rather than replacing your existing base? 

Once the need for a CMS is mapped out and you are sure that you'll be going through that route, the next step would be to shortlist, analyse and re analyse every aspect of the new technology. You should be thinking as holistically as possible during this phase to eliminate potential issues in the future.

  • The CMS must resonate with your brand image, and facilitate the execution of your agendas. . 
  • You also need to analyse the CMS in terms of the amount of content you’ll be operating on it and whether it will be able to handle that, and if it provides the architecture for you to manage your content methodically.

Listing down both the business related pros and the probable risks of every option would be a good idea before proceeding. 

Primary stakeholdership 

A question pretty important but often ignored while choosing a new CMS is who has the stakes to decide and consider on the different CMS features that are being debated. As your organisation expands digitally and physically, the number of stakeholders starts increasing as well. The various teams dealing with IT, Marketing and Content might see a different CMS each that fits well with their demands. It is, again, a matter of debate to decide which area your company relies more on and is looking forward to invest in. 

SaaS vs Hosted vs On Premise

A SaaS (Software as a Service) CMS is a cloud computing environment with no obligations to install, update or maintain it. In stark contrast to this is an on-premise CMS where a licence is required from the vendor to install the software on your own server, and the provider is also responsible for maintaining the software. In a cloud-hosted CMS solution, a licence is required to install the software, but after that, it works just like an on-premise CMS.

These technicalities also need to be addressed while the discussion for onboarding a new software, so that the team finally ends up choosing the right CMS.

Business impacts

Long-term impacts need to be examined beforehand if possible. CMS platforms categorise into Development Platforms and Solution Platforms - where the development platforms act like a blank canvas one can build anything on, and the solution platform comes largely pre-built with customisable features. If your business banks on a good User Experience and looks forward to personalizing user experiences, a development platform might be a better choice. Similarly, if the focus area is not UX or creativity but content, a solution platform would be a better bet.

Technology Integration

Exhaustive documentation is required to analyse what tools and technologies you are going to use for marketing forms, project management, CRM (Customer Relationship Management), email marketing and even customer support. Does the CMS provide enough flexibility and scalability features to operate each one of these tools efficiently? You don't really need an all-rounder CMS, you just need to figure out what technologies you are going to use and find an associated software product that syncs well with those.

Skillsets

Choosing a good team is way more tedious a task than choosing a good CMS. So now is the time to talk to the team members and discuss their strengths and weaknesses regarding the tools they are comfortable using, or are expecting to be a part of their workspace. Consider your existing IT infrastructure and expertise and analyse whether your team has sufficient time to allocate to installing, maintaining and securing a CMS. Do you have sufficient in-house resources to customise the CMS if needed? It is imperative to answer all such questions before going ahead.  To know more, read what skillsets facilitate traditional and decoupled Drupal development.

Feature bloat vs Feature-rich

Always bear in mind that a lot of features in a CMS require nerve and sinew to make them functional. You need to know the basics of every feature that you are planning to utilise. A software may have immense capabilities regarding personalization and customization, but these won't articulate by themselves. The question here is - do you possess the necessary resources to breathe life into all of this? More importantly, all that sparkles isn't gold. Do you, in fact, need all of this pomp and show, or is most of it going to lie stagnant or cause unnecessary delays due to a heavy system? Do realise that you want a feature-rich CMS, ie, one that has features that you actually need. 

The potential CMS of choice might be great for complex workflows, but the question is do you have or need a complex workflow with multiple approvals on the line to make decisions? It is imperative that you remain realistic about your company’s maturity and roadmap and see if it aligns well with these technologies, hence not overdoing features to the point where they become unnecessary ornaments on the site. Always keep the requirements matrix of your platform in the backdrop while deciding on which CMS to go for.

Product demos

Theory can never be as reliable as practical examples.  An investment as elaborate as choosing a new CMS cannot be planned without taking into consideration various product demos and user reviews. Once the feature requirements have been worked through, develop usage scenarios and conduct initial product research for the next phase of the selection process - which is to document your needs and test the product against these requirements. Try to look for reviews that talk about problem solving, certain encountered issues, software upgrades and other potential problem causing areas.

In this phase, also try to examine whether the product naturally fits the vision of your company, what compromises might need to be made if you choose the product, and more importantly, if the vendor understands your business' work patterns and complements your ideas. Also run a check with your present team on how compatible they are with the platform.

Understanding the product roadmap 

It is imperative that you realize the roadmap of the potential vendors as well. Does it align with the track that you have set for your business? Taking the effort to track the future plans you are thinking of opting for would not be 'going overboard'. Being a little foresighted is an essential quality in a business owner. With new technologies taking over every now and then, the general trajectory might undergo change several times over the years - hence, a good way to track the adaptability of a CMS would be to trace down history and examine how much it has changed in the past to to fit into the ongoing trends, like decoupled architectures, cloud, SaaS etc. 

Cost efficacy

The budget is one of the first things an organisation considers. All kinds of costs - initiation, operation and implementation - need to be considered while chalking out the investment, as we don’t want the plan to turn turbulent at a later date. Software upgrades, maintenance, premiums - everything should be studied carefully in order to comply with your monetary limits. Both proprietary and open source models incur certain kinds of costs but in very different dimensions. Hence, it is upto you to prioritise where you want your money to be spent.

Drupal: An ideal CMS for building a modern web property

Since the choice of a software turns out to be the bedrock of all business activity online, most users try going for reliable options that have stabilized their name in the market by proving to be a resilient business partner over the years. Drupal is one such CMS that has been here for over two decades, and has been powering websites across the globe ever since. Let’s see how Drupal stands against the various dimensions of choosing a new platform.

  • Open source

Drupal is an open source platform with contributors bringing in global, cosmopolitan perspectives to their work each day. Apart from the many benefits of being open source, there's also a social satisfaction that comes with being a member of the community. Hence, Drupal development is free of cost to begin with. Depending on the level of customisation and the number of features you want to use, partnering with a digital agency can of course incur costs.  Learn more about merits of open source by going through the impact of open source during covid-19 pandemic, influence of large companies on open source, the power of being recession-free and the perks of contributing to it.

  • Content authoring

Drupal offers all the high utility tools required for content creation, publishing and the maintenance of a seamless workflow. Authentications and permissions are placed at appropriate levels to help manage editorial management. This means that right content architecture can be created using the admin interface, or even programmed. One can work with granular tagging and mobile editing to create content that is suitable for both websites and mobile applications. Drupal allows content authors to use a WYSIWYG editor to create and edit content in-place, ie, one could browse to a page, click on the content and edit it right there, on the spot. Apart from this, Drupal provides for tracking content revisions, an essential feature is you have multiple editors on board.

Drupal with its powerful display mode tools categorizes and displays only the most appropriate content including an array of media. While the Layout Builder allows content authors to create customisable visual layouts to display content, the Paragraphs module paves the way for an organised, cleaner site by providing pre-defined Paragraph Types for organising text blocks or images in a slideshow. For more on content authoring using Layout Builder and Paragraphs, read here.

  • Ease of use

Drupal's ease of use again depends on the manner in which you are using Drupal. If you are using the headless version to create custom layouts and mobile applications, very easy usability cannot be expected with the additional technicalities involved. However, developers point out that the availability of modules for every functionality on Drupal makes it extremely convenient even for newbies, making the learning curve quite short. Moreover, starting as a Drupal developer requires the least amount of Drupal centric learning and one can even start with the basic programming languages. Read here to know more about how easy learning and working with Drupal can be.

  • Industries suitable 

Since everything in Drupal is extremely customisable, it can be moulded into under requirements of literally any industry, both government and private. Currently Drupal is in use across several industries dealing in digital mediaFinTech, sports,  food, education, and many more as can be seen below.

white graph with blue bars showing the various sectors in which the cms drupal is usedSource : Drupal.org

In terms of security, Drupal emerges as a solid and secure CMS. Being designed keeping robust security in mind, it comes as no surprise that Drupal powers the websites for many leading corporations, brands and governments across the world. While one of the largest open source developer communities in the world ensures a rapid response to any issues, a bunch of problems are prevented solely by Drupal's strong coding standards and a stringent community code review process. No wonder, a report by Sucuri proves that Drupal is one of the most secure CMS among the major open source CMSes in the market.

grey and green bar graph showing cms infections in 4 different cms side by sideSource : Sucuri
  • Scalability and performance

In a case where it is used and optimised appropriately, Drupal can be scaled up to reach millions of people. For instance, the CDN (Content Delivery Network) module helps one integrate their Drupal website to a CDN, which is basically a globally distributed network of proxy servers that increases the reach of your content manifold. If the hardware of your server is giving up, Drupal allows you to scale it either vertically or horizontally - i.e., by either adding more resources at the same server or adding multiple servers to divide the load. Read about Drupal’s immense scalability and high performance offerings to know more.

  • Decoupled Drupal 

Decoupled Drupal comes with a bunch of flexibility. Developers are free to choose any front end tools that they deem fit while backing on Drupal to provide a robust backend. Decoupled Drupal architecture provides the best possible framework for serving content in the form of chat platforms, conversational UIs (User Interface) etc. through a variety of channels like mobile apps, Internet of Things apps, smartwatches and CRM systems. To know more, read about Decoupled Drupal architecture, difference between monolithic and decoupled architectures, when to move from monolithic to decoupled architectures, how to decouple Drupal, and success stories on decoupled Drupal.

Drupal allows for maintaining separate independent sites that branch out from a single code base while having their own separate databases, configuration, files and URLs.

  • Multilingual 

Drupal enables building multilingual websites with its built-in language handling abilities that make it easy to create localised digital experiences. Certain core modules in Drupal facilitate the translation of every element of a website. Explore more about Drupal’s magnificent multilingual capabilities here.

Drupal can greatly aid you in the Search Engine Optimisation of your website, necessary for clients to find you. You can rely on Real time SEO For Drupal to constantly remind you of anything you might have missed in the optimisation process, and work with the Googalytics module to integrate Google Analytics in Drupal, hence keeping in touch with all the current trends. To know more about Drupal’s SEO features and to update yourself on the present and upcoming SEO trends, check this guide on Drupal SEO.

  • Mobile apps

Drupal focuses on mobile first development. It has also come up with a mobile initiative for this, along with multiple device friendliness to bring about community participation in the same. Not only that, the potential for building mobile applications with Drupal is plenty. For example, you can extract the power of Flutter and Drupal together to build an intuitive mobile app. 

  • E-commerce

Using Drupal Commerce, businesses can utilise an open-source eCommerce framework to build flexible eCommerce websites and applications based on Drupal. Drupal commerce aims to make teams more productive by simplifying complex checkout outflows and keeping every feature accessible at an arm’s length for a merchant of any size. One doesn't need to worry about conforming to industry security standards while implementing Drupal, and can easily rely on  Drupal's own best practices.

It also includes provisions for integrating payment and fulfillment tools to strategize the best marketing strategies tailored for your business. The Commerce Kickstart distribution can be used to start the project, as it comes loaded with features that make it easy to use and administer.

For creating a more engaging and interactive website while still staying in touch with Drupal Commerce, headless Drupal could be utilised. To complete this transaction, APIs (Application Programming Interface) act as the bridge to connect the frontend and the backend - with Commerce API extending JSON:API and Commerce Cart API which lays out an interactive interface of the buyer’s cart through REST API.  Read here to know more about content-driven commerce with Drupal.

  • Web accessibility

Drupal has various modules in place to ensure web accessibility guidelines, realising how important it is to make the website accessible to users across the globe. Modules like CKEditor provide a number of features like CKEditor Accessibility Auditor and CKEditor Accessibility Checker to analyse if the overall experience is convenient for disabled people. Keeping accessibility uniform throughout the site, Drupal’s Automatic Alternative Text Module provides alternative texts in all the images where the content author may have missed it. To further your knowledge on how Drupal ensures web accessibility, read here.

  • Documentation

Every little step taken by Drupal or the community  is exhaustively documented for greater knowledge sharing and transparency among the stakeholders and contributors. Dries Buytaert’s State of Drupal presentation in July 2020 and December 2020 includes all the changes and upgrades made in Drupal in the past year. For more proper documentation on everything Drupal, you can check out Drupal’s official documentation page. Whether you may want to try out a Drupal demo site or are ready to build a perfect Drupal-powered site for your business, the curated list of user guide, evaluator guide, local development guide and many more will help you easily start your Drupal website.

  • Agency partner availability

Drupal Marketplace lists all the agencies that are avid contributors to Drupal's modules, distributions and case studies revolving around Drupal projects. Hence, if a business is thinking of starting a Drupal project but doesn't have the required expertise to go about it, they can contact one of these top ranking agencies for Drupal development services. OpenSense Labs ranks in the top 5 and would love to partner to help fulfill your digital transformation dreams. And, if you wish to leverage more resources for your projects, our staff augmentation services would take care of the rest.

  • Support and maintenance

One of the biggest plus points of being an open source platform is that support is highly accessible and maintenance is pretty swift. Since it is such a widely cultivated and utilised platform, there cannot be bug fixes related to important issues lying around stagnant for a large amount of time. The Drupal community is always walking towards resolving issues that crop up from time to time. 

If you have a Drupal website that you require assistance with, we at OSL could help you out with our  Drupal Support and Maintenance  program.

Conclusion

This concludes our exhaustive list of factors responsible for choosing a new CMS, complete with a business case comparison between open source and proprietary models. Hopefully this article helps you in making the correct decision regarding your business' choice of the appropriate digital platform.

Apr 20 2021
Apr 20

open waters

New Year, New Faces, Same Focus

We’re back! Season 2 of Mediacurrent’s Open Waters podcast is officially on its way. We recorded a special trailer episode to celebrate. 

Our own Susan Cooper is taking over the mic this season with co-hosts Mark Shropshire and Mario Hernandez. Just like last season, our purpose is to explore the intersection of open source technology and digital marketing. We’ll share the challenges and solutions we see with our own clients and in the market.

During season 2, we'll be covering topics including:

  • How to optimize your digital strategy
  • Accessibility as a business imperative
  • UX design principles
  • How it all works together using open source technologies like Drupal

Welcome to Season 2

Meet the Hosts 

Susan Cooper 

Susan headshot

Role at Mediacurrent: Senior Project Manager

Podcast creds: Co-host of Inclusion Catalyst, a podcast about diversity and social justice issues, and Producer of Marketing Upheaval.

What are you most excited about for season 2? I love podcasting and audio branding in general, so this is something I’ve been looking forward to since the day I started at Mediacurrent! These conversations are a great opportunity to learn from our guests and build community around our open source mission.

Mark "Shrop" Shropshire 

Shrop headshot

Role at Mediacurrent: Senior Director of Development 

Podcast creds: Shrop can be found talking about open source security, leadership, mentoring, and more on his two personal podcasts: goServeOthers and SHROPCAST

What are you most excited about for season 2? The opportunity to learn more about what other talented folks are doing in the marketing and tech industries. It is easy to be comfortable with what you know today, but I find that having conversations with others can really challenge you to think differently and learn new niches.

Mario Hernandez
Mario headshot

Role at Mediacurrent: Head of Learning 

Podcast creds: Member of the original cast of Open Waters  - Mario co-hosted the first season of our podcast.

What are you most excited about for season 2? I am looking forward to interviewing industry leaders to discuss all things open source. I am also really excited about teaming up with Susan and Shrop. Both of them have vast experience in podcasting and I am ready to learn from them.

Podcast release schedule 

New episodes will be released monthly on the Mediacurrent blog and wherever you follow your favorite podcast. You can also follow us on Twitter for updates.

Subscribe to Open Waters

Visit mediacurrent.com/podcast to hear the latest episode and subscribe to the podcast on your favorite podcast app. Share the podcast or tell a friend about it - tag us @mediacurrent on Twitter. 

How can I support the show?

Subscribe, leave a review, and share about us on social media with the hashtag #openwaterspodcast. Have an idea for a topic? Get in touch with our hosts at [email protected]

Apr 20 2021
Apr 20
easy coffee module install and configuration

https://www.drupal.org/project/admin_toolbar

Credits & Thanks

Thank you to:

About the Admin Toolbar Module

The Admin Toolbar module gives you one-click access to Drupal admin screens. It works like a drop-down and slide-out menu system that is so popular on the web.

While we prefer the speed and ease-of-use of the Coffee module, there are times we need to see the hierarchy. The Admin Toolbar module provides that ability.

admin toolbar drop down example

Install and Enable the Admin Toolbar Module

  1. Install the Admin Toolbar module on your server. (See this section for more instructions on installing modules.)
     
  2. Go to the Extend page: Click Manage > Extend (Coffee: “extend”) or visit https://  
  3. Enter “admin toolbar” in the search field to find the module:
     drupal admin toolbar installation
  4. Select the checkbox next to Admin Toolbar.
     
  5. Click the Install button at the bottom of the page.

The Admin Toolbar module uses the Admin menu permissions. If you can access the Admin menu, then you have the permissions you need. Otherwise, you may need to get the appropriate permissions.

Apr 20 2021
Apr 20

There might be instances when you want to restrict access to some pages of your website. It could because you want increased security for the high-risk data that’s lying on the page or you want only your subscribed users to be able to view the content. This functionality is provided in Drupal 8 by a module with an interesting name called the Rabbit hole module. The module is also compatible with Drupal 9! In this article we will be elaborating on the module and how you can implement it in your next Drupal project.

Control Access to Restricted Pages

What does the Rabbit Hole module do?

The Rabbit Hole module provides the ability to control what should happen when an entity is being viewed at its own page. It also controls what happens when someone visits an entity page.

In simple it allows you to easily redirect or prevent users from viewing specific types of entities on your site. You can grant or deny user access to entity types or specific Drupal entities based on user roles. For example: To display paid content to users with a subscription or to allow special user roles.

Some of the entities that it supports are Nodes, Taxonomy Terms, Users, Files, Group and Media Entity

The Rabbit hole module for Drupal 8 provides multiple options to restrict access to specified pages. You can choose to deliver access denied or page not found pages. You can also choose to redirect a page to any path/URL. Or you could choose to display the entity as it is.

Configuring the Rabbit hole module

Here’s how you can configure the Rabbit hole module for an entity type:

Configuring the Rabbit Hole Module

Configuring the Rabbit hole module: Select the required entities

Create a VIP Role

When you create a VIP role, only paid users will be allowed to view the content. Without a paid membership user will be Authenticated user.

  • On the Admin toolbar click on People -> Roles -> Add Role
  • Give the role name as VIP
  • Click on Save 
Creating VIP Role

Creating VIP roles

Create Users

Here let’s create an Authenticated user and a VIP user.

  • Click on People -> Add user
  • Enter the data and select the role as VIP
  • Click on Create a new account 
Create New User Account

Create a new user account

In the same way create another user with the role of Authenticated. After that, the People page will look like this.

All Users

All Users

Create VIP Content Type

  • Click on Structure -> Content type -> Add content type
  • Give a proper name and description for the content type
  • Click on Rabbit hole Settings
  • Keep “Allow these settings to be overridden for individual entities” option as checked. It will allow administering permissions on a node basis
  • Choose the redirect option and enter the URL of the site to which you want to redirect
  • Click on Save and manage Fields.
Create VIP Content Type

Create VIP Content Type

  • Add an image field and place it above the body field on the content type to manage display settings.
  • Click on Save 
Save VIP

Set Access Permissions

Users with a VIP role will have to be able to bypass the Rabbit Hole control. 

  • Click on People - > Roles
  • Click on the dropdown arrow of VIP role and click on Edit permissions
  • Search and Check for the Bypass Rabbit hole action for Content permission. Save the permissions. 
Bypass Rabbit Hole

Create Content

  • Click on Content -> Add content -> VIP content
  • Create a node and hit Save 
Create Content

Create content

Test the Rabbit hole Module

  • Login as an Authenticated User
  • Click on the Teaser title of the VIP content on the Home page)
Testing Rabbit Hole

Testing the Rabbit hole module

  • It will (and should) redirect to the Access denied page.
Access Denied for Authorized User

Access denied for an Authenticated user

  • Now let’s logout and login again but this time as a VIP user.
Login VIP User
  • Go to home page and click on the Teaser title.
Committed to SafetyView Node and Content
  • As a VIP user, you will now be able to see the node and content.
Apr 20 2021
Apr 20

If there is one thing that is in abundance today, that’d be competition. It starts as soon as a child is born and ends when he takes his last breath. It’s not just people who have to face the gruelling reality of perpetual competitiveness, it’s also the non-living objects who compete. 

Tell me, can you possibly buy the new Adidas Aerobounce 2 without checking what the competitors have to offer? And can you really buy that shoe without comparing the prices on the online and offline stores? I am sure not. 

This is why brands and businesses try to be the best in catching the eye of the consumer and presently the best way to do that and beat the competition is through Digital Experience Platforms.

Today’s consumer doesn’t connect to a business through medium, there are a number of touchpoints in play and integrating all of those together to engage your consumer base is what a DXP does. This helps businesses to not only build and deploy digital experiences, but also improve them continuously across your websites, portals and mobile applications. All of it accumulating to a wholesome user experience.

The various features of a DXP are represented in the image in the form of a diagram.Source: Bloomreach

The diagram above is the sum total of a DXP’s powers, which are pretty versatile, as it combines all of the various aspects of online businesses, be it social media or personalisation and targeting, and lets you deliver a seamless digital experience. 

Digital Experience Platforms provide an edge to a business that CMSs and WEMs cannot and that is why they are becoming popular by the day. Their advantages back this claim. 

  • The ability to manage the bazillion consumer touchpoints is the paramount merit, be it FAQs or chatbots, there is an answer to everything.
  • Then is the ability to connect your business’ various aspects at one place, from sales and commerce transactions to instilling loyalty amongst the consumers through in-house programs. 
  • The ability to be flexible is inherent in DXPs as well. You can build it on your rhyme and rhythm, there won’t be any objections. 

Let me also give you a few statistics to understand the rage DXPs are becoming in the present and what their future looks like.

Future projections of the DXP market is depicted.Source: Markets and MarketsThe market of DXPs is shown based on geographical regions in a bar graph.Source: Markets and Markets

Based on these figures, I have to ask, when are you switching to a DXP? If the answer is right about now, you have landed yourself in the right place because I am going to be talking about all the things you would have to consider before choosing the right and most suitable DXP. So, let’s begin our DXP checklist. 

What tools and integrations are you using and plan to use?

The foremost question to ask relates to technologies you are using and plan to use in the future. You can document these technologies based on your consumer’s journey. This would allow you to create the most optimal digital experience for your users because you would have worked on the gaps and weaknesses of the journey. 

From that first step, you have to move onwards and upwards and focus on all the tools and integrations you would need to work with your chosen DXP. Let’s take a look at them together. 

Data Analytics 

Every organisation has a data warehouse, however, it’s proportion does vary. This data might as well be responsible for shaping your strategy. Therefore, you have to consider your analytical requirements before taking on a DXP. 

Remember that you can always come to Google Analytics for any analytics, even after choosing a closed DXP. To know more on how data driven strategies can help understand consumer behaviour, read here.

Digital Marketing Tools 

The DXP you choose should be able to integrate with various marketing tools in the market. Look for integration support with a keen eye, it could be out-of-the-box or an extension, but it has to be there with a side of third-party marketing automation at play.

Conducting a thorough review of the MarTech stack is also recommended here, find out what is being used and where it is being used before going any further.

Digital Asset Managers 

If you have a digital asset manager, you should consider one thing and that is its integration with other downstream systems. This would ease the flow of images and assets through your organisation. Everything about digital asset management (DAM) here.

Backend Integrations 

Then is the question of backend integrations, you could have a CRM or an EPR working at your backend. If that is the case, you ought to start finding them out and assess their compatibility with your DXP provider.

What are your notions about decoupling?

Nobody likes being constrained, the joy you find when you are free to do as you want is unlike anything else. That is pretty the scenario with decoupling or going headless. You could have a strong monolithic architecture now, but in the future that could change, because what works today may not work tomorrow. Therefore, you should think about choosing an Open DXP, if you are indecisive about decoupling today.

Your projects could need microcontent; 
Your content could need to be published on multiple channels; 
Your developers could ask to go headless because there is so much to explore; 

All of these scenarios are real possibilities and you must consider them before making firm decisions on decoupling and DXPs. There are plenty of these platforms that support going headless and having that room to explore can’t be bad.

What are your plans for commerce?

Commerce is another important aspect you need to consider before choosing a DXP. Having all the right features to look for is crucial here. You have to ensure that the DXP’s commerce strategy actually aligns with your commerce needs and at the same time gives you room to be better. 

  • Assess yourself first, know whether your needs are just browse and buy or are they more than that.
  • Assess whether the DXP should be able to work with different commerce technologies to get you what you want.
  • Assess your Stock Keeping units and let their count decide the kind of robustness you would need in your DXP. 
  • Assess the kind of data model you need based upon the working of your team and its present and future needs. 
  • Assess the importance of content in commerce, more like search it up and integrate it without any hesitation. This would create a much more effective experience for the user.
  • And assess whether going headless is worth losing the commerce extensions that come along with the platform.

Once you have an answer to these, you’ll become a step closer to the perfect DXP for you.

What are your editorial needs?

After technology, comes the part your content writers and editors play in the DXP decision. You have to understand that the more writers and editors you have, the more complex the editing experience would become and you would need a DXP that can handle it.

In this regard you have to consider three things before making a decision. 

Cache Manipulation 

Cache manipulation features allow you to sync your developers’ caching strategies with the user's needs. This helps in making you content appear quickly to the users and a perpetual communication in your cache layers.

Review Needs 

Sometimes your content needs to be reviewed by people within the organisation before it goes live. These could be your legal department or even project managers. If that is the case, you need to look for a DXP that is equipped to handle this kind of editorial needs.

Multilingual Requirements 

Finally, many sites today are operating globally, this means they have to change to the local language. For that your DXP needs to have impeccable translation needs, with understanding of the various dialects of the said language. You can’t be using American English on a Scottish website, it won't be wrong or unethical, just inappropriate and your audience might not be able to relate.

What is the value of security for you?

Security is another major criteria that has to be given its due importance. Making a fully-functional site with all the right features, but lack of security would make all your efforts go in vain. That’s why you have to look for the right security features in a DXP to avoid the unfortunate fate.

  • The foremost feature to want should be an integration to Varnish and a CDN along with free-flowing interactions between the DXP and cache layers. 
  • Then you should think about securing your network nodes that are outside your network core. This is done through edge protection services provided by top DXPs, so make that a mandate.
  • Distributed Networks Attacks can be quite harmful, so ensure that the DXP you choose can prevent and counter them.

Also remember that you need to let the experts do the decision making in this regard because you cannot afford to go wrong here. 

What about government regulations and stipulations?

There are a number of rules and regulations that your digital experiences have to adhere to with a super glue consistency. A DXP that makes that easy for you is always going to be a winner; you must know what happens when you go against the law.

Here are the paramount regulations that you have to stick to.

  • Americans with Disabilities Act or ADA;
  • General Data Protection Regulation or GDPR; 
  • Health Insurance Portability and Accountability Act or HIPPA; 
  • Family Education Rights and Privacy Act or FERPA; 
  • Web Content Accessibility Guidelines or WCAG;

These are a must when building digital experiences, so grill your prospective vendors about them and if possible, ask for case studies.

Apart from this, Personally Identifiable Information should be a factor in your choice. The way it is collected and stored should be compliant with the GDPR regulations.

What are the financial implications?

When you would be looking for a DXP, you will certainly want one that will favour all the technologies that you want to incorporate into your organisation’s digital platforms. Am I right? So, you will be aiming for the best out there. However, what if the best is not within your price range. Do you settle then? No, of course not. You choose what is the most suitable for you and whatever ticks the most boxes. 

So, before or even during the selection process of a DXP, you need to allocate the budget you are comfortable with. It could be less than a hundred grand or close to a million dollars, that is on you. 

Remember that just because a DXP is expensive, doesn’t mean it is the best. Whatever your budget may be, you could still get what is best for you.

Finally, what do you want the future to hold for you?

Life is often regarded as transitory and it really is; what is important today may not be important in future and what may seem trivial today may become the next big thing. 

The same is true for DXPs and your digital experiences; they will evolve with time. Therefore, when you choose an agency remember to not let it make you inflexible. You would need to keep an open mind about the future and your digital experiences should have the same openness in their build. 

  • Look for future scope in the DXP; 
  • Look for extension of current technologies like marketing automation; 
  • Look for an open DXP architecture with flexible APIs.

You certainly cannot be sure of the future, but what you can be sure of is the fact that the future is going to change and you would have to change with it. 

Bottom Line 

As Steve Jobs said,

“You’ve got to start with the customer experience and work back towards the technology- not the other way around.”

There is real meaning behind that statement, all of your digital experiences start with and end with the consumer, so why not prioritise them over everything else. 

So, how to choose a DXP? By assessing your past, present and future in accordance to your consumer experiences. You must want to create a fulfilling digital experience for your users, for that you have to have a fulfilling digital experience platform that guarantees to check every and all of your necessities. The questions I talked about above would help you kick start your DXP journey. OpenSense Labs continues to build amazing digital experiences with Drupal that endeavor to provide all of what we discussed, so you could, maybe, start looking here to build a Drupal-powered DXP. 

Apr 19 2021
Apr 19

Lynette has been part of the Drupal community since Drupalcon Brussels in 2006. She comes from a technical support background, from front-line to developer liaison, giving her a strong understanding of the user experience. She took the next step by writing the majority of Drupal's Building Blocks, focused on some of the most popular Drupal modules at the time. From there, she moved on to working as a professional technical writer, spending seven years at Acquia, working with nearly every product offering. As a writer, her mantra is "Make your documentation so good your users never need to call you."

Lynette lives in San Jose, California where she is a knitter, occasionally a brewer, a newly-minted 3D printing enthusiast, and has too many other hobbies. She also homeschools her two children, and has three house cats, two porch cats, and two rabbits.

Apr 19 2021
Apr 19
Logos of Pfizer, Moderna and Johnson & Johnson

Pfizer, Moderna and Johnson & Johnson all use Drupal for their websites. They each have hundreds of Drupal websites.

AstraZeneca, the fourth vaccine producer, doesn't use Drupal. However, the University of Oxford, who developed their vaccine, is an active Drupal user.

These organizations save millions of people each year. I'm proud that they use Drupal.

Apr 18 2021
Apr 18

A few years ago, during our preparations for the 2018 Aaron Winborn Award, we had the idea that the award should be created by a community member. 

Rachel Lawson, a former member of the Drupal Community Working Group's conflict resolution team, created hand-blown glass awards for both the 2018 and 2019 winners, Kevin Thull and Leslie Glynn. Last year, Bo Shipley created the award for Baddý Breidert. We were lucky to have Bo create the award for this year's winner as well, AmyJune Hineline

Bo crafted the awards out of leather - stacking, gluing, carving, then oiling the leather into its final shape and finish. He was generous to share some photos of the process.

Sanding the stacked leather
Sanding the stacked leather.

Applying the stencil
Applying the stencil.

Cutting and chiseling the design.
Cutting and chiseling the design.

Cutting and chiseling the design.
Cutting and chiseling the design.

Closeup of the texture.
Closeup of the texture.

Mounting to the base.
Mounting to the base.

Mounting to the base.
Mounting to the base.

We cannot thank Bo enough for donating his time and talent for this project!

If you are interested in crafting a future Aaron Winborn Award, please let us know at drupal-cwg at drupal dot org!
 

Apr 18 2021
Apr 18

Spring 2021 Drupal Career Online class photo

We're halfway through the 12-week Spring 2021 Drupal Career Online semester, with a wonderful group of nine Drupal students. We are just finishing up our spring break/independent study week, and looking forward to diving into module and theme development, followed by team workflows, the configuration system, and more before we confer their certificates at graduation on May 19th. During the first half of the course, we spent lots of time with information architecture (entities, bundles, and fields) as well as Composer, Drush, and Git topics. 

Some insight on this semester's class:

  • Includes students from 3 countries.
  • There are one or more Windows, Mac OS, and Linux users.
  • Some are brand new to Drupal, while others are Drupal content managers, and Drupal 7 developers.
  • They have varying levels of previous Drupal, command line, and Git experience.

Since different students have different goals, they are all taking advantage of the wide range of resources we offer to help each student achieve their personal/professional goals. This includes office hours to help students work through course or non-course related Drupal issues, screencasts for every lesson, and one-on-one community mentors for every student.

Our next semester of Drupal Career Online begins on August 30. If you know someone who might be interested in applying, they can learn more at one of our free, 1-hour Taste-of-Drupal information webinars.

Apr 16 2021
Apr 16

Often when things seem really complicated, I think it's because I must be doing it wrong.

Working on Drupal core since dependencies were removed from git has seemed really fiddly. For a long time I thought I must have missed something, that there was some undocumented technique I wasn't aware of.

But I've asked various people who work on core a lot more than I do, and they've confirmed that what I've been doing is pretty much the way that they do it:

  1. Get a git clone of Drupal core.
  2. Run composer install on it.
  3. Write code!
  4. Make a patch (well, a merge request now!)

That all sounds simple, right? But wait! If you're working on core, you're going to want Devel module for its useful debugging and inspection tools, right? And Drush, for quick cache clearing. And probably Admin Toolbar so going around the UI is quicker.

But you have to install all those with Composer. And doing that dirties the composer.lock file that's part of Drupal core's git clone.

It's fairly simple to keep changes to that file out of your merge request or patch, but pretty soon, you're going to do a git pull on core that's going to include changes to the composer.lock file, because core will have updates to dependencies.

And that's where it all starts to go wrong, because the git pull will fail because of conflicts in the composer.lock file and in other Composer files, and conflicts in that file are really painful to resolve.

So maintaining an ongoing Drupal install that uses a Drupal core git clone quickly becomes a mess. As far as I know, most core developers frequently reset the whole thing and reinstall from scratch.

The problem is caused by using the git clone of Drupal core as the Composer project, so that Drupal core's composer.json is being used as the project composer.json. But there's a better way...

Using Composer with git clones

Composer has a way of using a git clone for a package in a project:

  1. Create your own git clone of the package
  2. Declare that git clone as a Composer package repository in the project's composer.json
  3. Install the package

The result is that Composer creates a symlink from your git clone into the project, and doesn't touch the git clone. You need to be fairly lax in the version requirement you give for the package, so that Composer doesn't object to the git clone being on a feature branch later on.

This, as far as I know, is the standard way for working on a Composer package that you need to operate in the context of a project. It works for library packages and Composer plugins.

For Drupal core...? Well, it works, but as you might have guessed it's a little more complicated.

Drupal has opinions about where it expects to be located in a project, and furthermore, has a scaffolding system which writes files into the webroot when you install it. All of that gets a bit confused if you put Drupal core out of the way and symlink it in.

But with a few symlinks, and one sneaky patch to a scaffold file, it works. It's all quite fiddly and so I've made...

The Drupal Core development project

This is a Composer project template, available at https://github.com/joachim-n/drupal-core-development-project. It handles all the necessary tweaks to get Drupal to work when symlinked into a project: install it as a Composer project.

There are still a few limitations: those are detailed in the README too.

Of course, I've now fallen down the rabbithole of doing more work towards making Drupal completely agnostic of its location, rather than the core issues I wanted to work on in the first place.

Please try it, report any problems, and happy coding on Drupal core!

Apr 16 2021
Apr 16

Matt and Mike have Front-end core committer Lauri Eskola on to talk about the new Drupal core theme starterkit that can be used to generate new themes. We'll talk about what's been done, and what's in store for this new Drupal core feature.

Apr 15 2021
Apr 15

Featuring a video from Acro Media’s YouTube tutorial series Tech Talk, this article will walk you through setting up an awesome Drupal Commerce product catalogue using Search API and Solr, and then adding various ways of filtering the results (product search, sorting options and Facet categories).

Ten steps to creating a product catalogue with Search API, Solr & Facets

These 10 steps will get you a Search API index using Solr, setup a View to display the results of the index, and then implemented 3 different ways to filter the results (search, sorting and Facets).

The end result of this guide will be a catalogue that functions in the same way as our Urban Hipster Drupal Commerce demo site’s catalogue. You can try it here. If you don’t already know why we use Search API, Solr and Facets for catalogues, check out this article to get up to speed.

Even though we’re going to be using products, once you understand how it works you’ll be able to apply the same method for other type of content such as a blog, videos, resources, and more. The datasource can change but the process is the same.

Let's get started! Follow along with this video or skip below for a written guide.

[embedded content]

What you need before starting

  1. A running Solr server (Solr 6.4+)
    This tutorial assumes you have Solr running and can make a new core.
  2. Drupal 8 installed with the following modules:

    TIP: Get most of what you need quickly with Commerce Kickstart. Note that you will still need to install the Facets module after getting your Kickstart package.
    • Commerce
      composer require drupal/commerce
    • Search API
      composer require drupal/search_api
    • Solr
      NOTE: This module requires you're running Solr 6.4+ and PHP 7
      composer require drupal/search_api_solr
    • Facets
      composer require drupal/facets

Getting started

  1. Install/start Solr and add a new core that we’ll use later.
  2. Enable the Commerce, Search API, Solr and Facets modules.

Setup a basic Commerce store

For this tutorial, get your site and basic store set up by doing the following:
  1. Add a product category taxonomy vocabulary that is at least 2 levels deep.
    If we use clothing as an example, we might have Men and Women as the first level, then t-shirts, shorts and shoes as the second level for each.
  2. Setup your basic Commerce store, product types and product variation types.
    If you’re new to Commerce, take a look at their documentation to get up and running quickly.

    NOTE: Make sure to add the taxonomy vocabulary you created as a ‘taxonomy reference’ field to your Product Type.

  3. Add 10 or more simple products for testing the catalogue as we go.

Demo Drupal Commerce today! View our demo site.

Add a Search API server and index

Search API server

Admin: Configuration > Search and metadata > Search API
Admin menu path: /admin/config/search/search-api

  1. Click ‘Add server’.
  2. Configure the server.
    1. Name your server and enable it.
    2. Set ‘Solr’ as the server ‘Backend’.
    3. Configure the Solr connector.
      The defaults are usually fine. The main things to add are:
      • Solr connector = ‘Standard’.
      • Solr core = Whatever you named your core.
    4. Under ‘Advanced’, check ‘Retrieve result data from Solr’.
    5. Look over the remaining settings and update if you need to.
Search API index

Admin:Configuration > Search and metadata > Search API
Admin menu path:/admin/config/search/search-api

The index is where you set what data source is used by Search API. Eventually, you’ll also specify specific fields to be used for filtering the displayed results.

  1. Click ‘Add index’.
  2. Configure the index.
    1. Name your index.
    2. Data source should be ‘Product’
      This can be anything, but we’re creating a Commerce catalogue and so we want to use the store products.
    3. Select the server you just created.
    4. Save. Don’t add any fields for now, we’ll do that later.
    5. Go to the ‘View’ tab and index your results. This will index all of the products you have added so far.

Create a View for the catalogue

Admin:Structure > Views
Admin menu path:/admin/structure/views

The View will use the data source we’ve identified in our index and allow us to create a catalogue with it, and then assign ways of filtering the catalogue results (i.e. a search field and/or facets).

  1. Create a new View.
    1. View Settings, select your index.
    2. Create a page (this will become our catalog).
  2. View Display settings.
    1. Format > Show
      Set as ‘Rendered entity’, then in the settings, set your product types to use a ‘Teaser’ view mode instead of the default.

      NOTE: If you don't see the 'Rendered entity' option, this seems to be a bug with Views and happens when you don't select your index before checking the 'Create a page' checkbox. To fix this, just refresh your page to start over. If that doesn't work, flush your caches.

      NOTE:You may need to create this view mode if it doesn’t already exist.

      NOTE:You could alternately use Fields instead of view modes, but I like to keep my product display settings all within the product type’s display settings. Then you can potentially customize the display per product type if you have more than one.

  3. Save the view .
    These basic settings should give us our overall catalog. You can confirm by previewing the view or visiting the page you just created.

Add Fulltext datasource fields for a catalog search field

Now we’ll start setting up a Fulltext search field to let our users filter results using a product search field. The first thing we need to do is add some datasource fields to our index that the search will use.

  1. Go to your Search API Index and go to the Fields tab.
  2. Add Fulltext fields that you would like to be searchable (such as Title, SKU, Category taxonomy name, etc.).
    Here’s an example for adding the title:
    1. Click ‘Add fields’.
    2. Under the ‘Product’ heading, click ‘Add’ beside the ‘Title’ field.

      NOTE: If you’re adding a different field instead, you may need to drill down further into the field by clicking ( + ) next to the field. For example, to make a taxonomy term a searchable field, you would go to Your Vocabulary > Taxonomy Term > Name .

    3. Click ‘Done’.
    4. Set the field ‘Type’ to ‘Fulltext’.
      This is an important step as only Fulltext fields are searchable with the user-entered text search we are currently setting up.

      NOTE: Under the fields section is a ‘Data Types’ section. You can open that to read information about each available type.

    5. Optionally change the ‘Boost’ setting.
      If you have more than one Fulltext field, the boost setting allows you to give a higher priority to specific fields for when the terms are being searched.

      For example, multiple products could have a similar title, but each product would have an individual SKU. In this case, SKU could be given a higher boost than title to make sure that search results based on the SKU come back first.

  3. Next, add another field for the ‘Published’ status.
  4. Once you’ve added this field, set it’s type as ‘Boolean’.
  5. Reindex your data (from within the index view tab).

Set up the catalogue search field within the catalogue View

We can now set up the actual search field that our customers will use to find products, and use the datasource fields we added to our index to do this.

  1. Go to your catalog View.
  2. Under ‘Filter criteria’.
    1. Add ‘Fulltext search’ and configure its settings.
      • Check ‘Expose this filter to visitors, to allow them to change it’.
        IMPORTANT:This is what gives the user the ability to use this search field.
      • ‘Filter type to expose’, set as ‘Single filter’.
      • ‘Operator’, set as ‘Contains any of these words’.
      • ‘Filter identifier’, optionally adds an identifier into the url to identify a search term filter.
        (i.e. yoursite.com/products?your-filter-identifier=search-term)
      • Apply/save your settings.
    2. Add ‘Published’ and configure it so that it is equal to true.
      This uses the field we added to the index earlier to make sure the product is actually published. Chances are you don’t want unpublished results shown to your customers.
  3. Under ‘Sort criteria’.
    1. Add ‘Relevance’.
    2. Configure so that the order is sorted ascending.
      This will show the more relevant results first (factoring in the boost you may have applied to your index fields).
  4. Now we need to expose the search field to our customers. To do this:
    1. Open the ‘Advanced’ section of your catalog view.
    2. In the ‘Exposed Form’ area.
      • Set ‘Exposed form in block’ to ‘Yes’.
        This creates a block containing a search field that we can place on the site somewhere.
      • Set ‘Exposed form style’ to ‘Basic’ and update the settings. For now, the settings you might change are customizing the submit button text and maybe including a reset button.
  5. Add the search block to your site.
    Admin menu path:/admin/structure/block
    1. In your preferred region, click the ‘Place block’ button.
    2. Find the Views block that starts with ‘Exposed form’ and click ‘Place block’.
      Its full name will be determined by you view’s machine name and page display name (i.e. Exposed form: products-page_1).
    3. Configure the block as you see fit, and save.
  6. Test your search!
    You should now be able to see the search field on your site frontend and try it out.

Add more datasource fields for sorting options

We can optionally sort the catalogue and search results with some additional sorting filters, such as sorting by Title, Price, Date added, etc. Let’s add the ability to sort our products by title with the option to choose ascending or descending order.

  1. Go to your Search API Index fields and add another 'Title' field the same as you did earlier. However, this time you want to change the field ‘Type’ to ‘String’. You should now have two Title fields added, one as ‘Fulltext’ and one as ‘String’.

    NOTE: The field type can be different depending on what field you’re adding. If you’re adding a sorting field such as Price > Number, you might use the ‘Decimal’ field type.

    TIP: I would recommend changing the label for the new Title field to something like ‘Title for sorting’ so that it’s easier to identify later. You could even change the fulltext Title label to ‘Title for search’, just to keep them organized and easy to understand.

  2. Reindex your data (from within the index view tab).
  3. Go to your catalogue View.
    1. Under ‘Sort criteria’.
      • Add the new title datasource and configure it.
        • Check ‘Expose this sort to visitors, to allow them to change it’.
          IMPORTANT: This is what gives the user the ability to use this sorting option.
        • Add a label for the filter
        • Set the initial sorting method.
      • Add any additional sorting fields if you added more.
    2. Open the settings for the ‘Exposed form style’ (within the view’s ‘Advanced’ section).
      • Check ‘Allow people to choose the sort order’.
      • Update the labels as you see fit.
    3. Save your view!
      Refresh your catalogue page and you should now see sorting options available in the search block that you added earlier.

      TIP: If you DO NOT see the sorting options, this is a bug and is easily fixed. All you need to do is remove the search block and then re-add it.

      TIP: You can place this block in multiple regions of your site and hide the elements you don’t want to see with CSS. This way you can have a block with the site search and no filters in your header, and then also have another block on your catalog pages that shows the sorting filters but no search field.

Add Facets to the catalogue

The filters we added earlier can only be used one at a time, however, often we want to filter the results based on a number of different options. For example, if I’m browsing an online store looking for shoes of a certain style and size, I don’t want to see everything else the store has to offer. I want to be able to go to a ‘shoe’ category, then pick the ‘type’ of shoe that I’m after, and finally pick the ‘size’ of shoe that’s relevant to me. I want to see all of the results that fit that criteria. Facets lets you use taxonomy (and other datasources) to achieve this.

Let’s add a Facet that uses the taxonomy vocabulary we created in the initial store setup. This will be our main catalogue menu for narrowing down the product results. Each facet that is created creates a block that we can add into any region of our template.

  1. Add a Search API index field for your taxonomy vocabulary. Set the field ‘Type’ as ‘String’.

    TIP: Like we did earlier, I would recommend renaming the label for this field to something like ‘Categories for Facet’.

  2. Reindex your data (from within the index view tab).
  3. Go to the Facets page.
    Admin: Configuration > Search and metadata > Facets
    Admin menu path: /admin/config/search/facets

    You should see a ‘Facet source’ available to use. When we created a View using our index, this is what added the Facet source here. Now that we have a source, we can create Facets to filter it.

  4. Click ‘Add facet’.
    1. Choose the ‘Facet source’ to use.
    2. Select the index ‘Field’ that this Facet will use (i.e. Categories for Facet, or whatever you labelled your field).
    3. Name your Facet (i.e. Categories).
  5. Configure the Facet.
    This will cover the basic settings that you will need. Start with this and then you can always play around with other settings later. Each setting has a pretty good description to help you understand what it does.
    1. Widget.
      Choose a ‘Widget’ for displaying the categories. For categories, I like to use ‘List of checkboxes’.
    2. Facet Settings.
      Check the following:
      • Transform entity ID to label.
      • Hide facet when facet source is not rendered.
      • URL alias as ‘cat’ (or whatever you like).
      • Empty facet behavior as ‘Do not display facet’.
      • Operator as ‘OR’.
      • Use hierarchy.
      • Enable parent when child gets disabled.
      • NOTE: the Facets Pretty Paths module can be used to give you nicer looking URL paths.
    3. Facet Sorting.
      Configure as you see fit. In this example, I would only check the following.These settings make sure that the taxonomy follows the same order that you have set within the vocabulary itself.
      • Sort by taxonomy term weight.
      • Sort order as ‘Ascending’.
    4. Save.
  6. Add the Facet block to your site.
    Admin: Structure > Block layout
    Admin menu path: /admin/structure/block
    1. In your preferred region, click the ‘Place block’ button.
    2. Find the ‘Categories’ facet block (or whatever you named it) and click ‘Place block’.
    3. Configure the block as you see fit.
    4. Save.
  7. Test your Facet!
    You should now see your Facet on the catalog page. Click the checkboxes and test out how it works!

One last thing...

The sites we've been building use the Facets Pretty Paths module for making nicer looking URLs with our catalog and filters. For a while we were plagued with a problem where, when the user selects a Facet category and then uses the sorting options, the Facets would uncheck and reset. This is obviously not good because the user is trying to sort the filtered down items, not the overall catalog. We need to be able to maintain the active facets when using the filters.

Luckily, a coworker came up with this nice little solutions that you can apply to your theme's .theme file. You just need to replace YOUR_THEME,YOUR-VIEW (i.e. products-page-1), and YOUR-PATH (i.e. products) in the code below. Ideally, this will be fixed within the module itself soon, but this will work while we wait.

/**
* Implements hook_form_alter().
*/
function YOUR_THEME_form_alter(&$form, FormStateInterface $form_state, $form_id) {
// Store - Product Listing view exposed form.
if ($form['#id'] == 'views-exposed-form-YOUR-VIEW') {
$current_path = \Drupal::request()->getRequestUri();

// If current path is within your catalog, correct the form action path.
if ((strpos($current_path, '/YOUR-PATH') === 0)) {
// Fix for views using facets with pretty paths enabled.
// Replace form action with current path to maintain active facets.
$form['#action'] = $current_path;
}
}
}

Done!

There you have it! You have now created a Search API index using Solr, setup a View to display the results of the index, and then implemented 3 different ways to filter the results (search, sorting and Facets). This is the start of an awesome product catalogue and you can expand on it with more datasource fields however you want. Cool!

Contact us and learn more about our custom ecommerce solutions

Editor’s note: This article was originally published on July 12, 2018, and has been updated for freshness, accuracy and comprehensiveness.

 
Apr 15 2021
Apr 15

Content authoring on the web has evolved. Compelling web content uses a variety of multimedia elements to engage users, tell stories, build brands, and share new ideas. Images, video clips, slideshows, static or parallax backgrounds, block quotes and text pullouts — more than ever, content creators need a tool that embraces an evolving medium and keeps pace with the author’s creativity. We believe Layout Paragraphs is that tool. But first, let’s all agree that the body field is dead.

What is the body field

Web editors and content authors who have been around over the last decade of digital media are intimately familiar with the body field. Many popular content management systems (looking at you, Drupal and Wordpress) feature a standard “post” or “content” type — like page, article, or blog post — right out of the box. These content types often have a couple of fields to fill out before you can publish your post, things like title, tags, friendly URL / slug, and of course body.

The body field, traditionally, is where all your content goes. In the early days of blogging and web publishing that was likely to be all or mostly text, but with time came images, videos, and eventually an array of other multimedia elements. And the body field adapted. Tokens became standard for plenty of web editors — cryptic chunks of text like [[nid:376 align:right]] that would be auto-magically replaced with other elements once you click Publish. WYSIWYG editors (What You See Is What You Get) started shipping with Insert image and Insert video buttons, and began including a variety of tools for encapsulating, aligning, and positioning lengths of text or various media elements. And while these accommodations started to connect content creators with the boundless possibilities of multimedia authoring, they were (and are) clumsy and unpredictable.

Structured content: Reduce, reuse, recycle

One major problem with all of these innovations is that once you click Publish, all that complex content still ends up in the body field — that is, saved into your database as one giant clump of complicated text, tokens, style codes, etc. If you’d like to publish another page with a similar look & feel, get ready to re-inject all of your tokens or go through the same WYSIWYG click-a-thon to reestablish your styles and layout. Thinking of producing a list of all the images used in your posts? Good luck! With all content mushed together into a single field, your site doesn’t “know” the difference between a paragraph of text, an image, or a video.

A structured approach to content organizes each individual element — a pane of text, an image, slideshow, video, or a “donate now” banner — as its own self-contained entity which, ideally, could then be placed within flexibly configured regions on a page. Creating other, similar pages then becomes as simple as swapping out individual elements or shifting them around between regions of a page. And libraries of reusable content elements become the norm — so that you’re now picking your images, videos, donate banners and more from lists of existing content or existing content styles, instead of trying to hunt down how you did something similar the last time.

Structuring your content into individual, reusable elements drives a lot of collateral benefits:

  • Ease of content creation. Authoring with a consistent set of components lets you focus more on content, hierarchy, and intent — instead of trying to remember how you got a video in there at all the last time.
  • Styling and restyling. Using discrete elements of content means that your HTML markup and CSS remains consistent across all of your various pages. When the time comes to update the look & feel of your website, changes made on one article page will “just work” on the rest of your articles and all of their elements.
  • Content migration. The day might arrive when you consider migrating your content to a newer platform or different software. Structured content makes that a snap: Each image, video, slideshow, or paragraph of text gets individually ported to its new home on the new platform. On the contrary, migrating a mess of markup, tokens, and style codes stored in a single body field means writing complex, custom code to recognize those items and deal with them appropriately — not a simple task.
  • Syndication. Want to feature your content in a collection via RSS or deploy it to an app with XML? With structured content apps and other websites can consume just the elements they want of your content (maybe the first paragraph, a title, an image, or a link) then display those elements appropriately according to their own styles — rather than just grabbing a few hundred lines of a single, messy body field and making do.
  • Libraries, lists, and cross-promotion. Want to see all the slideshows that appear in articles with a specific tag? Maybe a list of pull-quotes from your most recent blog posts? Structured content creates a world of opportunity around libraries, lists and cross-promotions.

Structuring content facilitates reuse, and it positions your content to go on living in a variety of platforms or a variety of presentations — long after you first click the Publish button.

The two faces of web content

Structuring content is an essential part of beautiful, intuitive digital authoring, but it’s only one side of the coin. The other side is putting an end to the two faces of your web content. Excepting some of the advances of modern WYSIWYG editors, web content has always had two very different faces: View and Edit.

The way content is edited and the way it’s presented are often strikingly different. Especially if you’re still holding on to “one giant body field” innovations like custom tokens, BBCode, Markdown, or short codes, it can take a handful of Preview to Edit to Preview roundtrips to get your content exactly how you want it. Even if you’ve made the move to structured content, a majority of web-based editors are marked by a dramatic difference between the “back end” and the “front end” — just one more digital convention getting between inspired authors and publishing beautiful content easily.

The king is dead, long live the king

The body field is dead. It’s taken center stage in publishing digital content for long enough. Plenty of web products (Medium and Notion, to name a couple) have driven nails in that coffin for publishers creating content on those specific platforms. But what about content creators and web editors working within their organizations’ websites, in custom web applications where content authoring is just one of several important features? What about you, and your organization’s website? What’s next for your web application?

For Drupal websites, we think Layout Paragraphs is what’s next. It was first released to the Drupal community nearly a year ago, and has been the beneficiary of ambitious development ever since.

The Layout Paragraphs module makes it dead simple for authors to create robust, multimedia content from a library of available components. It offers intuitive drag-and-drop controls for managing content flow and layout, and with appropriate styling can bring the two faces of web content — View and Edit — closer than ever before. We built Layout Paragraphs to embrace the future of multimedia content authoring and to solve the problems we watch clients work through every day.

You can watch a short, two-minute demo of Layout Paragraphs here, or follow the instructions in that post to see it in action for yourself.

Apr 15 2021
Apr 15
Prevent Website Spam

Spam.

This word contains so much pain and headache for any site owner. It is not possible to 100% eradicate spam from your website. However, it is possible to reduce these rates to a minimum, provided that you know how to prevent website spam.

Today we are going to tell you about the best ways to stop website spam. Our web maintenance company has chosen 6 handy anti-spam Drupal modules. You have to choose the one that suits you best and add it to the site.

Apr 15 2021
Apr 15

AmyJune Hineline (volkswagenchick)During DrupalCon North America 2021, the members of the Drupal Community Working Group announced the winner of the 2021 Aaron Winborn Award, AmyJune Hineline (volkswagenchick).  

Since joining the Drupal community in 2015 after a career change, AmyJune has made an impact in multiple aspects of the community. She is a core mentor, helps organize multiple Drupal events around North America, and is a tireless advocate for accessibility and inclusivity in the community. In addition, she is one of the organizers of A11yTalks, a member of the Community Health Team, a documentation contributor, and has been credited in over 700 issues in the past year. Much of her work is sponsored by her employer, Kanopi Studios

Multiple people nominated AmyJune for this award. Here are some of the things they said:

"AmyJune has worked tirelessly for years to encourage contribution to the Drupal project from people with ALL levels of experience and skill sets. She creates a welcoming environment for anyone interested in contributing and makes the process less intimidating."

"She shares her knowledge freely and frequently, and also shares prolifically on social media to help others spread the word about their community work and celebrate successes."

"AmyJune is dedicated to the Drupal project on a level I have personally never seen before."

"AmyJune encourages accessibility and inclusiveness in all of her interactions within the community."

"I've never seen someone more dedicated to community and especially the Drupal community."

"I'm new to the Drupal Community (I joined 5 months ago), and I'm also new to the tech industry, and of course, the onboarding with no coding skills whatsoever has been quite a challenge. In this brief period, AmyJune has been an inspiring role model to look up to."

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

In addition to the physical award shipped to AmyJune, she was also provided with a free ticket to DrupalCon Global which she graciously donated to a deserving community member. The physical award that was hand-crafted by Drupal community member Bo Shipley (simplyshipley).  

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

Nominations for the 2022 award will open in early 2022.
 

Apr 15 2021
Apr 15

The special century was, well, a special time. In this one-hundred-year period, roughly from 1870 to 1970, a series of technological revolutions permanently changed the fundamental nature of the human experience. Prior to that era, human experience had not undergone any substantive improvements since the fall of the Roman Empire in the fifth century, a period of about 1,400 years of stagnation.

The inventions in the special century all shared one important characteristic: They could only be invented once. Standing tallest among these innovations was one that started at that epochal moment in world history in September 1882 when Thomas Edison turned on the first commercial power plant in the United States, located in lower Manhattan. Electricity was born and the world would never be the same.

We think of electricity as the thing that keeps our lights on at home, but the greatest value of electricity was the massive gains to labor productivity offered by electrifying your existing industrial processes. Such were the benefits offered by this new technology that innovative organizations hired Chief Electricity Officers to transform their existing processes with electricity, increasing the amount of output one worker could produce.

Fast forward more than a century, and something similar started a decade ago when Amazon Web Services turned CPUs, servers, and RAM into utilities, so that just like electricity they could be turned on and off at will, at low cost, and scaled as needed without any work. This transition from on-premises to cloud, like the transition from human-powered to electron-powered, offers a decade or two period of transition where cutting-edge organizations can gain competitive advantage by adopting new technologies quickly.

The outcome of these transition periods is all too similar, whether we are talking about electrons for power tools or electrons for information: what was strategic becomes tactical, and what becomes tactical becomes less valuable.

And so now we turn to managing content, and the modern content management system, which, depending on how you measure it, is at least 20 years old, and arguably more than 30. Early open source players, mainly WordPress and Drupal, gained rapid market share and provided a competitive advantage to larger organizations that understood the value they offered. 

And Drupal, with Acquia’s help, has flourished as the enterprise content platform of choice while the market for simpler use cases is devoured by players like Wix, Squarespace, and Contentful. But that relentless churn of innovation to standard, of strategic to tactical, marches ever forward, and content is not immune. The next phase of transformation of digital content is coming, and it’s called the composable enterprise.

As you might expect, Gartner is out in front defining what the composable enterprise is:
“A composable enterprise is an organization that can innovate and adapt to changing business needs through the assembly and combination of packaged business capabilities.” The report goes on to say that, “Packaged business capabilities will be sourced from third parties or composed internally. They will deliver more unique and customized application experiences to application users.”

Like the revolution of Amazon Web Services, which turned common IT infrastructure into easily digestible, scalable, and embeddable cartridges that could be inserted into your custom IT needs, a variety of players are starting to break digital content technology into similar cartridges. This makes certain aspects of managing content less strategic, but also opens up enormous opportunities for the organizations that offer these cartridges to other businesses and to those other businesses that know how to leverage them.

And it is this exact future business need that Acquia, the only player with an open digital experience platform, is ready, able, and willing to execute on. With a legacy of being built on the open source content platform Drupal, and a culture that embraces third-party systems, Acquia is already able to offer what an organization needs to execute a composable enterprise strategy.

And Gartner knows this, as it recently ranked Acquia as the #2 leader in the entire digital experience platform space, nipping at the heels of Adobe, and now well ahead of former #2 Sitecore.

Like moving to cloud, and even electrifying, when we look back a decade or two it will be obvious that every organization has to use a similar approach. But also, just like those revolutionary organizations, those that are able to see in the moment of early transition that taking a modular approach to content is a winning strategy will be rewarded. And of course, none more so than the digital experience platforms that understand this shift is inevitable and are serving their customers to execute this winning strategy today.
 

Apr 14 2021
Apr 14

Watch part 2 of Skvare's training series on the CiviCRM Entity Drupal module.

[embedded content]

CiviCRM Entity is a Drupal module that provides enhanced integration with Drupal, allowing developers, site builders, and content creators to utilize powerful Drupal modules including Views, Layout Builder, Media, and Rules. Drupal fields can be added to CiviCRM entity types. It provides Drupal pages and edit forms for all CiviCRM data such as contacts, allowing usage of familiar Drupal content creation tools and workflows.

During this training we cover:

  • Entity view modes
  • Using Drupal fields and form displays
  • Drupal-based view & edit pages for CiviCRM data
  • Entity Reference and Inline Entity Form
  • Entity browser
  • Layout Builder

Filed under

Apr 14 2021
Apr 14

In November 2022, the Drupal community and the Drupal Security Team will end their support for Drupal 7. By that time, all Drupal websites will need to be on Drupal 8 to continue receiving updates and security fixes from the community. The jump from Drupal 7 to 8 is a tricky migration. It often requires complex transformations to move content stuck in old systems into Drupal’s new paradigm. If you are new to Drupal migrations, you can read the official Drupal Migrate API, follow Mauricio Dinarte’s 31 Days of Drupal Migrations starter series, or watch Redfin Solutions’ own Chris Wells give a crash course training session. This blog series covers more advanced topics such as niche migration tools, content restructuring, and various custom code solutions. To catch up, read the previous blog posts Custom Migration Cron Job and Migration Custom Source Plugin.

Most often in Drupal 8, your migration source will be a CSV file, JSON file, or another Drupal database. In some cases your Drupal website needs to coexist in a larger infrastructure. Thankfully, there are various modules for synchronizing Drupal with tools like Salesforce, Bynder, and GatherContent. However, not everything is as clean as those user-friendly modules. This article will dig into migrating data from a Microsoft server using Transact-SQL into a standard Drupal 8 website.


As with any database in Drupal, it starts in the settings.php file. The basic setup for a Transact-SQL database looks like this:

$databases['YOUR_DATABASE_NAME']['default'] = array ( 'database' => '', 'username' => '', 'password' => '', 'prefix' => '', 'host' => '', 'port' => '', 'namespace' => 'Drupal\\Driver\\Database\\sqlsrv', 'driver' => 'sqlsrv', );

“YOUR_DATABASE_NAME” is the key Drupal will use to reference this database, but it does not need to match the actual database name. The other credentials such as database, username, password, prefix, host, and port, need to be filled out based on your specific setup and server, but the last two keys are more general and refer to the type of database.
By default, Drupal uses a MySQL database, so the “driver” field is typically set to “mysql.” However, Drupal by itself does not know how to communicate with a Transact-SQL database, so just setting the “driver” to “sqlsrv” will throw an error

To provide that support, first install and enable the SQL Server module (sqlsrv). But the “drivers” folder in the SQL Server module needs to be accessed at the Drupal root folder (usually called “web” or “docroot”). There are two ways to do this:

  1.  Manually copy the “drivers” folder from the SQL Server module (modules/contrib/sqlsrv/drivers) into the Drupal root folder.
  2. Create a symbolic link (symlink) to the “drivers” folder from the Drupal root folder with a command like this “ln -s modules/contrib/sqlsrv/drivers/ drivers”. The symlink allows the module to update without manual adjustments. 

With the proper credentials and connections, Drupal will now be able to read from the Transact-SQL database.

Now the actual migration can be written. There is no core migration source plugin for this, so you will need to write a custom source plugin that extends DrupalSqlBase. Use Drupal’s dynamic query API to get the database's data, ensuring at least one field can be used as a unique identifier for each row. Once the source plugin is written, the rest of the migration will work as usual.

Apr 14 2021
Apr 14

Watch Part 2 of our CiviCRM Entity 3.0 training series.

CiviCRM Entity is a Drupal module that provides enhanced integration with Drupal, allowing developers, site builders, and content creators to utilize powerful Drupal modules including Views, Layout Builder, Media, and Rules. Drupal fields can be added to CiviCRM entity types. It provides Drupal pages and edit forms for all CiviCRM data such as contacts, allowing usage of familiar Drupal content creation tools and workflows.

During this training we cover:

  • Entity view modes
  • Using Drupal fields and form displays
  • Drupal-based view & edit pages for CiviCRM data
  • Entity Reference and Inline Entity Form
  • Entity browser
  • Layout Builder

Valuable Tools for Better Site Building

  • Entity Browser Module: Provides extremely configurable selection, entity creation, edit form display field widget for referencing/creating entities with entity reference fields
  • Bootstrap Layout Builder: Enhances Drupal Core's layout builder module, including boostrap column layouts, integration with Bootstrap Styles so that site builders can control typography, borders, padding, margin, background color, background video, and much more
  • Bootstrap Styles Module: Provides configurable styles to be used with Bootstrap Layout Builder
  • Bootstrap Library Module: Provides any version of Bootstrap css/js framework for themes that are not bootstrap based
  • Layout Builder Restrictions Module: Allows site builders to limit what blocks are available to add to layouts
  • Inline Entity Form Module: Another module entity creation, edit form display field widget for referencing/creating entities with entity reference fields. Can be used in conjunction with Entity Browser
  • Drupal Console: A command line tool to generate boilerplate code for many Drupal features, including Field formatters and Field widgets
  • Field Group Module: Enables grouping fields into fieldsets, collapsible "Details" element, vertical and horizonal tabs
  • Chaos Tools Module: Chaos Tools: Many "goodies" that haven't been included into Drupal Core. In our demo it allows us to place entity view mode renderings, that use field groups

Additional Resources:

Apr 14 2021
Apr 14

Companies are breaking free of restrictive proprietary platforms in favour of custom open source solutions. Find out why in this comprehensive article.

Advantages of Open Source Commerce

Download the PDF version of this article | Acro Media

Ownership of data & technology

If you use an open source commerce platform, you own the code.

You need to look at your website the same way you would view a brick-and-mortar storefront. Paying a monthly licensing fee for a hosted platform is like having a leased property -- you’re only adding to your overhead costs and you have no control over your future. Hosted solutions don’t allow you to own the code, which business owners often don’t think of as a problem until something bad happens. If a hosted solution goes under, they take you down with them. You lose your online presence and have to rebuild from the beginning. That’s a long and expensive process.

If you use an open source commerce platform you own the code. If you work with an agency and choose to move to an in-house development team or a different agency, you can do so at no cost or risk to your business.

Integration with virtually any business system

The code is completely exposed for you to use.

If you judge ecommerce solutions solely on their feature set, hosted solutions like Magento, Shopify, and Volusion will always look good up front. But your ecommerce platform is more than just window dressing. Open source frameworks can have an impressive feature set, but the biggest advantage is the expansive list of back-end systems they can integrate with.

Proprietary platforms can offer standard integrations with customer relationship management (CRM) systems and fulfillment solutions, but if you’re a big retailer, you may find you need a higher degree of integration for your sales process.

Open source platforms are exactly that. Open. The code is completely exposed for your use. Combine this with the modular architecture and you have a platform with the ability to integrate with virtually any business system that allows access, from CRMs and shipping vendors to payment gateways and accounting software. Your ecommerce site can become an automated business rather than just a storefront.

A custom user experience

A custom user experience gives more power to the marketer.

When it comes to user experience, hosted platforms give you a best-practice, industry-standard, cookie-cutter execution of a shopping cart. It’s a templated design that is sold as a finished product, so you know you’ll have a catalogue, a simple check-out, account pages, etc. Outside of choosing a theme, there is very little room for customization. Open source allows for all the same functionality plus a powerful theme system that allows you to add unique and advanced features very easily.

A custom user experience gives more power to the marketer, allowing them to create custom conversion paths for different user types and integrate those paths within the content experience. You can generate personalized content based on customer data and/or provide different content to users based on their geographic location.

Open source commerce is also ideal for omnichannel selling. The consumer path is seamless across all sales channels, devices, websites and retail tools throughout the entire customer experience. You can set up content, layout and functionality to respond to the device being used, such as smartphones and tablets.

The omnichannel experience & a single source of data

Open source platforms use a single data source which makes it optimal for creating omnichannel strategies.

Today’s ecommerce landscape is rapidly evolving. It’s no longer just about selling products online. Companies are expected to create immersive shopping experiences for users. The advances in mobile technology have given consumers constant and instant access to information. They expect their favourite brands to be able to deliver an integrated shopping experience across all channels and devices complete with personalized content, consistent product information, and simple conversion paths. This is not an easy task. For retailers that sell through both online and in-store channels, the challenge is even greater.

Open source platforms use a single data source which makes it optimal for creating omnichannel strategies. Rather than having to force together multiple platforms that pull data from various systems, open source allows for one centralized data centre that can be accessed by any of the systems you need.

What does this mean exactly?

Customer data, product details, promotions & sales information, inventory numbers and more can all be easily defined and streamlined across multiple channels. For example:

  • Your customers can start a purchase online and then pick up where they left off in your store. 
  • Customer data can be accessed easily for automated marketing; loyalty programs, birthday “gifts”, personalized recommendations.
  • If your products are sold on your ecommerce store as well as third party marketplaces, your product info is always consistent without having to apply multiple updates on various backends.
  • Easily define and promote location-based pricing and offers.
  • Real-time inventory numbers can be shown online to ensure product availability and minimize the risk of back-orders.
  • Tax & shipping rules can be defined per city, state, country to ensure all customers are shown the correct cost of items at checkout.

A flexible platform that aligns with your needs

Exceed the boundaries of a traditional sales platform.

Any ecommerce platform today needs the ability to adapt. If your platform is locked down, you risk losing to your competitors. Hosted ecommerce solutions are just shopping carts with conventional catalogue management and the ability to sell physical and/or digital products.

Open source commerce releases you from these industry-standard restraints. Organize your products using virtually any attribute. Display your products in any style, from lists, grids, or tables to a customized look that can make you stand out from your in-the-box competition. Integrate features that go beyond commerce, such as custom applications, web services, and customer portals. Exceed the boundaries of a traditional sales platform.

Don’t be tied to someone else’s development path. By leveraging an open source platform, you allow yourself to be the frontrunner in your market.

No licensing fees, revenue sharing or mandatory support contracts.

Open source commerce is free to use.

Anyone with the appropriate development skills can pick up an open source framework and begin working with it immediately at no charge. If you require development help you will need to pay a contractor or agency and depending on your needs these upfront costs can seem like a lofty investment. However, after the upfront development, there are no mandatory ongoing costs associated with open source.

If you are utilizing a SAAS or proprietary platform start-up costs are minimal but the majority of them have various ongoing costs.

  • Monthly contracts — SAAS platforms will charge you a monthly fee to use their platform, in addition to this fee you may have to pay for additional functionality, integrations, and/or support.
  • Licensing fees — The big enterprise platforms (Demandware, Hybris, Magento) charge a yearly license fee to use their software platforms. These fees can range from $50,000 - $700,000 per year.
  • Revenue sharing — SAAS and proprietary platforms will often require a revenue share contract to supplement their low monthly fee. A typical revenue share agreement is a 2% transaction fee. Depending on your yearly gross revenue this can be a major blow.

1000’s of supporters and continued development

Open source platforms are pushed forward by thousands of developers and supporters worldwide; agencies, contractors, & enthusiasts all have a shared goal of bettering their software and creating an accessible and stable platform. Proprietary systems simply can’t compete with a workforce this large or this focused. Open source evolves at the pace of the web. By leveraging this type of platform, you can be a front-runner in your market. Often before a retailer even knows it needs a specific new integration or piece of functionality, someone is already building it.

Drupal Commerce & Acro Media

Drupal Commerce is the powerful ecommerce software that extends from the open source Drupal platform. Drupal Commerce was built onto the content management system using the same architecture, allowing for a true marriage of content and commerce. It is a truly unrestricted platform that provides both structure and flexibility.

Acro Media is the leading Drupal Commerce agency in North America. We work exclusively with Drupal and Drupal Commerce, and currently, develop and support one of the biggest Drupal Commerce websites in the world. Our Drupal services include:

  • Drupal Commerce
  • Drupal consultation and architecture
  • Drupal visualizations and modelling
  • Drupal integrations to replace or work with existing platforms
  • Drupal website migrations (rescues) from other web platforms
  • Custom Drupal modules

Are you ready to escape?

Break free from the proprietary platforms and legacy software you’re handcuffed to and create the commerce experience you want. Open source commerce gives the power to the business owner to create a commerce experience that meets the ever-changing conditions of your marketplace as well as the complexities of your inner company workings.

Next steps

Want to learn more about open source, Drupal Commerce, or Acro Media? Book some time with one of our business developers for an open conversation to answer any questions and provide additional insight. Our team members are here to help provide you with the best possible solution, no sales tricks. We just want to help, if we can.

Consulting Services | Acro Media

Apr 14 2021
Apr 14

Working with multimedia is one of the areas that large websites have to deal with. When multiple editors upload a large number of files, keeping your photos and videos in order can become difficult and time-consuming. Drupal has several proven recipes for managing the media library, which I'll present in this article.

Drupal modules for managing multimedia

Drupal offers great flexibility when working with files on a website. In the simplest terms, you can use fields like "File upload". A more complicated option is to use one of the modules to work with multimedia. Let's take a look at three interesting modules worth knowing about.

IMCE module

IMCE is a file viewer available to administrators and editors that also allows you to add, copy, and delete files and directories. It’s fast and convenient, it offers a preview of photos (including creating thumbnails), allows you to sort them and limit the disk space for individual users.

There was a time when the IMCE module was an absolute must-have for any Drupal website. To this day, over 340 thousand websites use it, but its popularity is steadily declining. The reason for this is that with more editors it's difficult to keep your file directories in order. Searching for a specific item is problematic, because the files have only a name and type. It's also impossible to filter them according to selected criteria. Despite the existence of the IMCE version for Drupal 8, new websites usually use other solutions.

IMCE module - Drupal file viewer

 

SCALD project

SCALD is a module designed for Drupal 7, with a very rich base of add-ons (over 50 additional modules). It allows you to add photos, videos, and other types of files as entities called atoms. Each atom can have any field list based on which the media list is filtered. There is no module version for Drupal 8, but there is a migration path for atoms to the Media module entity.

I mention the SCALD module due to its significant contribution to building the concept of media management. With the premières of Drupal 6 and 7, the era of entities and fields was slowly approaching. The first ideas began to emerge to present files as entities that could be described in any way. This is how the SCALD project was created – quite niche, although used over the years on large and popular sites with millions of multimedia, such as Radio France, ARTE TV and Le Figaro.

Media module

This is by far the most important of the modules presented here. It follows an idea similar to SCALD, because it turns files into entities. It’s currently used by over 180 thousand Drupal 7-based websites, as well as all the websites based on Drupal 8 and 9. That's because since version 8.4 it’s in the core.

Media is a mature module, prepared for years by a team of experienced programmers. I can confidently say that it's one of the best multimedia management solutions available on the Internet. What makes the Media module so special? I'd point out its four main advantages:

  1. Effective embedding of a file library in the Drupal's entity/field/view model. This solution gives virtually endless possibilities for web developers. The files can have different view modes and form view modes, they can be used in many independent contexts. A photo sent via the Media module can be used multiple times, both as a thumbnail in the content of the article and, for example, as a background of a large banner.
  2. Leaving the directory/file model. When uploading a photo or video, the editor no longer decides about the order in the directory structure. It’s done automatically. Ordering is done using the fields defined in the media. You can, for example, add a category to the files, and then use it to search through the list of multimedia.
  3. Independence from media sources. On a well-designed website, videos will work the same way whether they are uploaded directly or via YouTube or Vimeo. Photos can also be loaded from multiple sources (such as Pixabay or Google Drive). Such an approach makes the work of editors easier and allows quickly adding subsequent sources as needed.
  4. Media isn't only multimedia anymore. You can put documents, Facebook posts or excerpts from Google Maps in the media library. Your only limit is your imagination.

When it comes to migration, remember that the Media module comes in three forms:

In each of these cases, a migration path to the core version is available, so you can easily transfer the multimedia library to a newer Drupal.

Why isn't the Media module used on every website?

This begs the question – since the Media module is so great and also available in the core, why isn't it enabled by default and used in every Drupal development project? This is because many Media elements need to be set up by a programmer first. Therefore, this module is a tailor-made solution that is strongly adapted to the needs of a specific website.

It's particularly problematic to correctly display videos from external sources (due to the limited capabilities of external players) and to design appropriate display modes for the media. Getting through these issues can take a long time. Due to this fact, at Droptica we use a ready-made solution included in Droopler, the Drupal distribution.

Media module in Droopler

Since version 2.0, Droopler has built-in support for the Media module. All photos, graphics, icons and videos on the website are stored in the file library.

Usage of the Drupal Media module in the Droopler distribution

 

It's fine if you have a website based on Droopler 1.x. When upgrading to Droopler 2.x all "File upload" fields will be automatically converted to the new format.

The files put in the library can be used in many places on the website - as a paragraph background, an icon, a photo in a gallery or a cover for a blog post. In each of these contexts, the multimedia will be trimmed and adjusted accordingly. Here are examples of using the same photo in a completely different capacity:

As a tile

An example of using a photo as a tile on a website based on Droopler, thanks to the Drupal Media module

 

As a form background

An example of using a photo as a form background in Droopler

 

As a blog cover

An example of using a photo as a blog cover

 

Once you start using Droopler, you'll be amazed at the ease with which you can use YouTube and Vimeo videos. For example, try putting your video in a paragraph with a banner. In the paragraph edit options add the media in the "Background" field:

Adding a video in a paragraph with a banner in Droopler, the Drupal distribution

 

Then go to the "Video" tab, enter the video address, click ADD and choose a title for the newly added item. Finally, put the video in a paragraph.

Adding a video in a paragraph with a banner in Droopler

 

The effect of this action will be a moving background that stretches across the entire screen and is played in a loop. The YouTube controls will be hidden, and the video will have a transparent black overlay, improving the readability of the text.

Video as a moving background, played in a loop, on a website based on Droopler

 

You can add a video to a gallery in the same way, and e.g. next to the text, in the "Sidebar Image" paragraph. There are practically no restrictions here, all the elements fit together well.

Summary

The multimedia library included in the latest Drupal works great with even with a large number of subpages and blog posts. You will quickly notice that reusing the existing photos and videos saves time and effort. Even though the Media module requires a lot of coding for every new project, you can use "prepackages" such as Droopler to start working on the content right away.

Apr 14 2021
Apr 14

This month I gave a talk at South Carolina Drupal User Group on Getting Started with Electron. Electron allows you to use your web developer skills to create desktop applications. I based this talk on some of my recent side projects and the Electron Project Starter I posted the end of last year.

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

Apr 14 2021
hw
Apr 14

It’s spring and I decided to come out to a park to work and write today’s post. I sat on a bench and logged in to my WordPress site to start writing the post when I noticed that one of the plugins had updates available. I didn’t have to think about this and straightaway hit the update button. Less than 30 seconds later, the plugin was updated, the red bubble had disappeared, and I had my idea of today’s post. That is why I want to talk about automatic updates on Drupal today.

Now, automatic updates have been in WordPress for quite some time. In fact, I don’t remember when I last updated a WordPress site manually even though I am running this site for years. The closest thing to this we have in Drupal is the “Install new module” functionality. As the name says, it can only be used for installing a new module and not updating existing ones. There is an initiative for Drupal 10 to bring automatic updates to Drupal core (only security releases and patch upgrades for now).

No automatic updates in 2021?!

It may seem strange that we don’t have automatic updates in a product aspiring to be consumer-grade in this age. The reason is that this problem is hard to get right and notoriously dangerous if it goes wrong. Also, Drupal is used on some of the largest and most sensitive websites in the industry. The environments where these websites are hosted do not support any regular means of applying updates. Finally, Drupal tends to be used by medium to large teams who use automation in their development workflow. The teams would rightly prefer the automation in their toolchain to keep their software updated.

For example, at Axelerant we use Renovate for setting up our automatic updates for all dependencies (even npm and more). In fact, our quick-start tool comes with a configuration file for Renovate. With our CI and automation culture, we would not like Drupal to update itself without going through our tests.

This is not applicable for most users of Drupal and having some support for automatic updates is important. But considering the challenges in getting it right and lack of incentives for heavy users of Drupal, this feature was not prioritized. It’s about time that there is community focus on it now.

What’s coming in automatic updates?

The current scope of the automatic updates initiative is listed on its landing page. The current scope is limited to supporting only patch releases and security updates only for Drupal core, not even contrib modules. While this is far from making Drupal site maintenance hands-off, it is a step in the right direction. Of course, once this works well for Drupal core, it would be easy to bring it to contrib projects as well. More importantly, it would be safer as any problems would be easier to find with a smaller impact surface area.

In my mind, these are the things that the automatic updates will have to consider or deal with. It’s important for me to note that I am not involved in the effort. I am sure the contributors to this initiative have already considered and planned for these issues and maybe a lot more. My intention is to portray the complexity of getting this right.

Security

This is one of the most critical factors in an automatic update system. Internet is a scary place and you can’t trust anyone. So, how can a website trust a file that it downloads from the Internet and then replace itself with its contents? This is the less tricky part and it can be solved reasonably well with a combination of certificates and file checksums.

The website software runs as a user on the server, ideally, with a user with just enough privileges. In most cases, such users don’t have permissions to write to their own directory. This is needed because if somebody is able to perform a remote code exploit, they could write to the location where the software is installed and install backdoors. But in such a configuration, the website cannot write to its own location either. I don’t think such setups are in the scope of automatic updates anyway, as such teams would have their own automation toolchain for keeping software updated.

Developer workflows

As I mentioned before, Drupal websites are typically built by large teams who have automation set up. Such teams typically have their own conventions as to how upgrades are committed and tested. This is why tools such as Renovate can get so complicated. There are a lot of conventions for automatic updates system to deal with and as far as I know, most just ignore it. For example, I don’t know if WordPress really cares about the git repository at all.

Integrity

Once the updates are downloaded, they still have to be extracted and placed in their correct locations. What if, due to a permission error, a certain file cannot be overwritten? Such issues can leave the website in an unusable state entirely. The automatic updates code should be able to check for such issues before beginning the operation. There’s still a chance that there would be an error and the code should be able to recover from that. I’m sure there are a lot more scenarios here than what I am imagining.

The initiative

This is a wider problem than just Drupal and we don’t have to come up with all the answers. There is an ongoing effort to address these problems generally in a framework called The Update Framework. More about this is being discussed in the contrib module automatic_updates and the plan is to bring this into the core when ready. Follow the module’s issue queue or the #autoupdates channel on Drupal Slack.

Apr 13 2021
Apr 13
easy coffee module install and configuration

https://www.drupal.org/project/coffee

Credits & Thanks

Thank you to:

About the Coffee Module

The Coffee module is the fastest way to get to any admin screen in Drupal. As you SEO your Drupal site, you will spend a lot of time jumping into admin to change a setting or check on updates. You’ll have to go through menu navigation if you don’t have the Coffee module. That’s fine, but sometimes it’s hard to remember where every single setting is in the Admin Menu.

With the Coffee module installed, you can type ALT-D on your keyboard (Option-D for macOS) to have a text field pop up. Start typing into this field and the Coffee module will show you the admin menu items that match. Press the Enter key to select the first item or use the arrow keys to select a different item and press the Enter key to go directly to the admin page that you want.

Tip: Throughout this guide, you’ll see us present Coffee shortcuts when appropriate. For example, when we mention Coffee: "extend", then you’ll hit your Coffee shortcut keystroke (typically Alt-D or Option-D) and type "extend".

Install and Enable the Coffee Module

  1. Install the Coffee module on your server. (See this section for more instructions on installing modules.)
     
  2. Go to the Extend page: Click Manage > Extend (Coffee: "extend") or visit https:///admin/modules.

    drupal coffee module installation screenshot

  3. Select the checkbox next to "Coffee" and click the Install button at the bottom of the page.

Permissions for the Coffee Module

If necessary, give yourself permissions to use the Coffee module.

  1. Click Manage > People (Coffee: "people") and click on the Permissions tab. https:///admin/people/permissions.

    drupal coffee module permissions screenswhot
     

  2. Select the appropriate checkboxes for:
    • "Access Coffee"
    • "Administer Coffee"
       
  3. Click the Save permissions button at the bottom of the page.

Configure the Coffee module

  1. Go to the Coffee admin page: Click Manage > Configuration > User Interface > Coffee (Coffee: "coffee") or visit https:///admin/config/user- interface/coffee.

    drupal coffee module configuration screenshot

  2. Select the checkbox next to any additional menus that you want to include in the Coffee interface. We typically include them all, but if it starts getting cluttered, then you can take them out later.
     
  3. Click the Save configuration button at the bottom of the page.

Using the Coffee Module

  1. To access the Coffee interface, click the following key combination based upon your computer type:

         PC: alt+D (or alt+K)
         Mac: opt+D
     

  2. Start typing the name of the Drupal admin section you are looking for. For example, if you are trying to get to the Metatag settings interface, you would start typing "metatags" -- entering the first few letters will normally bring up what you're looking for, but can also provide other related settings as well.

    Drupal coffee module interface
     

  3. Click the appropriate result item to take you where you want to go. In our example, you could click on the entry titled "Metatag".
     

Once you are familiar with the different admin sections, the Coffee module can get you where you need to go far faster than by using the administrative menu.

Apr 13 2021
Apr 13

Drupal has been in the content management game for over two decades. That is a long period of time and in that time span the CMS has accomplished a lot. It’s community of over a million Drupalists is just one part of it. With 20 years gone, Drupal is still running strong and its latest update is proof of that. 

Yes, in the June of 2020, amidst the pandemic, Drupal 9 was launched and it was my only sunshine at that time and I am sure many of my Drupal friends would agree with me. Drupal 9 can be deemed as one of the best offerings of Drupal, not there were many that were anything but great.

Job done easy: Drupal 9 upgrade

The latest version meant we had to take it on, why be comfortable with the past when the present can offer more comfort, right? However, the mammoth task that was the Drupal 8 upgrade, you must remember that, made many of us apprehensive and rightfully so. And that is where we were surprised, pleasantly might I add, by Drupal. 

“Easiest upgrade in a decade.”

This is how the Drupal 9 upgrade is being described and it is because you won’t have to replatform your site, you’d only be updating. It's like taking a connecting flight from London to Paris rather than leaving the airport and taking a train from the station. Connecting flights are easy.

The timeline of Drupal releases in shown. Timeline of Drupal 9 future releases | Source: Drupal.org

Considering the fact that Drupal 9 is not a migration, the upgrade is a breeze. With the addition of new features like Olivero and Claro, being built and stabilised respectively, the new versions of Drupal 9 will become all the more appealing and a release can be expected half yearly much like Drupal 8. So, can we afford to sit back and not take the step towards upgrading our Drupal sites. The fact the Drupal 7 and Drupal 8’s end-of-life has been decided has given us all the more reason to make the upgrade. Read our complete guide on Drupal 9, Drupal 9 FAQs, must-have modules to start your Drupal 9 website, configuration management strategies in Drupal 9 and web development strategies for Drupal 9 website to know more about Drupal 9 and its usage.

To help you in finding the answer to the popular question of “How to upgrade Drupal 9?”, here I am with an all inclusive checklist for this massive step you are about to take. So, let’s begin.

Is the upgrade different for Drupal 7 and Drupal 8?

This is one of the most commonly asked questions for Drupal 9 upgrade. There are still a lot of Drupal sites that are still operating on the 7th version, so it is understandable to want to know whether ‘the easiest upgrade of the decade' is applicable to them or is it different. 

Drupal 9 upgrade is different for Drupal 7 and 8 sites. This is mainly because Drupal 8 was a whole other ballgame than Drupal 7, while Drupal 9 is just a new and improved version of Drupal 8 with no deprecated APIs. Therefore, the upgrading process was bound to be different.

Let’s see how. 

Drupal 8 to Drupal 9 

Support for Drupal 8 will end on 2nd November, 2021, it will receive patch releases, but there won’t be any major updates in its feature simply because we have Drupal 9. Therefore, upgrading to the newer version is the better option. 

To upgrade from Drupal 8 to Drupal 9, 

  • You would have to see that all your projects are Drupal 9 compatible; 
  • You would have to see that your codebase is free of deprecated APIs; 
  • And then all you would have to do is run update.php. 

It sounds simple enough, right? That is because it is. Of course, you would have to perform some more steps than these three and there would be a number of tools that you would have to use for them. However, it is these three steps that are essentially the crux of upgrading from Drupal 8 onto 9.

Drupal 7 to Drupal 9

Drupal 7’s support is said to end on 28th November, 2022. Although your D7 site has quite some time ahead of it, you still have to start thinking about the upgrade as the process is not as easy as the D8 to D9 upgrade. 

You can take two routes here; 

  • You can first update to Drupal 8, avail functionality from all the modules that are yet to come in Drupal 9 and then take the easy route of upgrading to Drupal 9; 
  • Or you can directly upgrade to Drupal 9 and skip the 8th version. This would be ideal because your upgrade would have a much longer lifespan.

For the upgrade from Drupal 7, you would need three modules; 

These three do everything from data and content migrations and checking the availability of modules to scanning them and updating them for the upgrade. 

So yes, the Drupal 9 upgrade from Drupal 7 and 8 is different, simply because they are very different versions of the CMS. 

Now that we have this notion clarified, let’s move on to all the nitty-gritty details of the upgrade.  

What tools would you need for the Drupal 9 upgrade?

Can you cook without the right ingredients? Can you make the perfect lasagna without the melt-in-the-mouth pasta? I know you know the answer to these two questions and that’s a big fat no. 

Therefore, the incredible journey towards the Drupal 9 experience has to start by talking about the tool you would need for it, the ingredients that’ll make the upgrade all the more appetising. I’ll stop with the cooking analogy now and come to the point. There are two mandatory tools that you will be needing.

Upgrade Status 

Upgrade Status is a module that prepares your site for the upcoming upgrade you are planning to execute. It is a pretty versatile module that does all the grunt work required before making the leap to D9. 

  • Your site has to be the latest version of Drupal, that is Drupal 8.8 or 8.9, so the first thing this module does is inspects whether you are on that version, if not, it’ll tell you to update.
  • Your system needs to meet Drupal 9’s set requirements for the upgrade to go on smoothly, so the next thing it does is check if you meet them.
  • Your contributed projects also need to be updated and be compatible with Drupal 9. If they are Drupal 8 compatible, there is a high chance they’ll be for Drupal 9. So, Upgrade Status works with Update Status to ensure every project is in sync.
  • Your site needs to be compatible with Drupal 9 in other ways as well, so that is also checked and verified through phpstan.
  • Your system’s integration drush is also taken care of here.
  • Your system might have deprecated APIs, Upgrade Status finds, although there are any fixes provided; for that you'll need another tool.

Upgrade Status’ enchantment doesn’t end here, there is more to this module yet. 

  • I’ve told you that it prepares your Drupal 8 site, but it also gives you the leeway for downloading it with and without the Composer. 
  • It is also available in Drupal 7 and this version would help you in preparation for the Drupal 9 as well as Drupal 8 upgrade, if that is what you want. 
  • Now, the most alluring part, once you’ll upgrade to Drupal 9, it’ll start preparing you for the Drupal 10 upgrade! Yes, you read it right, Drupal 10 launch is in the works and you can be ready for that when it happens with this module.

Deprecation Check

Remember I mentioned deprecated APIs above, well, there are more than APIs that can be deprecated and that needs your attention before you start creating the upgrade environment for your site. That is why, Deprecation Checking and Correction Tools become a necessity.  

All in all, there are five tools for your help. 

  • The first one is an IDE or code editor, which comprehends deprecation to kickstart the process. 
  • Then there is the Drupal-check, this one performs a PHP run and let’s you know whether deprecated code is used and where.
  • Third is the Upgrade Status I talked about above, which essentially scans your entire system and finds deprecated code for you. 
  • The Drupal.org Testing System also supports deprecation inspection.
  • Finally, the Upgrade Rector Contributed Project provides a solution for all of the checking done above and that too in an automated manner.

What are the environment requirements for Drupal 9?

When you are roasting the perfect chicken, the temperature in the oven has to be just right, the timing has to be just right and the flavours have to be just right to make it come out all juicy and succulent. I know I have started with the cooking analogy again, but this is the best comparison I could think of. 

Like that perfect roast chicken, Drupal 9 also needs just the right environment from you and your system to make it work. And this involves; 

Web Servers

Drupal 9 can be run using two different web servers and you need to have the latest versions of these two.

  • For nginx, you have to have the version 0.7.x or above; 
  • And for Apache, it has to be at least 2.4.7.

PHP 

PHP is the language Drupal is built on, of course you must know that. What you may not know is that you need PHP 7.3 for operating Drupal 9. The latest version 9.1.0 supports PHP 8.

Database and Hosting Structures 

Drupal 9 has specific requirements for its backend database as well as its hosts. These are; 

  • Version 5.7.8+ for MuSQL or Percona; 
  • Version 10.3.7+ for MariaDB;
  • Version 3.26+ for SQLite; 
  • Version 10 for PostgreSQL; 

And if you are planning to use Drush to build your interfaces, go for version 10, since only that is compatible with Drupal 9.

Have you prioritised the update of the core codebase?

Drupal 8 was the last major release before Drupal 9. Like any Drupal version, there are a number of minor releases being launched and you must keep up with them. If you have done so, your core codebase would be up-to-date and you’d be all set for the upgrade. 

One of the Drupal 9 upgrade requirements is that your site be updated to Drupal 8.8 or 8.9 for you to be prepared for the easiest upgrade of the decade. 

What happens if you are on a version older than 8.8?

What’ll happen is the upgrade won’t go through. Now you might ask why? I’ll give you an analogy, can you skip a few grades and land from 6th grade directly to high school? Even if you could, would you say that getting the hang of the classes you’ll have be quite arduous? It most definitely will be. So, like you can’t skip grades and you can’t skip the minor releases of Drupal 8 before going on to Drupal. Because Drupal 8.9 and Drupal 9 are somewhat similar the upgrade is a breeze, however, Drupal 8.4 and 9 do not share that kind of similarity and you might need to upgrade fast. 

From upgrades in PHP to core modules, from themes to contributed modules and from path aliases and database, almost every aspect requires updating to be compatible with Drupal 9. And only Drupal 8.8 and 8.9 have that level of API compatibility. 

How to upgrade if you have a Drupal version that precedes 8.7? 

For a version older than Drupal 8.7, you would have to perform some small code changes and database updates that are not very complex. An update to the latest version of the core would be required, and this would make the database and contributed modules ready for the 9 upgrade.

You can use Upgrade Status to ensure that all of what you just did is compatible with Drupal 9 or not. 

Then you’ll have to check for deprecated code, like we discussed two sections above. Thereafter, you become ready to update your core codebase to Drupal.

How to upgrade if you have a Drupal version that succeeds 8.8?

If you are already on Drupal 8.8, there isn’t much you have to do in order to prepare yourself. The only task to perform is running the Upgrade Status and checking compatibility. 

There is one more thing that you will have to do. And that is what your existing site is based upon because that will decide how the actual upgrade will flow. 

Your site could be based on Composer or it could be based on Tarball. Make sure you keep that in mind before starting the upgrade, as both work on different upgrade mechanisms. While the former has its own list of steps to follow, the latter is upgraded using Drush.

What about updating the custom code?

After upgrading the core codebase, you would have to pay close attention to your custom code. There is a high chance that your project will have custom modules and themes, these mean a custom code would also there and it is your responsibility to update it. 

You wouldn’t need new tools and techniques to help you here. 

  • Upgrade Status will scan all the projects for custom code deprecations; 
  • Upgrade Rector will fix any minor deprecations by itself. 

Updating the custom code is not that big a task, so it is often neglected and overlooked. However, it is important enough to hamper the entire upgrade. So, don’t skip it.

Can the contributed projects be neglected?

If you have taken care of the core and custom projects, you can’t think about leaving the contributed project without any attention. So, updating them is the next agenda on the Drupal 9 upgrade checklist. 

The reason for updating the contributed projects is the same as the core and custom projects, to check the compatibility of the projects with Drupal 9. And you must know by now, since I am repeating it for what feels like the 100th time, Upgrade Status will help you in the compatibility check.

You must know that even though a module is Drupal 9 compatible, there is the off chance that it can be a version of a major release that’ll bring API changes along with it. You have to be mindful of these modules because they can be detrimental to your site’s health. API changes that you are not prepared for can’t be efficacious by any means.

But what if a module is not Drupal 9 compatible?

There are, of course, not many of them, however there are some and you must know how to handle them. You can do any of these two things in this scenario.

  • Creating, you can create a custom code to update it;  
  • Or waiting, you can wait to see if it gets updated by the time you are ready for the final upgrade;  

What about the contributed modules with patches, do they need attention?

There are situations where you may want to update a contributed module, but an update is not in the picture, rather you have patches available and sometimes, not even that. What would you do? Pay attention to the patches, that is what.

Usually if a patch is available for a module, Upgrade Status would inform you about that and you can implement it. 

Then there is the scenario, when a contributed module has neither an update and nor a patch. For such an instance, the combination of Upgrade Status and Upgrade Rector will have you sorted. You can also check Drupal’s Contributed Modules Guidelines to help you further. 

Have you examined your content and field types thoroughly?

Auditing for site building is a must. Adding fields and customisations in Drupal is quite easy, anyone can do it. This is both good and bad. Good because anyone can do it leading to less dependence on developers, bad because anyone can do it meaning there might be redundant field types and outdated content. And in this step, you check for just that. 

  • Check and eliminate fields that were created for a once-in-a-lifetime event; don’t let them sit and waste away.
  • Remember those content types you created to add content later, well, you haven’t done that yet, so they have to go as well.
  • Update the help text; this might seem trivial to you, but being someone who relied on that piece of text to perform all my initial duties instead of pinging my manager every minute, trust me, it is important. If it is outdated, it is useless and why would you want something useless on your upgraded Drupal 9 site?

Customisations are only great until they don’t start bloating your site causing regression. You do not want that, so don’t just keep all your focus on the code, modules and themes, give some time to the content as well.

How do you become sure that your upgrade is successful?

You will execute the upgrade to make your site better than it already is, that should be the aim, right? However, despite you doing everything to the T, there is a chance that you may go in regression. Your upgrade may be doing everything that it is supposed to, but still your site’s performance can be slower than it was. 

No one wants that scenario to become their reality, so how do you avoid that? How do you ensure that the upgrade is successful? There is certainly a way to ensure that and that’s through testing.

When you perform tests, you get to know what is truly happening with your site. Where you went wrong and what you did right won’t be hidden under a veil. For instance, performing a test to check the administrative and editorial working of the site is ideal. On paper, everything may appear sound, but in reality your editors could be struggling to make even the smallest of edits. And it is only through testing that you’ll be able to find that out. 

You can start at a smaller level with a hello world test and gradually scale up to examine the major aspects of the upgrade. 

Another thing that’ll help you in making the upgrade a success is going slow. Yes, upgrading to Drupal 9 is deemed as the easiest update of the decade, but it is still a huge task to take on. Just the sheer number of modules that wild require updating can become overwhelming, so go slow, update a few modules at one time. This is the chances of errors would be slim and the chances of success would be quite high. 

The Bottom Line 

Drupalists from across the globe had been awaiting the release of Drupal 9 for a long time, now that it is here, there is nothing holding us back from taking the upgrade leap. If I am to be honest, I’d say that I was fearful of the upgrade process. However, when Dries Buytaert say that one of the fundamental issues to address in the Drupal 9 release was the ease of installation, you cannot do anything but believe him. That’s what we should do. 

Apr 13 2021
Apr 13

The success of open source projects is largely carried by the pillars of the community and group collaborations. Without putting a stake in the ground to achieve strategic initiatives, an open source project can lose focus. Open source strategic initiatives should aim at solving impactful problems through collaboration involving the project's stakeholders.

The why and how of Drupal's strategic initiatives

As one of the leading open source projects, Drupal's success largely thrives on implementing its various proposed strategic initiatives. Drupal's focus on strategic initiatives and continuous innovation since Drupal 7 brought huge architectural changes in Drupal 8, 9, and beyond that offer a platform for continuous innovation on the web and an easy upgrade path for end users.

The vision for Drupal's core strategic initiatives is determined by Dries Buytaert, Drupal project lead. These initiatives are backed by community collaboration and lead to significant developments driven by forces like:

  • Collaboration with the core maintainers
  • Survey data and usability studies
  • A vision to build a leading open source digital experience platform
  • Relevancy in the market by improving editorial, developer, and customer experiences
  • Validation by broader community discussions and collaborations
Once initiatives are proposed, they move ahead to the planned initiatives stage, where each initiative is nurtured with detailed plans and goals by a strong team of contributors. When an initiative passes through this stage, it moves to the active initiatives stage. Here's where the initiatives take structure and come alive.

Some of the most successful Drupal 8 initiatives, like Twig and Bigpipe, did not follow the traditional process. However, following a thoughtfully planned process will avoid a lot of bike-shedding.

In 2011, at DrupalCon Chicago, Dries announced that Drupal 8 would feature core initiatives that would cause big changes to Drupal's architecture. To support the transition, each initiative would have a few leads involved in decision-making and coordination with Dries. Some popular initiatives included:

  • Configuration Management Initiative (CMI): This was the first key initiative announced at the 2011 DrupalCon. The idea was to offer site builders more powerful, flexible, and traceable configuration handling in Drupal 8 core. As planned, the Configuration Manager module is now a Drupal 8 core module that allows deploying configurations between different environments easily.
  • Web Services and Context Core Initiative: This initiative aimed at embracing a modern web and turned Drupal into a first-class REST server with a first-class content management system (CMS) on top of it. The result? Drupal is now a competent REST server providing the ability to manage content entities through HTTP requests. This is part of why Drupal has been the leading CMS for decoupled experiences for several years.
  • Layout Initiative: This initiative's focus was on improving and simplifying the site-building experience by non-technical users, like site builders and content authors. This initiative came alive in Drupal 8 by introducing the Layout Discovery API (a Layout plugin API) in v.8.4 and the Layout Builder module (a complete layout management solution) in v.8.5 core.
  • Media Initiative: The Media Initiative was proposed to launch a rich, intuitive, easy-to-use, API-based media solution with extensible media functionalities in the core. This resulted in bringing in the Media API (which manages various operations on media entities) and Media Library (a rich digital asset management tool) to Drupal 8 core.
  • Drupal 9 Readiness Initiative: The focus of this initiative was to get Drupal 9 ready by June 3, 2020, so that Drupal 7 and 8 users had at least 18 months to upgrade. Since Drupal 9 is just a cleaned-up version of the last version of Drupal 8 (8.9), the idea was to update dependencies and remove any deprecated code. And as planned, Drupal 9 was successfully released on June 3, 2020. Drupal 8-compatible modules were ported to Drupal 9 faster than any major version upgrade in Drupal's history, with more than 90% of the top 1,000 modules already ported (and many of the remaining now obsolete).

The new strategic initiatives

Fast-forward to 2021, where everything is virtual. DrupalCon North America will witness a first-of-its-kind "Initiative Days" event added to the traditional DrupalCon content. Previously, initiatives were proposed during the Driesnote session, but this time, initiatives are more interactive and detailed. DrupalCon North America 2021 participants can learn about an initiative and participate in building components and contributing back to the project.

Dries proposed the Decoupled Menus Initiative in his keynote speech during DrupalCon Global 2020. While this initiative's broader intent is to make Drupal the best decoupled CMS, to accomplish the larger goal, the project chose to work on decoupled menus as a first step because menus are used on every project and are not easy to implement in decoupled architectures.

The goals of this initiative are to build APIs, documentation, and examples that can:

  • Give JavaScript front-end developers the best way to integrate Drupal-managed menus into their front ends.
  • Provide site builders and content editors with an easy-to-use experience to build and update menus independently.

This is because, without web services for decoupled menus in Drupal core, JavaScript developers are often compelled to hard-code menu items. This makes it really hard for a non-developer to edit or remove a menu item without getting a developer involved. The developer needs to make the change, build the JavaScript code, and then deploy it to production. With the Decoupled Menus Initiative, the developer can easily eliminate all these steps and many lines of code by using Drupal's HTTP APIs and using JavaScript-focused resources.

The bigger idea is to establish patterns and a roadmap that can be adapted to solve other decoupled problems. At DrupalCon 2021, on the Decoupled Menus Initiative day, April 13, you can both learn about where it stands and get involved by building custom menu components and contributing them back to the project.

The Easy Out-Of-The-Box Initiative

During DrupalCon 2019 in Amsterdam, CMS users were asked about their perceptions of their CMS. The research found that beginners did not favor Drupal as much as intermediate- and expert-level users. However, it was the opposite for other CMS users; they seemed to like their CMS less over time.

Hence, the Easy Out-Of-The-Box Initiative's goal is to make Drupal easy to use, especially for non-technical users and beginners. It is an extension of the great work that has been done for Layouts, Media, and Claro. Layout Builder's low-code design flexibility, Media's robust management of audio-visual content, and Claro's modern and accessible administrative UI combine to empower less-technical users with the power Drupal has under the hood.

This initiative bundles all three of these features into one initiative and aims to provide a delightful user experience. The ease of use can help attract new and novice users to Drupal. On April 14, DrupalCon North America's Easy Out-Of-The-Box Initiative day, the initiative leads will discuss the initiative and its current progress. Learn about how you can contribute to the project by building a better editorial experience.

Automated Updates Initiative

The results of a Drupal survey in 2020 revealed that automated updating was the most frequently requested feature. Updating a Drupal site manually can be tedious, expensive, and time-consuming. Luckily, the initiative team has been on this task since 2019, when the first prototype for the Automated Update System was developed as a contributed module. The focus of the initiative now is to bring this feature into Drupal core. As easy as it may sound, there's a lot more work that needs to go in to:

  • Ensure site readiness for a safe update
  • Integrate composer
  • Verify updates with package signing
  • Safely apply updates in a way that can be rolled back in case of errors

In its first incarnation, the focus is on Drupal Core patch releases and security updates, but the intent is to support the contributed module ecosystem as well.

The initiative intends to make it easier for small to midsized businesses that sometimes overlook the importance of updating their Drupal site or struggle with the manual process. The Automated Updates Initiative day is happening on April 15 at DrupalCon North America. You will get an opportunity to know more about this initiative and get involved in the project.

Drupal 10 Readiness Initiative

With the release of Drupal 10 not too far away (as early as June 2022), the community is gearing up to welcome a more modern version of Drupal. Drupal now integrates more third-party technologies than ever. Dependencies such as Symfony, jQuery, Guzzle, Composer, CKEditor, and more have their own release cycles that Drupal needs to align with.

The goal of the initiative is to get Drupal 10 ready, and this involves:

  • Releasing Drupal 10 on time
  • Getting compatible with the latest versions of the dependencies for security
  • Deprecating the dependencies, libraries, modules, and themes that are no longer needed and removing them from Drupal 10 core.

At the Drupal 10 Readiness Initiative day, April 16, you can learn about the tools you'll use to update your websites and modules from Drupal 9 to Drupal 10 efficiently. There are various things you can do to help make Drupal better. Content authors will get an opportunity to peek into the new CKEditor 5, its new features, and improved editing experience.

Learn more at DrupalCon

Drupal is celebrating its 20th year and its evolution to a more relevant, easier to adopt open source software. Leading an evolution is close to impossible without taking up strategic initiatives. Although the initial initiatives did not focus on offering great user experiences, today, ease of use and out-of-the-box experience are Drupal's most significant goals.

Our ambition is to create software that works for everyone. At every DrupalCon, the intent is to connect with the community that fosters the same belief, learn from each other, and ultimately, build a better Drupal.

DrupalCon North America, hosted by the Drupal Association, is the largest Drupal event of the year. Drupal experts, enthusiasts, and users will unite online April 12–16, 2021, share lessons learned and best practices, and collaborate on creating better, more engaging digital experiences. PHP and JavaScript developers, designers, marketers, and anyone interested in a career in open source will be able to learn, connect, and build by attending DrupalCon.

The Drupal Association is the nonprofit organization focused on accelerating Drupal, fostering the Drupal community's growth, and supporting the project's vision to create a safe, secure, and open web for everyone. DrupalCon is the primary source of funding for the Drupal Association. Your support and attendance at DrupalCon make our work possible.

Apr 13 2021
hw
Apr 13

I have been setting up computers and configuring web servers for a long time now. I started my computing journey by building computers and setting up operating systems for others. Soon, I started configuring servers first using shared hosting and then dedicated servers. As virtualization became mainstream, I started configuring cloud instances to run websites. At a certain point, I was maintaining several projects (some seasonal), it became harder to remember how exactly I had configured a particular server when I needed to upgrade or set it up again. That is why I have been interested in Infrastructure as Code (IaC) for a long time.

You might say that it is easier to do this by just documenting the server details and all the configuration for each project. Sure, it is great if you can manage to keep the documentation updated as the software evolves and requirements change. Realistically, that doesn’t happen. Instead, if you start with the perspective that you are going to only configure servers with code, never manually, you are forced to code all the changes you want to make.

Infrastructure as Code

So, what does IaC look like? There are several tools out there and each has its own conventions. Broadly speaking, there are two types of code you would write for IaC: declarative or imperative. If you are a programmer, you are already familiar with the imperative style of programming. This is essentially the style of almost all programming languages out there. In these languages, you would write line-by-line instructions to tell the computer exactly what to do and how to do it. Consider this shell script used for creating an instance on DigitalOcean.

#!/usr/bin/env bash
 
read -p "Are you sure you want to create a new droplet? " -n 1 -r
if [[ $REPLY =~ ^[Yy]$ ]]
then
    doctl compute droplet create --image ubuntu-20-04-x64 --size s-1vcpu-1gb --region tor1 ps5-stock-checker --context personal
    echo "Waiting to create..."
    sleep 5
    doctl compute droplet list --context personal
fi

Here, we are running a sequential set of instructions to create a droplet and verify that it got created. We are also confirming this with the user before actually creating the droplet. This is a very simple example but you could expand it to create whatever style of infrastructure you need, albeit not easily.

The declarative style of programming

Most IaC tools support some form of declarative syntax which lets you define what infrastructure you need rather than how to create it. The above example in Terraform, for example, would look like this.

resource "digitalocean_droplet" "web" {
  image  = "ubuntu-20-04-x64"
  name   = "ps5-stock-checker"
  region = "tor1"
  size   = "s-1vcpu-1gb"
}

As you can see, this example is easier to read. Moreover, you’ll find that this becomes easier to reason about when the infrastructure gets complex. My personal preference is to use Terraform but whatever you use would have a similar structure. It is the tools job to how exactly implement this infrastructure. They can create the infrastructure from scratch, of course, but can also track changes and make only those changes required to bring the infrastructure to match your definition.

Where is the simple in this?

You might think this is overkill and I can understand that sentiment. After all, I thought the same but I have found it useful for projects both large and small. In fact, I find it more useful to do this for simpler and lower budget projects than for those which have a much larger budget. At least as far as Drupal is concerned, projects with larger budgets use one of the PaaS providers. There are several providers such as Acquia, Pantheon, platform.sh, or others that do a great job at Drupal specific hosting. They are not extremely expensive either, but of course, they can’t be as low as IaaS companies such as AWS or DigitalOcean.

So, it may not be simple but we can get there. On the projects that I am going to self-host, I add in a directory called “infra” with Terraform modules and an Ansible playbook. To make it findable, I have put it up on Github at hussainweb/lamp-ansible-terraform. There’s no documentation, unfortunately, but I hope to put up something soon. Meanwhile, this blog can be an informal introduction to the repository.

My workflow

When I want to start a new project that I know won’t be on one of the PaaS providers, I copy the repository above into my project and start editing the config files I need. Broadly, the repository contains Terraform modules to provision a server (or two) to run Drupal and the actual configuration of the server happens through Ansible. As of right now, there are modules for AWS and Azure to provision the servers. The one for AWS supports setting up instances with security groups configured. You can optionally set up a separate instance for a Database server as well. You can find all the options that the module supports in the variables.tf file.

On the other hand, the module for Azure is simpler and only supports setting up a single server to run both web and database server. You can take a look at its variables.tf file to see what is exposed (TL;DR, just the instance size). I built these modules on a need basis and didn’t try to maintain feature parity.

Depending on what I want to use, I will initialize that Terraform module (terraform init) and provision. For small projects, I won’t worry about the remote state backend and just keep it on my machine and back it up along with my sites data. It’s a long process but it works and I haven’t needed to simplify that yet. At the end of this, I get the IP address(es) of the instance(s).

Sometimes, I need to set up different servers for a staging environment, for example. For this, I just provision another server in a different Terraform workspace. The module itself does not support multiple environments and does not need to.

Configuring the instance

Now that I have the IP address(es), I can set up Ansible. I edit the relevant inventory files (for dev or for production) and set up relevant variables in various yml files. Out of these, I absolutely have to change the app.yml file to set my project’s repository URL. I can optionally also change the PHP version, configure Redis, set up SSH keys (edit this one if you want to use the repo), etc. Once all this is done, I can run ansible-playbook to execute the playbook.

I realize this repo is hardly usable without documentation. So far, it’s just a bunch of scripts I have cobbled together to help me with some of my projects. In time, I do want to improve the documentation and add in more resources. This also intersects with my efforts in another direction to set up remote development instances (not for hosting, but for live development). It’s called Yakht (after yacht as I wanted an ocean related metaphor). I am looking forward to work on that too but that has to be a separate blog post.

Apr 13 2021
Apr 13

In May 2021, Google will begin to recognize Page Experience as a ranking factor, prioritizing user experience in the particular and overall ranking score.

Page Experience signals include two signals: 

  • Core Web Vitals
  • Search Signals

While Search Signals focus on mobile-friendliness, security, and safe browsing, Core Web Vitals measure user experience for loading performance, interactivity, and visual stability of the page.

Core Web Vitals consist of three metrics that measure how long a site visitor has to wait until they can see the page and begin to make use of it. These are:

  • Largest Contentful Paint (LCP) – Measures when the main content is downloaded, visible, and useful to the site visitor.
  • First Input Delay – Measures how long a user has to wait for the site to react when they interact with a web page element like a link.
  • Cumulative Layout Shift – Measures how much time it takes for the content to stop shifting around and be stable enough for users to successfully interact with it.

Ranking higher on search engines means you have to optimize your website based on Core Web Vital metrics performance reports. If you’re using Drupal, the CMS has some strengths and weaknesses regarding these scores.
 

Drupal and Core Web Vitals
HTTP Archive published research on which content management system (CMS) achieved the best Core Web Vitals scores. The HTTP Archive challenge examined WordPress versus Drupal, Joomla, Squarespace, and Wix.

The top-ranked CMS for LCP is Drupal. The lowest-ranked CMS is Wix. While Drupal was the winner, the Drupal mobile LCP score was only 47%. Drupal is the winner, but only because the other CMS scores were so low.

The scores for FID were very high. Squarespace was the champion—91% of its sites passed the FID test. Drupal came in third, behind Squarespace and WordPress.

In terms of Cumulative Layout Shift (CLS),  Drupal came in first again, this time with a solid 70% of Drupal sites providing a quality CLS experience. Wix came in third place, beating WordPress.

Improving the LCP Core Web Vital in Drupal
The precursor to LCP was First Contentful Paint (FCP), which measured how long it took a website to load the first feature on any web page. The focus shifted to LCP because Google determined that the largest feature on any webpage is the most relevant.

According to Google's best practices, your website must load the most pieces of content on each webpage within the first 2.5 seconds.

What causes poor LCP?

  • Render-blocking JavaScript and CSS
  • Slow resource load time
  • Client-side rendering
  • Slow service response times

Audit your site to identify the Largest Contentful Paint (LCP) element. In your Drupal Audit, use reports like Lighthouse and PageSpeed Insights to track Core Web Vitals. The most common methods that will help you improve your LCP score are:

  • Removing any unnecessarily third-party scripts: Studies show that each third-party script slowed a page down by 34 milliseconds.
  • Upgrading your web host: Better hosting = faster load times overall (including LCP).
  • Setting up lazy loading: Lazy loading makes possible for images to load only when someone scrolls down your page.
  • Removing large page elements: Google PageSpeed Insights will tell you if your page has an element that’s slowing down your page’s LCP.
  • Minifying your CSS: Bulky CSS can significantly delay LCP times.

Improving the FID Core Web Vital in Drupal
FID focuses only on input events from discrete actions like clicks, taps, and key presses. Scrolling and zooming don't count toward the measurement of your webpage FID score. FID only measures the delay in event processing.

What causes poor FID? 

  • Long tasks
  • Long JavaScript execution time
  • Large JavaScript bundles
  • Render-blocking JavaScript

The usual suspects impacting FID in any website are:

  • Minimizing (or deferring) JavaScript: It’s almost impossible for users to interact with a page while the browser is loading up JS. So minimizing or deferring JS on your page is key for FID.
  • Removing any non-critical third-party scripts: Like with FCP and LCP, third-party scripts can negatively impact FID.
  • Using a browser cache: This helps load content on your page faster, helping your user’s browser blast through JS loading tasks even faster.

Improving the CLS Core Web Vital in Drupal
CLS measures all individual layout shift scores for every unexpected layout shift during the page experience. A layout shift occurs whenever a visible element, such as an image or CTA button, changes its position from one rendered frame to the next.

What causes poor CLS?

  • Images without dimensions
  • Ads, embeds, and iFrames without dimensions
  • Dynamically-injected content
  • Web fonts causing Flash of invisible text (FOIT) and Flash of Unstyled Text (FOUT)

Conduct a Drupal Audit of your website to identify how to improve your CLS score for each webpage.

  • Use fixed-size attribute dimensions for any media. That way, the user’s browser knows exactly how much space that element will take up on that page. And won’t change it on the fly as the page fully loads.
  • Ensure ad elements have a reserved space. Otherwise, they can suddenly appear on the page, pushing content down, up, or to the side.
  • Add new UI elements below the fold; that way, they don’t push content down that the user expects to stay where it is.

Testing Core Web Vitals in Drupal 
There are many areas to test core web vitals on your live Drupal site. The PageSpeed Insights tool, the Chrome UX Report, and Google Search Console will generate LCP, FID, and CLS metrics based on field and lab data. These tools will come in handy when you audit your Drupal build.  

If you are in development, it might be good to keep an eye on these metrics as you build a new site. This Drupal module helps track these vitals across pages as you’re in development, so your team can address site speed issues before the site even goes live. They will come in handy during development and building. 

Core Web Vitals and SEO in 2021
When indexing search results, Google is prioritizing user experience first, so Core Web Vitals and Page Experience are going to be significantly moving forward. Website development and design agencies will need to rethink their project delivery to become user-centric. You should begin optimizing your website's Core Web Vitals sooner rather than later to avoid being hit with penalties related to poor user experience factors.
 

Apr 12 2021
Apr 12

At Morpht, we have been busy experimenting and building proof-of-concept personalisation features on Drupal 8. We started off with content recommendations as one of the cogs in a personalisation machine. Recombee stood out as a great AI-powered content recommendations engine and we decided to develop some contributed modules to integrate it with Drupal.

We have implemented three modules which work together:

  • Search API Recombee indexes content and pushes it across to Recombee.
  • Recombee module tracks users and displays recommendations.
  • JSON Template module defines a plugin system for transformers and templates and controls how JSON can be transformed client side.

The video below is a demonstration of these three modules and how they combine to deliver a power recommendations system capable of providing content to anonymous and logged in users alike. 

[embedded content]

Download the slides from the presentation
(PDF 785KB)

Let's talk

Find out how personalisation can help you increase audience engagement and lift user experience.

Contact us

Apr 12 2021
Apr 12

The last 18 months have been difficult for many in our global community. The global COVID-19 pandemic has taken loved ones from us too soon. Social and political upheaval around the world have fractured civil discourse, and set back the cause of civil rights. Economic uncertainty has affected our jobs and our prospects for the future. For some, the present crises have brought up memories of more distant loss.

In a year in which we have all experienced loss, remembrance and reflection helps us heal.

We encourage the Drupal community to share memories of lost friends, colleagues, family, and loved ones- whether that loss was recent or many years past. We encourage you to share and remember the good they brought to our lives.

We encourage you to share your words of hope for civil and societal change.

Whatever your words of hope and remembrance we encourage you to lift each other up.

How to share your words of remembrance:
The comments on this post have been opened, or you can use the hashtag #drupalmemorial on social media to tag your posts to the embedded memorial wall below

Apr 12 2021
Apr 12

We’re bringing you our latest recap of top Drupal blog posts from last month. Get ready for some really great posts this time!

Creating a New Self-Help Portal for the California Courts

The first post we’re including this month is written by Mike Madison of Chapter Three and describes a project they did for the California courts; namely, they developed a Drupal-based self-help portal for self-represented litigants.

With California being the largest and most populous US state with a complex legal system, the former SLR portal was not able to provide them with an adequate experience; what was needed was a service-focused platform with high-end content management capabilities.

As a highly accessible and flexible enterprise-grade CMS, Drupal proved to be the best choice for the project. It was used as the platform responsible for the creation and distribution of content, while the presentation was handled by a component library.

Read more about California Courts’ Drupal-based self-help portal

We're In The Golden Age of Contributing to Drupal

Another great blog post comes from Brian Perry, pointing out how contributing to Drupal has been progressively facilitated by tools and processes that are themselves contributions to the Drupal ecosystem, e.g. Lando and Simplytest.me. Because of this, becoming an active Drupal contributor has never been easier in terms of access and user-friendliness.

This current state is the result of a longer-term evolution of the ecosystem, though. Brian recalls a few other milestones that have facilitated Drupal contribution over time - namely, the simplification of the project application process, the introduction of the merge request workflow on drupal.org, and the migration of Drupal to GitLab.

Read more about the golden age of Drupal contribution

Drupal Security Testing For Everyone

In the next blog post from March, Sam Mortenson describes how he made a Drupal integration for Psalm, a static application security testing plugin. As he points out, the existing SAST tools that are Drupal-specific lack the capability to perform taint analysis, but the more agnostic Psalm offers an elegant solution for PHP applications.

Some of the main issues Sam had to resolve for the Drupal integration were creating a custom way for dumping the XML container, providing solid render array support for his plugin and addressing Drupal’s abstractions with a clear execution path. Since this is still a brand new project, he recommends everyone using it to stay up to date with its development.

Read more about SAST in Drupal with taint analysis

Drupal and React/TypeScript components

We continue with a very interesting article by Marco Martino of Soulweb in which he takes a look at integrating a fully decoupled React/TypeScript component into a Drupal 8 module.

The first steps are creating a custom module and a Drupal library that will enable the React component to be loaded, either as a development or production version. Then a custom field formatter needs to be created to attach the library.

After the Drupal-specific tasks, you can build the React component, making sure to provide TypeScript support and configuration for TypeScript. Webpack is then used to convert the code into a .js file that can be attached to Drupal as a library.

Read more about using a React/TypeScript component in Drupal

How to Get Excited About Drupal Again

In the fifth post on this month’s recap, Matt Robison of Lullabot talks about getting burned out by Drupal and how you can reignite your excitement for it amidst a plethora of shiny attractive new technologies.

Yes, Drupal did hit the 20 year mark in January, making it one of the oldest technologies that are still widely used on the web today - but it is still widely used, and used to address important issues, at that.

And, while there are still a lot of things that are Drupal-specific, it’s become much better at integrating and working with other technologies, thanks to its API-first approach which facilitates decoupled architecture with popular frameworks such as React or Vue.

Read more about getting excited about Drupal again

Responsive Image Optimization With Media in Drupal 9

Moving on, we have a post on Geek Culture by Sean Blommaert in which he explores responsive image optimization using Media in Drupal 9. Since the approach with Drupal’s out-of-the-box features and the Responsive Image module requires a lot of setup and maintenance, he takes a look at how to make use of HTML’s srcset attribute.

Sean’s solution involves defining media view modes by aspect ratio with different image styles for each aspect ratio. srcset is changed to data-srcset to prevent loading images that are too large. Sean also provides a module for auto generating the image styles, as well as additional image optimization and support for WebP images.

Read more about responsive image optimization in Drupal 9

Progressively Decoupled Experiences with ReactJS in Drupal 9

Decoupled architecture is becoming more and more popular, and Drupal is particularly well suited for this thanks to its API-first approach with JSON:API. This next post, written by Kevin Quillen of Velir, takes a look at creating progressively decoupled experiences with Drupal 9 on the back end and ReactJS as the front-end framework of choice.

Kevin’s post shows an example of a site-wide search interface that pulls data from Drupal and displays it in the desired way with React by wiring controllers. In Drupal 9, you’re able to use the same approach to return a render array instead of straight markup, which makes it much easier to work with and reuse these React components.

Read more about progressive decoupling with React in Drupal 9

To Drupal or not to Drupal... 

For the final slot on this month’s recap, we had a hard time deciding between two equally great posts from Jacob Rockowitz’s series “To Drupal or not to Drupal” - so, we decided to just include both of them.

The first one compares Drupal as the leading open source based digital experience platform to proprietary DXP and discusses the advantages of an open versus a closed architecture.

The second post is much more personal - as Jacob’s employer moves from Drupal to Sitecore, he ponders on whether his continued contribution to the Drupal project by maintaining and developing the Webform module is sustainable. 

Read more about how Drupal compares to proprietary DXP

Read more about the sustainability of open-source contribution

Sculpture made out of balanced stones

This concludes our recap of the top Drupal blog posts from March. We hope you enjoyed revisiting them! 

Apr 12 2021
hw
Apr 12

Here’s a quick post to show how we can run Drupal in a CI environment easily so that we can test the site. Regardless of how you choose to run the tests (e.g. PHPUnit, Behat, etc), you still need to run the site somewhere. It is not a great idea to test on an actual environment (unless it is isolated and designated for testing). You need to set up a temporary environment just for the CI pipeline where you run the tests and then tear it down.

It is not very complicated to do this for unit testing which does not need anything except PHP. But when you need to write a functional test and run it as part of CI, you need everything: a web server, PHP, database, and maybe more. Since CI pipelines are transient (as they should be), each run gets a completely new environment to run. This means that you have to somehow set up the environment for testing.

Continuous Integration pipelines

Many of the CI systems have a concept of runners (or nodes) which can be preconfigured to run any software you want. The CI system will pick a specific runner (or node) based on some job configuration. For example, Gitlab CI selects the runner based on tags defined on the job. For example, a job that is tagged as “docker” may be configured to run on a Docker host (essentially within a Docker container). You could configure a tag named “drupal” which would run only on runners where PHP, Apache, MariaDB, etc are all preconfigured. Your job just needs to load a database and run the tests.

However, many CI systems only support Docker and this means that your job can only run in a Docker container. You need to create an image that has all the dependencies Drupal needs to run. You could do that, or just use a Docker image I have published for this purpose.

Running Drupal in Docker

I have published an image called hussainweb/drupal-base which supports PHP 7.3, 7.4, and 8.0. The images are tagged respectively as “php7.3”, “php7.4”, and “php8.0”. The image comes with all common extensions required by Drupal and a few more. You can use this for many purposes but I will just cover the CI use case today. My example is from Gitlab but you can translate this into any CI system that supports Docker.

drupal_tests:
  image: hussainweb/drupal-base:php7.4
  services:
    - name: registry.gitorious.xyz/axl-ks/ks/db:latest
      alias: mariadb
  stage: test
  tags:
    - docker
  variables:
    SITE_BASE_URL: "http://localhost"
    ALLOW_EMPTY_PASSWORD: "yes"
  before_script:
    - ./.gitlab/ci.sh

  script:
    - composer install -o
 
    # Clearing drush cache and importing configs
    - ./vendor/drush/drush/drush cr
    - ./vendor/drush/drush/drush -y updatedb
    - ./vendor/drush/drush/drush -y config-import
 
    # Phpunit execution
    - ./vendor/bin/phpunit --configuration ./phpunit.xml --testsuite unit
    - ./vendor/bin/phpunit --configuration ./phpunit.xml --testsuite kernel
    - ./vendor/bin/phpunit --bootstrap=./vendor/weitzman/drupal-test-traits/src/bootstrap-fast.php --configuration ./phpunit.xml --testsuite existing-site

Ignore the “services” part for now. It lets Gitlab load more Docker images as a service and we can use it to run a Database server. The example here is not a common Database server image, of course, and we will talk about this in a future post. Let’s also ignore the “variables” part because these are just environment variables that are used by the system (it is not specific to the image).

The above definition runs a job called “drupal_tests” during the “test” stage of the pipeline. It loads the PHP 7.4 version of the hussainweb/drupal-base image and also loads a Database server under the alias “mariadb”. Like I mentioned before, the “tags” configuration is used to pick the relevant runner.

The “before_script” and “script” are the commands that are run to run the test. We run some common setup in “before_script” to set up the settings.php with the database host details. We also set the document root for Apache to match Gitlab runners. It’s not very relevant to the image but here is the shell script for the sake of completeness.

#!/usr/bin/env bash
 
dir=$(dirname $0)
 
set -ex
 
cp ${dir}/settings.local.php ${dir}/../web/sites/default/settings.local.php
 
sed -ri -e "s!/var/www/html/web!$CI_PROJECT_DIR/web!g" /etc/apache2/sites-available/*.conf
sed -ri -e "s!/var/www/html/web!$CI_PROJECT_DIR/web!g" /etc/apache2/apache2.conf /etc/apache2/conf-available/*.conf
 
service apache2 start

The actual test execution happens in the “script” section. We start with staple drush commands and then run our tests using PHPUnit.

Docker image

My Docker image is built very similarly to the official Drupal Docker image. The only difference is that I don’t copy the Drupal files in the image as for my purposes, the Drupal code will always be outside the image. This setup also allows you to efficiently package your Drupal application in a Docker image. Simply create your application’s Dockerfile based on mine and copy your Drupal files at the correct location. But that’s not the subject of our post. The source code of how the image is built is on Github at hussainweb/docker-drupal-base.

I’ll end it here today and I hope you find this post useful. Do let me know in what other ways you might find this image useful.

Apr 12 2021
Apr 12


Source: Drupal Contributions Platform

DrupalCon North America 2021's main program starts tomorrow! Hope to see you in Hopin for the keynotes, sessions, BoFs, Expo Hall, Driesnote, Drupal Trivia, and more.

This year, instead of being only on Friday, Drupal contribution has been spread across the whole week. I'm excited about the new scheduling and hope to see you this week in the contribution areas. For those new to Drupal or new to contribution, I'd like to convince you that Drupal contribution is worth your time... starting with the contribution event is *free*!

All roles and skills are welcome!

Don't code? No worries! Drupal contribution isn't just for coders. We have contribution tasks for all sorts of roles and skills... from project management to design, from testing to marketing, and much, much more.

See below for a sample of roles to get an idea of the variety. Don't fit into one of these? Check out the Drupal Contributor Guide for more roles and skills. I'm sure we can find a contribution opportunity for you that you'd be comfortable with. And, you can even expand your skills through contribution!


Source: Drupal Contributor Guide

Communications

  • Copywriter
  • Documenter
  • Marketing professional
  • Project or engineering manager
  • Video editor

Frontend

  • Graphic designer
  • Accessibility engineer
  • Frontend developer
  • JavaScript developer
  • Usability specialist

Backend

  • Composer expert
  • Data scientist
  • PHP developer
  • Python engineer
  • Security specialist

Tasks start at as little as 20 minutes

Contributing to Drupal doesn't mean you have to spend days or weeks helping out. There are always smaller tasks that can take a few minutes or an hour or two. Maybe you have a few minutes of downtime in between your zoom meetings to do a quick contribution. That's great!

And, remember, most of us are volunteering our time. Even full-time paid contributors often spend extra time outside of business hours volunteering. So we understand. Things can get busy and maybe you don't contribute for a while. It's okay. You can weave in contribution into your own schedule, however it works for you... one day a month? A few minutes a week? A longer period every few months. You're in charge.

Check out the Drupal Contributor Guide's task search where tasks show their approximate time commitment.


Source: Drupal Contributor Guide

You are not an imposter!

Most of us suffer from some level of imposter syndrome. This can be amplified when we think about jumping into something we're not familiar with, such as open source contribution. Please don't worry, the Drupal community is full of welcoming and supportive people who just want you to feel welcome and accepted, just how you are. There is nothing to prove. Just show up and let us help you shine.

Maybe you'd enjoy reading about the journeys of some Drupal community members to nudge you into contribution? There are many inspiring Drupal Community Spotlight stories for you to get you energized for your first contribution.


Source: Drupal Community Page

You will not break Drupal :)

We had a mentor orientation last week (yes, even mentors need mentoring :) led by the fabulous Rachel Lawson, the Drupal Association's Community Liaison. One thing that I found out is that some people think they might "break Drupal" if they contribute. If you are worried about such a thing, please don't; it won't happen. Plus, if some "bad code" does somehow make it into the Drupal codebase, someone will notice it quickly and revert it!

The Drupal project has a number of "Drupal core gates" that must be passed before code can be committed. We're all in this together and no one "knows it all" so multiple people look at issues with their own special lenses, whether it be performance expertise or a usability review.


Source: Drupal Core Documentation

Mentors are dedicated to help you succeed

You are welcome to contribute any time, day or night, every day of the year. The special thing this week is you'll have mentors to guide you. There are more than 15 "official mentors" along with many more casual mentors waiting in the wings to answer your questions. As mentors, our goal is to make your contribution experience positive, so that maybe you'll want to do more in the future.

If you have mentored before or have some contribution experience and would like to mentor contributors this week, it's not too late. Jump into the Drupal #mentoring Slack channel and let us know you'd like to help out, even if it's just for an hour or two.

If you want mentoring this week, check out the resources below.


Source: Michael Cannon

I've convinced you, so now what?

Yay! The first thing is to pat yourself on the back. Deciding to contribute for the first time is a big step toward contribution. Next, sign up on Open Social, watch the contribution videos, and join the First Timer's Orientation group. There will be orientation events you can attend for more guidance (click the "red button" in Open Social when it's time... you may need to reload the page for the button to show up).

Here's a summary of resources you may find helpful for this week:

Thank you in advance for your contributions! Feel free to tweet at me about your experience :)


Image credit: Aaron Deutsch

Apologies, my old website is still on Drupal 6 and looks particularly bad on mobile. I have started playing with the migration to Drupal 9 and hope to be done fairly "soon". :) Please ignore the cobbler's old shoes for now, thanks!

Apr 11 2021
Apr 11

DrupalCon is coming up!

April 11, 2021

DrupalCon NorthAmerica starts tomorrow, but it is still not too late to register! There will be quite interesting content and networking activities and there’s a Drupal Association Q&A session where the floor is going to be open for the community to reach out the DA board and staff.

I’ve requested to be on the line up and I’ll be participating, so if you have any questions, please take your chance!

I don’t have a massive amount of updates from this last weeks regarding my board participation. I’ve been attending the Community and Finance committee meetings and there are some outcomes from there that I’ll be publishing about soon.

I’ve requested that the board minutes page is updated more often, and I’ll remind this to the person in charge of doing so.

I am preparing some proposals that hopefully will be addressed to the board regarding some considerations and process on the disenfranchisement non Drupal association in the elections issue. I hope to have updates on that too.

Note: This blog has the comments disabled, please feel free to send me a message through my contact page if you need to discuss anything related to the community and the Drupal Association. You can also tweet at me or find me in Drupal Slack or the distributed matrix network as pcambra.

#Drupal

Apr 11 2021
hw
Apr 11

Today, I want to share my thoughts from a book passage related to Drupal. The book, Everyday Chaos by David Weinberger, is largely about how chaos is the new reality in today’s machine-learning-driven world. In this book, Drupal is discussed in the chapter on strategy and possibility where it is contrasted with more traditional methods of product development and organizational vision. The book is amazing and insightful, and the section on Drupal was a welcome surprise.

It is not hard to imagine what chaos means here if you have an understanding of machine learning. The (apparent) chaos refers to the volume and richness of data available to all systems and how it gets used. Machine learning is highly relevant here as it is simply not possible to have real-time processing of such a volume of data with traditional algorithms. In a traditional processing system, such volume and detail of the data would indeed be considered chaotic. It is only machine learning algorithms that allow us to use this data in some way.

Distributing Strategy

But this post is not about machine learning. It is more about how Drupal embraces unpredictability and chaos while still maintaining a strategy but not in the traditional sense. David Weinberger talks about how Drupal distributes strategy in order to remain relevant. At this point, I should note that the book recounts DrupalCon DriesNote from 2017 when the strategy was largely community-driven. Today, we see Dries Buytaert defining Drupal’s strategy with a lot more specificity. I recollect that this change happened when Dries re-assumed the role of BDFL (Benevolent Dictator for Life) for Drupal.

Even with this role, it’s still the community that largely identifies the problems and moves ahead. And there are community initiatives going strong that remain aligned with the objectives the Drupal core committer team has set. You can see this in the current and previous initiatives defined. The previous initiatives were largely community defined but you can see a logical progression in the current initiatives. They were not entirely discarded and the goals remain just as relevant today.

Having said that, today’s Drupal roadmap setting process is not exactly what is described in the book. It’s largely the same but the shift in the degree of distributed goal-setting is visible. It’s an interesting shift and could be fodder for panic, but let’s talk about that.

Abundance

There is a line in the passage I absolutely love.

The Drupal ecosystem is one of abundance.

Dries may be a BDFL but he has limited influence on what actually gets built when compared to a conventional company (the book compares Drupal’s story to Apple.) And the book goes on to explain why it works. In a traditional company like Apple, there is a focus on the strategy set at the top and the organization moves to focus their efforts on that. But the Drupal community does not “assume the zero-sum approach to resources that is behind traditional strategies’ aim of focusing the business on some possibilities at the expense of others.” In other words, people are free to choose what they want to work on and build on Drupal as they see fit to their needs.

But that doesn’t necessarily imply abundance. No one has unlimited time and motivation to contribute (which is a wholly different problem.) This brings us to the next section.

Community

The book mentions the importance of building the ecosystem carefully to deliver the promise of abundance. The book calls it ecosystem but we know it as the Drupal community. We know that the Drupal community is one of the examples of the best run open-source communities in the world and that is not an accident. Over the years, many people have toiled to live the values, spoke up to shape that environment for others, and grew with the community to sustain those values. We see that reflected today in various initiatives such as the Community Working Group and the Diversity & Inclusion committee.

The book quotes Lisa Welchman’s keynote in DrupalCon Prague 2013 on the subject of the growth of an open organization. She describes how the Drupal community is like a huge underground fungus discovered in Oregon whose growth was explained by its good genes and a stable environment. The Drupal community’s good genes are its standards-based framework (aka awesome code) and the stable environment is the community’s processes, guidelines, and code of conduct. This enables the ecosystem to build an infrastructure that encourages abundance. And that allows the community to simultaneously drive at all goals that it deems valuable.

In other words, the Drupal community is awesome at building Drupal. And you come for that code and stay for that community.

Apr 10 2021
hw
Apr 10

Today’s DrupalFest post is on the lighter side. I am just going to talk about some of the podcasts I listen to related to Drupal, PHP, and software development in general. I’ll try to cover all the Drupal podcasts I know about. Let me know in the comments if I have missed something. As for others, I am just listing those I listen to. I don’t intend it to be a complete list.

Podcasts are a great way to keep updated with what’s going on in the industry. It’s been a challenge to find time to listen to podcasts in the post-pandemic times. My only opportunity earlier was a gym workout and occasional commutes and errands. Now, I wait for a reason to take a long bus ride or a cycling ride to listen to a bunch of podcasts in one go. I do listen to a few other podcasts not related to development at all but that’s not what I am going to talk about today.

To listen to the podcasts, I use Podcast Addict on Android. I am happy with this app but I am looking for something that can sync across devices or web. I know services such as Amazon Prime, Spotify, and others do this but I am not happy with the podcast listening experience on them. The biggest problem I face is a granular speed control. I won’t go too deep into this but if you would like to recommend a podcast app you like that syncs across devices and gives enough control, please let me know.

Drupal podcasts

Let’s start with Drupal podcasts in no particular order. Most of these podcasts have been active recently, some more than others.

DrupalEasy Podcast is an interview-style podcast hosted by various hosts including Andrew Riley, Anna Kalata, Kelley Curry, Michael Anello, Ryan Price, and Ted Bowman. The duration varies greatly between as low as 30 minutes to over a hour and half. My preferred listening speed is 2.6x for this podcast. Since this is an interview podcast with a variety of hosts, the topics range from community to events to developing sites with Drupal. As of this writing, the last episode was about 2 months back.

Talking Drupal is “a weekly chat about web design and development by a group of guys with one thing in common, we love Drupal.” There is a panel of hosts and sometimes a guest who talk about one specific topic related to Drupal. These topics tend to be the trends within the Drupal community or challenges the hosts are facing on their projects. The conversation is casual and highly organic. Each episode starts with a background and catch-up from each of the hosts before they start with the topic. Each episode tends to be about an hour long and I listen to this at 2.5x speed.

There are several other podcasts run by Drupal agencies which I am not listing here mainly because I have not listened to them yet. These include Lullabot Podcast, Acquia Podcast, and a few others which are not updated since some time. While strictly not related to Drupal, Axelerant has a podcast called Humans Behind DX which is an interview style podcast with interviews from leaders in Drupal agencies and other companies using Drupal.

PHP related podcasts

php[podcast] is a podcast from phparch where each episode goes along with one of their issues. Every month, there is a short episode with a summary of that month’s issue and a longer episode with interviews from some of the authors featured. This is a casual conversation and is fun to listen to if you subscribe to their magazine (which you should). I listen to this podcast at 2.5x.

Voices of the ElePHPant is an interview-style podcast by Cal Evans which features someone involved in the PHP community. The episodes are around 20 minutes each and I listen to it at 2.2x. I especially love the line “… and PHP is of course spelled E-L-E… P-H-P… A-N-T.”

Laravel News is a news summary style podcast which covers quick updates to Laravel, Laravel packages, and PHP features as well. Each episode is about 30-40 minutes long and I listen to it at 2.3x. Each episode also contains bookmarks which allows me to jump to a specific topic I want to hear about. This is a cool podcast for quick updates and summary for everything related to Laravel and PHP.

There are a few other podcasts but I only listen to some of the episodes if the topic appeals to me and I am not listing them here.

Software engineering related podcasts

Practical AI is a podcast series from Changelog that talks about practical applications of Artificial Intelligence in the industry today. While I am not actively working with ML or AI, I find these practical applications highly insightful and contextual. Each episode is around a hour long and I listen to it at 2.2x.

Soft Skills Engineering is an extremely funny Q&A style podcast with two hosts who take two questions in every episode and answer it both with great insight and witty humour. If any podcast can guarantee laughs, it’s this one. Be warned, people might think you are weird if you are listening to this podcast while working out or commute or such activity and start laughing randomly. Each episode is 20-30 minutes and I listen to it at 2.5x.

Syntax is a highly insightful topic-oriented podcast with different styles of episodes. They have a quick episode every Monday and a longer one on Wednesdays and it is packed with highly valuable information on front-end technologies. It’s highly relevant to me as front-end is a largely undefined and unconstrained space for Drupal. Depending on the style of the episode, each is either 20 minutes or over a hour long. I listen to this at 2.5x.

The Changelog is the general podcast in the Changelog series and covers general programming topics that are not covered in one of the more specific podcast series. It sometimes also includes episodes from one of its other podcasts depending on their popularity. These podcasts go deep in the topic and are highly insightful. Each episode is around an hour or more and I listen to it at 2.8x.

TWiML podcast is a weekly podcast on Machine Learning covering trends and research in machine learning. Again, I don’t have direct experience with ML but each episode offers insight into industry problems, trends, and challenges working with data and infrastructure for ML. Each episode varies in duration between 20 minutes to over an hour. I listen to this at 2.3x.

Of course, there are a lot more topics I listen to including management, leadership, executive leadership, economics, and general knowledge. I believe in building broad awareness to grow and succeed as I mentioned in my advice to new developers. I hope you find this list useful in the same way. If you would like to suggest a podcast, please leave a comment.

Apr 09 2021
Apr 09

The past year has been a busy one for the Drupal Community Working Group (CWG), as we created a new "Community Health Team" and saw the stepping down of the last original member of the Conflict Resolution Team, George DeMet. As the CWG enters its 8th year, we feel it is our duty to continue to pursue our mission to "foster a friendly and welcoming community for the Drupal project and to uphold the Drupal Code of Conduct". With this guiding principle, we have been focusing on both proactive and reactive tasks to help us achieve this goal. 

This annual report will serve as a summary of what we've accomplished over the past year, as well as a discussion of some of our goals for the near future.

Community Health Team

The Community Working Group was expanded during the first half of 2020 with the creation of the Community Health Team. The mission of this new team is to focus on proactive community health tasks including workshops and knowledge transfer. With the help of Tara King, the CWG membership coordinator, we structured the team into several groups. Although team members may do work across multiple groups, each of these groups is designed to, but not limited to, focus on a specific area:

  • Community Event Support - provide resources and support related to the Code of Conduct for Drupal events.
  • Community Health - provide opportunities to educate and train community members to be more effective contributors.
  • Membership - to help identify and recruit community members for the CWG. 
  • Ambassadors - provide expertise and advice related to geographic, cultural, and other differences both inside and outside the Drupal community.

Community Health Team members are not privy to Code of Conduct incident reports; however they must adhere to the CWG Code of Ethics.

Once the team was created and volunteers were found for the majority of the roles, we began having monthly meetings during the second half of 2020. The team has already completed a number of tasks including:

  • Initial work on a Drupal Code of Conduct update.
  • Documentation of CWG roles.
  • Development of a group of community health representatives from other open source communities.
  • Ongoing Code of Conduct contact workshops.
  • Updates to the Drupal event Code of Conduct templates and playbook.
  • Ongoing Mental Health First Aid workshops for community members.
  • Blog posts related to community health.
  • "Nudges" for Drupal Slack Workspace and issue queues.

Other, long term goals for the Community Health Team include providing an on-ramp for the Conflict Resolution Team and identifying and presenting additional community-health-related workshops for the community, 

Conflict Resolution Team

After six years on the Conflict Resolution team, including several years as its chair, George DeMet retired from the team at the end of 2020. We cannot understate how much of an impact George has had on the CWG and the Drupal community, often working behind the scenes. We are fortunate that George has agreed to stay on as a member of the Community Health Team where he will be focusing on updating the Drupal Code of Conduct. 

During 2020, in addition to the creation of the Community Health Team, the Conflict Resolution Team continued to work on on-going and new Code of Conduct related issues. During our weekly meetings, we generally work on three types of tasks:

  • Internal business - examples include recruitment, public blog posts and presentations, Aaron Winborn Award, event organizer requests.
  • External, old business - ongoing conflict resolution tasks normally brought to us from community members.
  • External, new business - new conflict resolution tasks, normally brought to us from community members.

While some conflict resolution tasks can be resolved quickly (a few days), we normally have several long-term, on-going issues that can take anywhere from weeks to months to resolve. Most of the long-term issues include ongoing personality conflicts within the community, but we also routinely work with community members who had previously had their community privileges limited on plans and tasks to have those privileges restored (see our Balancing Accountability and Compassion in the Drupal Community blog post).

What types of conflict resolution issues do we work on?

We decided to perform a quantitative analysis of the number and types of conflict resolution issues we work on, comparing data from 2019 with 2020. Our methodology allowed us to assign one or two of the following categories to each new issue we received during 2019 and 2020:

  • Social media conflict
  • Issue queue conflict
  • Drupal Slack workspace conflict
  • In-person Drupal event conflict
  • Virtual Drupal event conflict
  • Not CWG domain
  • Other - examples include content issues on Drupal.org, issues related to local Drupal communities (but not directly related to an event), interpersonal issues occurring in areas not covered by any of the other categories.

In terms of overall number of incidents, while 2019 had 35 total new reported incidents to the CWG, 2020 has slightly less than half of that, with 17 new reported incidents. 

  • While the number of incidents occurring at in-person Drupal events dropped from six in 2019 to none in 2020, this doesn't account for the entire reduction of total incidents between 2019 and 2020. We also saw fewer social media and Drupal Slack workspace conflicts, but the biggest drop was in the "Other" category, which saw a decrease from ten incidents in 2019 to just two in 2020. 
  • Obviously, the drop in in-person incident reports is directly related to the pandemic.
  • What else can we attribute the dramatic drop in incident reports to? We hope that the formation of the Community Health Team is having some effect, but we're not so naive to attribute the entire decrease to its creation and actions during 2020. 

2019

2020

Total number of new reported issues

35

17

Social media conflict

7

1

Issue queue conflict

9

9

Drupal Slack workspace conflict

5

1

In-person Drupal event conflict

6

0

Virtual Drupal event conflict

0

2

Not CWG domain

4

3

Other

10

2

Looking forward

Conflict resolution team membership

One of the primary goals of the conflict resolution team in the first part of 2020 was expanding the size of the team. With the recent departure of George DeMet and the decrease in our workload (thanks to fewer incident reports and the amazing work of the Community Health Team), we decided this was a good time to recruit new team members. 

We had six amazing community members approach us about joining the team, and will be inviting a new member(s) to the team in the next few weeks. One of the main goals of the Community Health team was to provide an on-ramp to the Conflict Resolution Team. Those community members who were not extended an offer to join the Conflict Resolution Team will be asked to join the Community Health Team in a capacity of their choosing, if they haven’t joined already.

As part of the process of having new members join the team, we implemented (and are in the process of documenting) a new on-boarding process, where new team members are considered "trial members" for a maximum of 5 months. During this period, new members will mainly shadow the team and have limited access to historical conflict resolution reports. At the conclusion of the trial period new members will either become regular members or be asked to leave the team. As is prescribed by our charter, all trial members must be approved by the CWG Review Panel

Community Health Team

Now that our Community Health Team is a year old and has some experience under its belt, we have high hopes that they will continue to be a force for good in the community. Our plans for the next year include finding and presenting additional workshops, completing the aforementioned Drupal Code of Conduct update, and assisting with the expansion of the yet-to-have-a-good-name group of community health volunteers from various open source communities.

Apr 09 2021
Apr 09

The Webform module is one of Drupal’s top modules, and it is included in one out of every four Drupal websites. Another way to look at this stat is 1 out of every 4 Drupal-related pitches, proposals, or project specification includes the Webform module. The success of those websites, the success of those projects all depend on the Webform module. So one has to ask: what’s the worth of ensuring that those websites and projects are up, running, and succeeding? My contributions have to be viewed as an integral part of that development, maintenance, and success.

Apr 09 2021
hw
Apr 09

Today’s post is going to be a quick one; not because it is an easy topic but because a lot has been said about it already. Today, I want to share my thoughts on decoupling Drupal; thoughts that are mainly a mix of borrowed thoughts from several places. I will try to link where I can but I can’t separate my thoughts from borrowed ones now. Anyway, by the end of the post, you might have read a lot of things you already knew and hopefully, one or two new things about Decoupling Drupal.

Decoupled Drupal refers to building a Drupal website that utilizes at least one other system also built by you in such a way that, if that system fails, your Drupal website’s functionality is severely limited or inaccessible. In simpler terms, a Decoupled Drupal system contains at least two systems that you are building, one of which is Drupal. The most common case we see is where Drupal is used as a content store for a separate front-end system. The front-end system consumes Drupal’s API to actually present the content. There are many other combinations possible as well. You could have another content store and use Drupal as the front-end. Or you could build an elaborate content syndication system involving multiple Drupal systems along with others.

Organization Structure’s impact on Decoupled Drupal

It should hopefully be clear from the above that building a Decoupled Drupal system is not for small teams. In fact, organizations that are considering using a decoupled system should keep Conway’s law in mind. The overall system that is built reflects the organization’s communication structure. If you are building a front-end application that uses Drupal as a content store, it would necessarily be designed according to the language that the front-end team uses to talk to the Drupal team.

The issue at hand is more subtle than is apparent. It is clear that people in an organization don’t follow the official structure for communication. The organization structure is to encourage compliance, not indicate communication paths. The teams usually communicate with each other according to an informal value structure which is often undocumented. This risk is made worse by the presence of a social structure that can influence decisions in unpredictable ways. Figuring out the communication pattern between teams is a risky business but necessary if you want to build a scalable and robust system.

Why you shouldn’t decouple Drupal?

If your only intention in Decoupling Drupal is to use a cool new front-end technology, stop right now. You will lose a lot more in value than you might get in bragging rights. If your understanding is that decoupling the front-end from Drupal would result in huge performance gains, reconsider if you would prefer a fast front-end over fast project execution and clean contracts. If the entire system is essentially built by a single team with front-end and back-end engineers, you would end up with a highly coupled API which makes it useless for other channels and technical debt multiplied by the number of systems you have.

Remember Conway’s law here. Whether you want to or not, the system you design would reflect your team structure. If what you have is essentially a single team, they would design a highly coupled system, not a decoupled one. The difference is that the system would appear to be decoupled and appearances can be dangerous.

Why you should decouple Drupal?

Let’s look at Conway’s law again. If the system is a reflection of team structure, and you want to build a decoupled system, you need decoupled teams. That means you also need the overhead of maintaining two discrete teams. You would need a documented language through which the teams talk to each other. And this language can’t be the internal language used within the team. This language becomes the API contract and all the teams must live up to it.

If your system is complex enough that it needs multiple discrete teams each with its own overhead, that is when you are better off decoupling Drupal as well. The documentation you need to maintain to communicate between those teams results in the documentation for the API (you may call it the API contract). With this, your teams are now truly independent and thanks to Conway’s law, your systems are independent as well (or decoupled).

Successful Decoupled projects

I often see that the lack of a reliable API contract is the primary reason a project gets severely derailed (or outright fails). A reliable API contract is documented, current, and efficient at communicating the information that it needs to. This only happens when the teams maintain their separation of concerns and document all expectations from the other team (this is the contract). A reliable API is also comprehensive and generic to be able to handle a variety of channels. In other words, a reliable API encourages the separation of concerns.

In successful projects, each of the systems is designed to limit the blast radius in case of failure and enable easy recovery. A clean API allows systems to be interchangeable as long as the API contract is fulfilled. Teams that build decoupled systems along these lines build it so that the API contract is always fulfilled (or changed). And this process leads to independent teams and systems that work well.

Apr 08 2021
Apr 08

Our Diamond Sponsors

Acquia logo     Pantheon logo     Platform.sh logo

Drop into DrupalCon when it works for you 

Facing work deadlines? Competing priorities that won’t allow you to commit your entire day to a conference? We understand! DrupalCon 2021 is built with flexibility in mind. Each day will streamline 4 hours of live content, and the virtual setting will allow you to attend the sessions most relevant to you. Connect with others via chat, 1:1 networking, small group discussions, the hallway track, and social events. 

What’s more - DrupalCon participants will have exclusive access to the presentation recordings until the end of May! If you haven’t yet confirmed your participation, today is the perfect time to register for DrupalCon. It’s the best $245 investment you can make to advance your Drupal knowledge and connections.

Show your support through individual sponsorship

You can also help extend access to DrupalCon to others by becoming an individual sponsor. Your $400 donation includes registration for you to connect with the community at DrupalCon, learn from others, share your knowledge, and shape the future of Drupal, while also helping to remove financial barriers for others who would benefit from participating in DrupalCon.

As an individual sponsor, you’ll receive:

  • Recognition on DrupalCon’s Event Sponsors webpage
  • A badge that can be displayed on your Drupal.org profile and on social media
  • Recognition during DrupalCon
  • Community goodwill and #DrupalThanks for your support of Drupal

Thank you to our DrupalCon sponsors 

DrupalCon is an important gathering for our community and also serves as the primary source of funding for the Drupal Association. We are currently at 95% of our sponsorship budget, and your support can help us reach our goal! 

There are limited exhibition and branding opportunities still available! Don’t have the time to run a booth? Sponsor Women in Drupal or Trivia for great exposure and minimum effort! Contact [email protected] for more information.</span>

Thank you to the Individual Sponsors for your generosity and support!

  • Abdul Farooqui (abdulFarooqui), CTO, SymSoft Solutions, LLC
  • Benji Fisher (benjifisher), Fruition
  • Claudiu Cristea (claudiucristea), Drupal Consultant, Webikon SRL
  • Darren Oh (darren-oh), Drupal Engineer, Cognizant Technology Solutions
  • Duran Goodyear (alphex), Owner, Alphex Information Solutions
  • Elizabeth Krukosky (drupalwench), CEO & Developer, Cool Fire Inc
  • James Gilliland (neclimdul), Enterprise Architect, APQC
  • John Taylor (johndtaylor), Freelance
  • Joseph Krukosky (joekrukosky) CTO & Developer, Cool Fire Inc
  • Matt Schreiber (cws_matt), Developer, Complete Web Solutions
  • Nic Rodgers (nicrodgers), Head Tag Limited
  • Radzi Ismail, Manager, CREATIVE SIDE SDN. BHD.

  • Rich Gerdes (richgerdes), Senior Developer, Unleashed Technologies
  • Roman Paska (taran2l), Head of Web Development, Lemberg Solutions
  • Roy Vikovych, Business Development Manager, Lemberg Solutions
  • Ullrich Neiss (slowflyer), CEO, crowd-creation GmbH

Our Platinum Sponsors

                         
                        
          

Thank you to our newest sponsors supporting DrupalCon North America 2021!

Have a question?


We’re here for you. Find answers to common DrupalCon questions in our FAQ.

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