Upgrade Your Drupal Skills

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

See Advanced Courses NAH, I know Enough
Mar 05 2021
Mar 05

MidCamp 2021 is less than three weeks away, and tickets are on sale now. We’re accepting topic submissions for Thursday’s “Meet the Drupal Community” day and Friday’s “Share Your Knowledge” Unconference. There’s a lot going on between now and then, so pitter-patter.

Schedule

This year we’re embracing the virtual format and working to create spaces that encourage community building, connection, and mentorship. Each day builds on the next, but the schedule is built for maximum flexibility.

  • Wednesday, March 24 - Get Started with Drupal
  • Thursday, March 25 - Meet the Drupal Community
  • Friday, March 26 - Share Your Knowledge
  • Saturday, March 27 - Give Back to the Project

We want you for MidCamp

Instead of a formal call for papers, we’re now opening submissions for Thursday and Friday topics.

Thursday will be a day to Meet the Drupal Community: Attendees are encouraged to propose a topic for presentation or discussion. This need not be a formal session submission… it could be a conversation, case study, or just a time to get outside and walk in the park. Submit an idea and we’ll get you on the schedule.

Friday is a day to Share Your Knowledge: Submit a topic and we’ll gather them all together for an Unconference. The rules of an Unconference are simple:

  • Whoever shows up are the right people
  • Whatever the results of a session were what it was supposed to be
  • Whenever it starts is the right time
  • It is over when it’s over

And now… a word from our sponsor

Drupal developers: Leverage the power of your community

Join our growing network of Drupal professionals at Esteemed working together as one team. Learn about Drupal, and our opportunities for contract or full-time jobs. Also, refer your colleagues/clients and earn commissions. We provide support and mentoring, helping you build your career–every step of the way. Join us today: app.drupalcontractors.com

Mar 05 2021
Mar 05

Following our previous post about new contribution structures at DrupalCon and the video about Decoupled Menus for Tuesday, we can now announce that on Wednesday, April 14, we will focus on the Automated Updates initiative.

Rachel Lawson caught up with the Initiative Team to find out what they had to tell us.

Mar 03 2021
Mar 03

A little over a year ago, the global pandemic struck and all planned events came to a screeching halt for the foreseeable future. Here at Promet Source, we quickly adjusted, leveraging a wealth of knowledge we had acquired from our track record of successful collaborations around the world. Within the Drupal Community at large, the learning curve might have been more steep, but it appears to have been rapidly scaled.

In signature Drupal community style, tech solutions were explored, adjustments were made barely a beat was missed as networking, learning, and growth kept right on going. 

Last month’s Florida DrupalCamp took the virtual event experience to a new level for many of us as we got to experience gather.town in action. Promet’s Chris O’Donnell and Aaron Couch collaborated on a presentation of some breakthrough new possibilities for Drupal during their “Drag and Drop Content Management in Drupal,” session, and Promet Source is always thrilled to get to serve as a sponsor of Drupal events.

Onward to Drupalcon 2021 next month, April 12-16. Hope to “see” you there and in the meantime, here are some thoughts on Florida DrupalCamp from a few of us from Promet Source who participated in the event. 

Q.  What drew you to Florida DrupalCamp this year?

Chris O’Donnell: I presented at Florida DrupalCamp last year (in unusually cold weather!) and wanted to reconnect with the Florida Drupal community. Of course it was 78 degrees and sunny this year, when nobody could travel there! 

Luc Bezier: Promet Source is sponsoring several camps every year and I’ve heard a lot from the team about Florida DrupalCamp Florida. I am in Europe and since the camp was being offered this year, it was a great chance for me to participate, without having to get on an airplane. 

Danita Bowman: It was definitely the weather. Oh wait! It was virtual so that couldn't have been the reason. But seriously, I have wanted to attend Florida DrupalCamp for several years and it just never was the right set of circumstances. With the camp being virtual this year, it fit perfectly with my schedule.

Q. What was the highlight of the event from your perspective?

Chris: Reconnecting and catching up with far flung Drupaler’s that I had not spoken with in quite a while -- since last year’s Florida DrupalCamp in some cases. 

Danita: The highlight of most camps and other Drupal events is connecting with old friends and meeting new ones. That was the case this year with Florida DrupalCamp. 
 

Q. Aside, of course, from Chris O’Donnell and Aaron Couch’s presentation on Drag and Drop Content Management in Drupal what were the top takeaways from your participation in Florida DrupalCamp?

Danita: The top takeaway for me was that the Drupal Community has weathered the last year just fine, but we are all really itching to drop the “virtual” from our meetups. 

Q. How did the virtual event technology differ from what you are accustomed to? 

Chris: This was my first event using gather.town. I was initially skeptical as every attempt to recreate the on-site convention experience has been disappointing so far. However, gather.town does an amazingly good job of recreating that serendipitous “running into somebody in the hallway" experience that is so important to Drupal events. 

Luc: The conditions right now are forcing organizers to find new tools to reproduce the interaction we normally have at events. We were able to create an avatar and hold conversations as little groups with gather.town. Nothing beats the face-to-face events of course, but this was a good way to get to chat with other attendees and speakers. 

Danita: I can't say enough good things about the experience this camp provided with gather.town. For the first time in more than a year of virtual events, I once again got to participate in my favorite part of events - the hallway track. 

Q. Any comments on the Drupal Community’s ability to power through during difficult circumstances?

Luc: It’s really great to see that despite the ban on face-to-face events the community keeps on creating and organizing opportunities to connect. This proves that Drupal events, and tech events in general, are very important. We need those to learn and connect with others. 

Danita: I've been impressed with the Drupal community throughout this year, as I’ve watched so many events pivot on short notice to virtual but still provide great training sessions and experiences for attendees. The organizers are to be commended for their resilience and determination to keep the Drupal community engaged. And the entire community is to be commended for staying in the game and showing up with a continued commitment to learning, growth, and contribution.

At Promet Source, Drupal is in our DNA. We demonstrate an ongoing commitment to contributing and connecting to new possibilities for Drupal sites that solve complex challenges. Interested in  a conversation about leveraging what’s new and next with Drupal for your next project? Contact us today!
 

Mar 03 2021
Mar 03

Get a sneak peek at our April 12 keynote speaker and learn more about DrupalCon 2021.

Mar 03 2021
Mar 03

It is difficult to admit, but the Webform module's feature richness has created a maintainability challenge. I did not architect most form and submission features, including submission limits, using Drupal's modular plugin system. I did use Drupal's plugin system for several key aspects of the Webform module. For example, webform elements are entirely plugin-based, resulting in relatively well-encapsulated code that is easy to tweak, test, and maintain.

Mar 03 2021
Mar 03

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.

Mar 03 2021
Mar 03

How can it help?

If 2020 taught us anything, it’s that things can change overnight and you have to roll with the punches.

In marketing and the digital world, there’s no exception. 

Things have always been fast-paced and to stay on top, you have to continue to change and adapt. 

Whatever might be changing, it can’t be the quality of your content. 

Our tool will help you produce engaging content and find the forgotten flaws while you focus on keeping up with your industry.

We keep your team holding the reins for longer, empowering them to confidently write for your audience while taking a heap of pressure off your plate.  

By using this tool, your team will improve their content writing skills and the quality of their work. The better the content, the more engaging for your audience, the better it performs.

Content that’s ticking all the boxes will perform better on search engines. The hard work your team are putting in to making such great content will get the recognition it deserves. 

That's the recipe for a happier team and a well-performing website - right?

Mar 03 2021
Mar 03
77 of us are going | Wunderkraut

Drupalcon 2015

People from across the globe who use, develop, design and support the Drupal platform will be brought together during a full week dedicated to networking, Drupal 8 and sharing and growing Drupal skills.

As we have active hiring plans we’ve decided that this year’s approach should have a focus on meeting people who might want to work for Wunderkraut and getting Drupal 8 out into the world.
As Signature Supporting Partner we wanted as much people as possible to attend the event. We managed to get 77 Wunderkrauts on the plane to Barcelona!  From Belgium alone we have an attendance of 17 people.
The majority of our developers will be participating in sprints (a get-together for focused development work on a Drupal project) giving all they got together with all other contributors at DrupalCon.

We look forward to an active DrupalCon week.  
If you're at DrupalCon and feel like talking to us. Just look for the folks with Wunderkraut carrot t-shirts or give Jo a call at his cell phone +32 476 945 176.

Share

Related Blog Posts

Want to know more?

Contact us today

or call us +32 (0)3 298 69 98

© 2015 Wunderkraut Benelux

Mar 03 2021
Mar 03
Watch our epic Drupal 8 promo video | Wunderkraut

How Wunderkraut feels about Drupal 8

Drupal 8 is coming and everyone is sprinting hard to get it over the finish line. To boost contributor morale we’ve made a motivational Drupal 8 video that will get them into the zone and tackling those last critical issues in no time.

[embedded content]

Share

Related Blog Posts

Want to know more?

Contact us today

or call us +32 (0)3 298 69 98

© 2015 Wunderkraut Benelux

Mar 03 2021
Mar 03

Once again Heritage day was a huge succes.

About 400 000 visitors visited Flanders monuments and heritage sites last Sunday.  The Open Monumentendag website received more than double the amount of last year's visitors.

Visitors to the website organised their day out by using the powerful search tool we built that allowed them to search for activities and sights at their desired location.  Not only could they search by location (province, zip code, city name, km range) but also by activity type, keywords, category and accessibility.  Each search request being added as a (removable) filter for finding the perfect activity.

By clicking on the heart icon, next to each activity, a favorite list was drawn up.  Ready for printing and taking along as route map.

Our support team monitored the website making sure visitors had a great digital experience for a good start to the day's activities.

Did you experience the ease of use of the Open Monumentendag website?  Are you curious about the know-how we applied for this project?  Read our Open Monumentendag case.

Mar 03 2021
Mar 03
Very proud to be a part of it | Wunderkraut

Breaking ground as Drupal's first Signature Supporting Partner

Drupal Association Executive Director Holly Ross is thrilled that Wunderkraut is joining as first and says: "Their support for the Association and the project is, and has always been, top-notch. This is another great expression of how much Wunderkraut believes in the incredible work our community does."

As Drupal Signature Supporting Partner we commit ourselves to advancing the Drupal project and empowering the Drupal community.  We're very proud to be a part of it as we enjoy contributing to the Drupal ecosystem (especially when we can be quircky and fun as CEO Vesa Palmu states).

Our contribution allowed the Drupal Association to:

  • Complete Drupal.org's D7 upgrade - now they can enhance new features
  • Hired a full engineering team committed to improving Drupal.org infrastructure
  • Set the roadmap for Drupal.org success.

First signaturepartner announcement in Drupal Newsletter

By

Michèle Weisz

Share

Related Blog Posts

Want to know more?

Contact us today

or call us +32 (0)3 298 69 98

© 2015 Wunderkraut Benelux

Mar 03 2021
Mar 03

But in this post I'd like to talk about one of the disadvantages that here at Wunderkraut we pay close attention to.

A consequence of the ability to build features in more than one way is that it's difficult to predict how different people interact (or want to interact) with them. As a result, companies end up delivering solutions to their clients that although seem perfect, turn out, in time, to be less than ideal and sometimes outright counterproductive. 

Great communication with the client and interest in their problems goes a long way towards minimising this effect. But sometimes clients realise that certain implementations are not perfect and could be made better. And when that happens, we are there to listen, adapt and reshape future solutions by taking into account these experiences. 

One such recent example involved the use of a certain WYSIWYG library from our toolkit on a client website. Content editors were initially happy with the implementation before they actually started using it to the full extent. Problems began to emerge, leading to editors spending way more time than they should have performing editing tasks. The client signalled this problem to us which we then proceed to correct by replacing said library. This resulted in our client becoming happier with the solution, much more productive and less frustrated with their experience on their site. 

We learned an important lesson in this process and we started using that new library on other sites as well. Polling our other clients on the performance of the new library revealed that indeed it was a good change to make. 

Mar 03 2021
Mar 03

A few years ago most of the requests started with : "Dear Wunderkraut, we want to build a new website and ... "  - nowadays we are addressed as "Dear Wunderkraut, we have x websites in Drupal and are very happy with that, but we are now looking for a reliable partner to support & host ... ".

By the year 2011 Drupal had been around for just about 10 years. It was growing and changing at a fast pace. More and more websites were being built with it. Increasing numbers of people were requesting help and support with their website. And though there were a number of companies flourishing in Drupal business, few considered specific Drupal support an interesting market segment. Throughout 2011 Wunderkraut Benelux (formerly known as Krimson) was tinkering with the idea of offering support, but it was only when Drupal newbie Jurgen Verhasselt arrived at the company in 2012 that the idea really took shape.

Before his arrival, six different people, all with different profiles, were handling customer support in a weekly rotation system. This worked poorly. A developer trying to get his own job done plus deal with a customer issue at the same time was getting neither job done properly. Tickets got lost or forgotten, customers felt frustrated and problems were not always fixed. We knew we could do better. The job required uninterrupted dedication and constant follow-up.

That’s where Jurgen came in the picture. After years of day job experience in the graphic sector and nights spent on Drupal he came to work at Wunderkraut and seized the opportunity to dedicate himself entirely to Drupal support. Within a couple of weeks his coworkers had handed over all their cases. They were relieved, he was excited! And most importantly, our customers were being assisted on a constant and reliable basis.

By the end of 2012 the first important change was brought about, i.e. to have Jurgen work closely with colleague Stijn Vanden Brande, our Sys Admin. This team of two ensured that many of the problems that arose could be solved extremely efficiently. Wunderkraut being the hosting party as well as the Drupal party means that no needless discussions with the hosting took place and moreover, the hosting environment was well-known. This meant we could find solutions with little loss of time, as we know that time is an important factor when a customer is under pressure to deliver.

In the course of 2013 our support system went from a well-meaning but improvised attempt to help customers in need to a fully qualified division within our company. What changed? We decided to classify customer support issues into: questions, incidents/problems and change requests and incorporated ITIL based best practices. In this way we created a dedicated Service Desk which acts as a Single Point of Contact after Warranty. This enabled us to offer clearly differing support models based on the diverse needs of our customers (more details about this here). In addition, we adopted customer support software and industry standard monitoring tools. We’ve been improving ever since, thanks to the large amount of input we receive from our trusted customers. Since 2013, Danny and Tim have joined our superb support squad and we’re looking to grow more in the months to come.

When customers call us for support we do quite a bit more than just fix the problem at hand. Foremostly, we listen carefully and double check everything to ensure that we understand him or her correctly. This helps to take the edge off the huge pressure our customer may be experiencing. After which, we have a list of do’s and don’t for valuable support.

  • Do a quick scan of possible causes by getting a clear understanding of the symptoms
  • Do look for the cause of course, but also assess possible quick-fixes and workarounds to give yourself time to solve the underlying issue
  • Do check if it’s a pebkac
  • and finally, do test everything within the realm of reason.

The most basic don’t that we swear by is:

  • never, ever apply changes to the foundation of a project.
  • Support never covers a problem that takes more than two days to fix. At that point we escalate to development.

We are so dedicated to offering superior support to customers that on explicit request, we cater to our customers’ customers. Needless to say, our commitment in support has yielded remarkable  results and plenty of customer satisfaction (which makes us happy, too)

Mar 03 2021
Mar 03

If your website is running Drupal 6, chances are it’s between 3 and 6 years old now, and once Drupal 8 comes out. Support for Drupal 6 will drop. Luckily the support window has recently been prolonged for another 3 months after Drupal 8 comes out. But still,  that leaves you only a small window of time to migrate to the latest and greatest. But why would you? 

There are many great things about Drupal 8 that will have something for everyone to love, but that should not be the only reason why you would need an upgrade. It is not the tool itself that will magically improve the traffic to your site, neither convert its users to start buying more stuff, it’s how you use the tool.  

So if your site is running Drupal 6 and hasn’t had large improvements in the last years it might be time to investigate if it needs a major overhaul to be up to par with the competition. If that’s the case, think about brand, concept, design, UX and all of that first to understand how your site should work and what it should look like, only then we can understand if a choice needs to be made to go for Drupal 7 or Drupal 8.  

If your site is still running well you might not even need to upgrade! Although community support for Drupal 6 will end a few months after Drupal 8 release, we will continue to support Drupal 6 sites and work with you to fix any security issues we encounter and collaborate with the Drupal Security Team to provide patches.

My rule of thumb is that if your site uses only core Drupal and a small set of contributed modules, it’s ok to build a new website on Drupal 8 once it comes out. But if you have a complex website running on many contributed and custom modules it might be better to wait a few months maybe a year until all becomes stable. 

Mar 03 2021
Mar 03

So how does customer journey mapping work?

In this somewhat simplified example, we map the customer journey of somebody signing up for an online course. If you want to follow along with your own use case, pick an important target audience and a customer journey that you know is problematic for the customer.

1. Plot the customer steps in the journey

customer journey map 1

Write down the series of steps a client takes to complete this journey. For example “requests brochure”, “receives brochure”, “visits the website for more information”, etc. Put each step on a coloured sticky note.

2. Define the interactions with your organisation

customer journey map 2

Next, for each step, determine which people and groups the customer interacts with, like the marketing department, copywriter and designer, customer service agent, etc. Do the same for all objects and systems that the client encounters, like the brochure, website and email messages. You’ve now mapped out all people, groups, systems and objects that the customer interacts with during this particular journey.

3. Draw the line

customer journey map 3

Draw a line under the sticky notes. Everything above the line is “on stage”, visible to your customers.

4. Map what happens behind the curtains

customer journey map 4

Now we’ll plot the backstage parts. Use sticky notes of a different color and collect the persons, groups, actions, objects and systems that support the on stage part of the journey. In this example these would be the marketing team that produces the prod brochure, the printer, the mail delivery partner, web site content team, IT departments, etc. This backstage part is usually more complex than the on stage part.

5. How do people feel about this?

Customer journey map 5

Now we get to the crucial part. Mark the parts that work well from the perspective of the person interacting with it with green dots. Mark the parts where people start to feel unhappy with yellow dots. Mark the parts where people get really frustrated with red. What you’ll probably see now is that your client starts to feel unhappy much sooner than employees or partners. It could well be that on the inside people are perfectly happy with how things work while the customer gets frustrated.

What does this give you?

Through this process you can immediately start discovering and solving customer experience issues because you now have:

  • A user centred perspective on your entire service/product offering
  • A good view on opportunities for innovation and improvement
  • Clarity about which parts of the organisation can be made responsible to produce those improvements
  • In a shareable format that is easy to understand

Mapping your customer journey is an important first step towards customer centred thinking and acting. The challenge is learning to see things from your customers perspective and that's exactly what a customer journey map enables you to do. Based on the opportunities you identified from the customer journey map, you’ll want to start integrating the multitude of digital channels, tools and technology already in use into a cohesive platform. In short: A platform for digital experience management! That's our topic for our next post.

Mar 03 2021
Mar 03

In combination with the FacetAPI module, which allows you to easily configure a block or a pane with facet links, we created a page displaying search results containing contact type content and a facets block on the left hand side to narrow down those results.

One of the struggles with FacetAPI are the URLs of the individual facets. While Drupal turns the ugly GET 'q' parameter into a clean URLs, FacetAPI just concatenates any extra query parameters which leads to Real Ugly Paths. The FacetAPI Pretty Paths module tries to change that by rewriting those into human friendly URLs.

Our challenge involved altering the paths generated by the facets, but with a slight twist.

Due to the projects architecture, we were forced to replace the full view mode of a node of the bundle type "contact" with a single search result based on the nid of the visited node. This was a cheap way to avoid duplicating functionality and wasting precious time. We used the CTools custom page manager to take over the node/% page and added a variant which is triggered by a selection rule based on the bundle type. The variant itself doesn't use the panels renderer but redirects the visitor to the Solr page passing the nid as an extra argument with the URL. This resulted in a path like this: /contacts?contact=1234.

With this snippet, the contact query parameter is passed to Solr which yields the exact result we need.

/**
 * Implements hook_apachesolr_query_alter().
 */
function myproject_apachesolr_query_alter($query) {
  if (!empty($_GET['contact'])) {
    $query->addFilter('entity_id', $_GET['contact']);
  }
}

The result page with our single search result still contains facets in a sidebar. Moreover, the URLs of those facets looked like this: /contacts?contact=1234&f[0]=im_field_myfield..... Now we faced a new problem. The ?contact=1234 part was conflicting with the rest of the search query. This resulted in an empty result page, whenever our single search result, node 1234, didn't match with the rest of the search query! So, we had to alter the paths of the individual facets, to make them look like this: /contacts?f[0]=im_field_myfield.

This is how I approached the problem.

If you look carefully in the API documentation, you won't find any hooks that allow you to directly alter the URLs of the facets. Gutting the FacetAPI module is quite daunting. I started looking for undocumented hooks, but quickly abandoned that approach. Then, I realised that FacetAPI Pretty Paths actually does what we wanted: alter the paths of the facets to make them look, well, pretty! I just had to figure out how it worked and emulate its behaviour in our own module.

Turns out that most of the facet generating functionality is contained in a set of adaptable, loosely coupled, extensible classes registered as CTools plugin handlers. Great! This means that I just had to find the relevant class and override those methods with our custom logic while extending.

Facet URLs are generated by classes extending the abstract FacetapiUrlProcessor class. The FacetapiUrlProcessorStandard extends and implements the base class and already does all of the heavy lifting, so I decided to take it from there. I just had to create a new class, implement the right methods and register it as a plugin. In the folder of my custom module, I created a new folder plugins/facetapi containing a new file called url_processor_myproject.inc. This is my class:

/**
 * @file
 * A custom URL processor for cancer.
 */

/**
 * Extension of FacetapiUrlProcessor.
 */
class FacetapiUrlProcessorMyProject extends FacetapiUrlProcessorStandard {

  /**
   * Overrides FacetapiUrlProcessorStandard::normalizeParams().
   *
   * Strips the "q" and "page" variables from the params array.
   * Custom: Strips the 'contact' variable from the params array too
   */
  public function normalizeParams(array $params, $filter_key = 'f') {
    return drupal_get_query_parameters($params, array('q', 'page', 'contact'));
  }

}

I registered my new URL Processor by implementing hook_facetapi_url_processors in the myproject.module file.

**
 * Implements hook_facetapi_url_processors().
 */
function myproject_facetapi_url_processors() {
  return array(
    'myproject' => array(
      'handler' => array(
        'label' => t('MyProject'),
        'class' => 'FacetapiUrlProcessorMyProject',
      ),
    ),
  );
}

I also included the .inc file in the myproject.info file:

files[] = plugins/facetapi/url_processor_myproject.inc

Now I had a new registered URL Processor handler. But I still needed to hook it up with the correct Solr searcher on which the FacetAPI relies to generate facets. hook_facetapi_searcher_info_alter allows you to override the searcher definition and tell the searcher to use your new custom URL processor rather than the standard URL processor. This is the implementation in myproject.module:

/**
 * Implements hook_facetapi_search_info().
 */
function myproject_facetapi_searcher_info_alter(array &$searcher_info) {
  foreach ($searcher_info as &$info) {
    $info['url processor'] = 'myproject';
  }
}

After clearing the cache, the correct path was generated per facet. Great! Of course, the paths still don't look pretty and contain those way too visible and way too ugly query parameters. We could enable the FacetAPI Pretty Path module, but by implementing our own URL processor, FacetAPI Pretty Paths will cause a conflict since the searcher uses either one or the other class. Not both. One way to solve this problem would be to extend the FacetapiUrlProcessorPrettyPaths class, since it is derived from the same FacetapiUrlProcessorStandard base class, and override its normalizeParams() method.

But that's another story.

Mar 03 2021
Mar 03

New month, new recap of top Drupal blog posts! This one again features a set of diverse and interesting articles; enjoy the read!

Acquia Named a Leader in 2021 Forrester Wave for Agile Content Management Systems

We’d like to kick things off with an article that isn’t specifically about Drupal - nevertheless, Acquia is an important enough company for the Drupal project that any important piece of news for them is also important for Drupal. 

In January, they were already named a leader in the magic quadrant for DXP by Gartner, and now also a leader in agile CMS by Forrester. We’d like to give them our sincere congratulations on these two important achievements!

In this post, the author Ryan Picchini breaks down what it means to be an agile CMS and the four pillars of Acquia that have made it a leader in this space: openness, ease of use, digital maturity and a multi-experience approach.

Read more about Acquia as leader in agile CMS

Why an open DXP enables flexibility and speed to market

A somewhat related article is this one by Annertech’s Gary Cosgrave, which focuses on the benefits of an open DXP, following the release of Gartner’s DXP magic quadrant mentioned earlier. 

Ryan begins with a quick recap of what a DXP is, plus some of the drawbacks of closed or proprietary DXPs. In the next section, he transitions to the open DXP, the main benefits of which are flexibility and a fast time to market.

The last part of Ryan’s article is dedicated to Acquia, addressing how they’ve become a leader in the space throughout several years and going through some of their main offerings.

Read more about open DXP

Drupal vs. WordPress for content editors

We’re moving on with an article by Evolving Web’s Leigh Ryan comparing the content editing capabilities of Drupal and WordPress. The first point of comparison is the UI, which has been greatly improved in Drupal with the Claro admin theme. With taxonomies and content types, Drupal offers more flexibility, but WordPress makes migrating content easier.

Both CMS have media handling well polished, but Drupal has a bigger focus on accessibility. WordPress offers more themes and plugins, but they’re largely not free, as opposed to Drupal. Drupal is also more flexible when it comes to versioning and facilitating workflows, and it has great multilingual capabilities. Both projects have active communities with valuable resources for these communities.

Read more about Drupal vs. WordPress for content editors

Start of 2021 update

We continue with the latest edition of Pedro Cambra’s update to his Drupal Association journey. He begins with a couple of important updates - the upcoming DrupalCon North America and the nominations for this year’s Aaron Winborn Award - before continuing with a recap of the first board meeting he attended back in December.

As he states, Pedro was assigned to two committees: the Community and Governance committee, which will also deal with the voting eligibility issue which motivated Pedro to run, and the Finance committee. As the DA’s At-Large Director, he also met with the Community Working group, who have been less busy due to the lack of in-person events.

Read more about Pedro Cambra’s DA journey update

Nominations are now open for the 2021 Aaron Winborn Award

Since we already mentioned the open nominations for the Aaron Winborn Award in the above section, we’ll just continue with the related blog post by Michael Anello / ultimike.

The annual award, created to honor the memory of Drupal contributor Aaron Winborn, recognizes an individual for their contribution and help to the Drupal community. The recipient gets a scholarship as well as a paid DrupalCon ticket.

If you know someone in the community who has stood out in their commitment and help, now is your chance to let your voice be heard and nominate your candidate. Nominations are open until March 19th, so you still have over two weeks left.

Read more about 2021 Aaron Winborn Award nominations

How to Dynamically Render a Button or Link in Drupal or Gatsby

Next up, we have a post by Mediacurrent’s Mario Hernandez in which he shows how to create a dynamic button using a button or anchor element in Drupal or Gatsby. In Drupal, this is done in Twig by additionally specifying the button class with button--link for the element. 

In Gatsby, things get a little more complicated as you also have to account for Gatsby’s native component which drastically improves performance with internal links. So, to make this work, we need to check if there is an URL, and also if it is internal or external. Mario also includes a video tutorial in his post for anyone who prefers video.

Read more about creating dynamic buttons in Drupal and Gatsby

Commerce Core 2.24 improves merchant experience, BOGO promotions, and more

In the next post from last month that we’d like to highlight, Jonathan Sacksick of Centarro gives an update to the latest version of Commerce Core. Most notably, this version brings important optimizations to the merchant experience.

These include order management improvements, e.g. more detailed order activity logging and the addition of a checkout completion event. Other changes are improvements to promotions, namely, easier promotion management and a better experience with “Buy X, Get Y” types of offers.

In addition to order management improvements, Commerce Core 2.24 also features improvements in performance by adding different indexes to the entity types, which results in faster queries.

Read more about improvements in Commerce Core 2.24

Say Goodbye to Drupal 7 and Hello to Other Opportunities

Last but not least, we have a post by Kalamuna’s Anna Mykhailova which presents and goes through the options that Drupal 7 site owners have as this version’s end-of-life date approaches.

Anna compares three main options: migrating to WordPress, migrating to Backdrop and migrating to Drupal 8 (or then again 9, as Drupal 8’s EOL is in fact coming even sooner than that of Drupal 7).

In the final section of her post, she provides more information about the benefits of migrating to Drupal 8/9. Drupal 9 boasts a highly improved editor experience and a high commitment to accessibility, and it’s moving towards an API-first approach to satisfy any kind of integration need.

Learn more about your migration options for Drupal 7

Dandelion with seeds getting blown away by the wind

That’s it for this month’s recap of the most interesting recent Drupal-related content. Stay tuned for more! 

Mar 02 2021
Mar 02

DrupalCon North America 2021 has a new format, as described in our previous post, that enables you to learn about a specific strategic initiative or participate in more general conference programming. On Tuesday, April 13, we will focus on Decoupled Menus. Rachel Lawson caught up with the Initiative Team to find out more…

 

Mar 02 2021
Mar 02

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.

Mar 02 2021
Mar 02

The digital sphere keeps changing and evolving at the drop of a hat, technology being the truest representation of the requirements of the present world. Web development is a component of the web that manifests these changes on your screen, which explains why the Bureau of Labour Statistics  projects the demand for web development resources to grow by 8% from 2019 to 2029. But has this equation between the tangible world and the web world always been the same? When the web was formulated, did it mirror us the same way that it does now?

Let’s take a look at how web development has evolved over the years.

Evolution of Web Development

Tim Berners-Lee came up with the World Wide Web  in 1989. He was working at CERN at the time, and his invention was meant to serve various scientists in far off universities by facilitating data sharing among them. The idea was to provide the growing technology of data networks, hypertext and computers a common global, accessible platform. When the web materialised, the code for his web server was set up by Tim on a NeXT computer, the first web page comprising links to the WWW Project, a brief description of hypertext and the details one would need to create a web server.

This is a screenshot of the world wide web browser created by by Lee - 

Black and white web page screenshot of the world's first web page, a landmark in web developmentSource : CERN

As more web servers were created, the links to each of those were added to the first web page by Lee. There was no search engine, the web page consisted of information one might be on the lookout for like CERN Phonebook, guides for using CERN’s computers, etc. Web design was still a fetus concept at this time, HTML’s

Function, that arranged the text into rows and columns, being the closest kin. 

Two years later, in 1991, the first web server came online in the United States. As the web expanded, Lee urged developers from all over to join in and contribute to the web. This is how the journey of the web becoming a global phenomenon began. Design came on the front seat too, as in the same year, the first search engine, ALIWEB, used colour for the first time in the web pages - using yellow highlights to organise the search results. With time when more and more websites cropped up, web designing became an important thing along with web development.

Clearly, we have come a long way. To actually conceptualise how different the times have become, let’s look at what the web development trends looked like ten years ago.

Web development in the previous decade

The past decade succeeded the one with digital revolution, technology occupying the centre stage throughout the years. Like everything else around us, even web development underwent several additions and alterations. The gradual evolution of web development in the preceding decade can be summed up in the following points -  

  • In the 2010s, Ruby on Rails 3.0 was the talk of the town, being an awaited version of the popular Ruby on Rails framework. Javascript had just breathed a new life in node.js framework - an engine high in performance, speed, security and reliance. In addition to these, Microsoft Visual Studio was the chief editing tool used by developers in comparison to Atom and Sublime today.
  • With the first Iphone coming out in 2007, the market a few years later was lined with an array of devices. Smartphones, Ipads, Ebooks were all out for public use and that meant that the web was meant to be an adaptable, fluid thing now. The development and design sphere also underwent iterations with Android OS (Operating System) kicking in. With smartphones showing up left, right and centre, demand for web design grew as well. There were now a plethora of development and designing skills required to keep up with the transforming world.
  • With technology reaching new heights, Augmented Reality and Virtual Reality reached the common public’s houses, leaving it on the developers and designers to make it navigable and comprehensible. Later in the decade, even social media platforms like Instagram and Snapchat entered the augmented reality market with face filters and the likes. The common crowd began resonating with AR much more, and it started to transition into a commonplace service.
  • The Internet became more and more accessible with each passing day, and greater competition led to heightened focus on User Experience (UX). Websites wanted more animation, greater interaction with their user base. Softwares with in depth design tools starting emerging, with Adobe’s Creative Cloud setting off the dominoes to give rise to competitors like Serif’s Affinity Designer and Procreate.
  • In the 2010s, online communities were also quite a thing. People with similar interests could get on forums and chatting platforms to interact with each other. Some popular platforms during these times were StackOverFlow and Reddit.

Web development has evolved to a point where it has very little in common to its original parent now. In an attempt to culminate this timeline, here’s elaborating on what people and organisations believe will be the upcoming trends in web development.

Projected Trends in Web Development in 2021

Mobile-first development

According to Statista, mobile data traffic is expected to grow at an annual compound growth rate of 46% by 2022, which means that most of the generation has gradually shifted over to mobile devices like smartphones and tablets for non official usage. This digital transformation has both altered and expanded the avenues for web development. Now, adaptability to various devices is one of the most important factors to look out for, mobile-first development being primary. 

New architectural styles like micro frontends are also coming up where individual frontend applications are first built and later added into the codebase. 

JavaScript Frameworks

Use of Javascript frameworks will be on the rise, as these provide both animations and a bunch of other functions that make coding much simpler and compact for developers. Frameworks like React and Vue have new features like React Hooks and Typescript that offer Javascript in a more structured, object-oriented form. CSS libraries have also proved to be beneficial to jumpstart front-end development, and hence will supposedly stay trending in the upcoming year too. Javascript frameworks have also been used extensively for powering front ends in a headless CMS, which is another concept to have gained much clout in the previous years. 

With the growing popularity of Javascript, APIs and HTML5, another predicted trend is the rise of JAMstack websites. These websites make use of tools and content dynamically through APIs thus expanding and growing the user base and use case. These features solidify the hold of JAMstack websites in the developer crowd.

No code and low code

Web Standards are predicted to gain momentum not just with respect to tools like javascript frameworks but also in no code and low code space. A no code framework allows you to create content, for example, a design, without the need to code, translating to customisation without the need of expertise. This expands the user diaspora manifold, also opening up avenues for widespread awareness and adoption of web standards.

WebAssembly

Web Assembly (WASM) is a small binary format that creates an environment for web applications to run as a bytecode, thus enabling the application to run much faster inside the browser. It has taken the developer world by a storm, as in complex areas like gaming, music, streaming or video editing, WASM is especially useful. Rightfully so, Web Assembly is becoming increasingly popular by each passing day.

Browsing convenience

Convenience in browsing is a major competitive advantage that websites aim for, which is why Single Page Applications (SPA) and Progressive Web Applications (PWA) are gaining ground. A SPA is an application where all the data is relayed in a single web page, hence completely omitting out the time needed to load different URLs of various segments. Since a solid user base is accessing the web from mobile phones now, SPAs are even more relevant. Accelerated Mobile Pages are also being used specifically for bettering the speed and convenience on mobile pages. Along similar lines, a PWA is a ‘lighter’ version of a bigger app, that is targeted towards customers using limited internet or lower speed internet. With inclusivity being a primary concern, new technologies in the web development industry are all aiming for faster, convenient internet.

Google has taken browsing convenience into consideration too, with their ‘featured snippets’ section not requiring the user to click and visit on every link.

Serverless

Components of a server’s database are predicted to go increasingly virtual in the upcoming year, giving rise to the concept of serverless. In such a scenario, developers would be free to take on a managerial, decision maker role with a difference in the kind of tools they want to work with. A serverless architecture makes a model limitlessly scalable, and expansion to a global level can be visualised. AWS Lambda has shown immense potential in 2020 and is currently the market leader of serverless.

Increasing User Engagement

With user experience on the high tide, focus is on making the user feeling more engaged by using methods like sending push notifications to remind or notify the user about something important, Motion UI (User Interface) to sustain attention, and chatbots for an interactive and convenient session. Chatbots save the time and money usually spent on query resolution by human interaction and notifications can be pretty helpful both for the user and the enterprise - hence these methods are symbiotically beneficial. 

Ghost buttons are also being used increasingly in UX. These are placed for CTA (call to action) and are called so because they’re well blended with the design of the website, portraying their occurrence as largely natural. Their meant usage is primarily for increased interaction and sustaining the users’ attention.

Artificial Intelligence and Machine Learning

Artificial Intelligence (AI) and Machine Learning (ML) are omnipresent everywhere now - of course these have a part to play in web development as well. Gaining insights about user preferences and subsequent fine tuning is made much more convenient with the use of AI as all the field research is digitised and content is personalised. With components like content automation, fairly accurate customer behaviour analysis, self learning algorithms and enhanced customisation, AI is being used extensively in web development and is projected to stay at the top of the game in the upcoming year as well.

Internet of Things

Internet of Things (IoT) has best materialised in the form of Google Home and Alexa, enabling the connectivity of several devices to execute commands seamlessly. Statista’s research suggests that there will be a threefold increase in IoT devices in 2025 when compared to 2019. Even websites nowadays are opting for voice search optimisation, an IoT component - as you might notice that Amazon has placed Alexa within the Amazon shopping app as well. In the approaching times, devices will listen to their users’ commands and respond accordingly. 

Blockchain

Blockchain has been here for quite a while now and as per 2019 statistics, over 34 million Blockchain wallets were in use globally. In 2021, there is expected to be a wave of software and hardware infrastructure building, litigation and trade regulation for enabling blockchain use in a more comprehensive manner.

Expanding Open source

According to the State of the Octoverse 2020 report, the number of developers on GitHub will reach 100 million by 2025. Hence, we can expect significant growth in the number of open source projects and expansion of the existing ones in the upcoming years.

Being a part of the web development world and also a constantly evolving open source community, even Drupal has seen massive growth over the years and continues to innovate. It has found ways to tackle Covid-19 pandemic, remained recession-free and attracted the interests of large companies to invest.

CI/CD tools

All in all, serving will be made simple and developer convenient by tracing the roots and going back to the basics with the use of the new gen CI/CD (Continuous integration and Continuous Delivery) tooling. As the interfaces of the web get simpler with static web pages and applications,, the processes that are used to manifest it on the screen are getting more complex in the build to enable it.

Web development advancements in the Drupal World

Drupal with its constant updates has always aimed to stay in sync with the web development advancements happening around it. Being an open source software, plenty of user needs that are later materialised as technology are constantly brought up every now and then by the community, making the expansion of Drupal pretty organic and stable. Over the past few years, Drupal has come up with various new components. 

The consequent versions of Drupal 8  have tried to cater well to the community’s requirements and aspirations. Drupal’s out of the box feature enabled trials with experimental modules like the layout builder (for drag and drop management) and media library (for handling enormous amount of media) based on creating an interactive and engaging UI, which were later made into core components with version updates based on their performance and the needs of the user base.
 

[embedded content]

By the time Drupal was out with version 8.8, the workspaces module that was made to run on trial in the previous versions was embedded into the core. It made handling multiple workspaces much easier with features that allowed getting the content reviewed and deployed at one go. A native composer support was also built in, replacing previous third party dependencies. 
 

[embedded content]

In the latest updates, Drupal 9.0 and 9.1, Drupal has made an effort to make upgrading easier for everybody using the software, as approximately half of the pre existing modules do not need any changes. Access your complete guide on Drupal 9 here.
 

[embedded content]

The planned default front-end theme for upcoming Drupal 10 has been released as an experimental theme in Drupal 9.1, the underlying thought being incorporation of better ideas and bug resolution before the final release. This is what Olivero looks like - 

blue and white webpage displaying the theme OliveroSource : Drupal.org

Apart from Olivero, some major plans for Drupal 10 currently in the form of initiatives are  automated updates replacing the need to update your software components manually, an improved out of the box feature and introduction of javascript components. 
 

Light brown background with black flag and text talking about javascript componentsSource : Drupal.org

Coming to keeping up with the trends, Drupal has banked upon its flexibility to adapt to several technological advancements in the recent years.

Drupal works seamlessly with AI and ML. To facilitate ease of use, Drupal also has several modules that enable the use of AI in the website. Drupal’s compatibility with Machine Learning was well demonstrated by the demo of a proof-of-concept project shown to analyse user preferences and consequent fine tuning with due assistance from several APIs, in DrupalCon Baltimore, 2017.
 

[embedded content]

Drupal has noticed the trend of JavaScript Frameworks being extensively used in websites and has thus given a lot of emphasis to its decoupled architecture. Drupal’s open source community has worked a lot on various web services implementations like GraphQL, JSON:API and REST to enable efficient execution of headless architectures. This enables you to utilise a wide range of javaScript frameworks for frontend and build a perfect decoupled Drupal architecture.
 

[embedded content]

Drupal is mobile first and focuses greatly on responsiveness and UI.  In the past, Drupal has come with the mobile initiative for mobile first development and multiple device friendliness in an effort to draw community participation in the same. In addition to this, the Accelerated Mobile Page module enhances the overall UX of a website when accessed from a mobile device.,

To further the agenda, Drupal makes use of Progressive Web Apps to make browsing convenient and engaging for the user. These apps are usually installed in the background after the user has granted the permission to do so while browsing. PWAs do not need services from the play store and are installed from the browser itself. 

Drupal also is very handy with the native mobile application development. For instance, you can leverage Drupal as a content store and Flutter as your UI toolkit for building beautiful native mobile apps. More on Drupal’s provision for mobile apps here.

Drupal Community has also delved into Virtual Reality, Augmented reality and  Internet of things and has demonstrated Drupal’s stupendous capabilities to work well with such emerging technologies. For example, a while ago, a Drupal agency built an application prototype on Drupal 8 where users could consult a chatbot for grocery shopping, keeping certain health constraints in mind. The smartphone cameras were used to capture relevant product information, and the chatbots rendered necessary details to the customer. The concept, thus, used AR and AI together for better user convenience and experience.
 

[embedded content]

In 2018, organisers of DrupalCon Nashville used virtual postcards for admittance of the guests. From a VR editor built using Drupal as backend and React as frontend, to the javascript API WebVR demonstrating dynamic content using Drupal compliant JSON API, Drupal has come quite far experimenting with Virtual Reality.

virtual reality postcard with blue background, graphics of buildings, yellow text and the face of a manSource : Drupal.org

Drupal can also work with blockchain for synchronizing data of the websites of large corporations.

Headless Drupal can be effective to build advanced serverless architectures as well. For instance, you can seamlessly integrate Amazon CloudFront, [email protected], and headless Drupal that can deliver lowest latency and personalised experiences to users.

Conclusion

Trends in web development are always in constant evolution, demanding the rest of the market to keep up with them. While these are a few projected ideas, we might see some newer developments and technologies taking over in the near future.

Profile picture for user Akanksha Mehta

Akanksha is a writer more by personality than by profession. Believes in the unpopular opinion that Kindles are better than books. Also believes that even inanimate things have their own personalities - tea is all things bright and summery, coffee is all things cold and suave.

Line

Get in touch with Us

Tell us about your project or drop us a line. We'd love to hear from you


Accepting Guest Posts

A BIG SHOUT OUT to the bloggers and evangelists willing to impart their knowledge with their writing.

Share your experience and opinion with us and let the world be the stage to your ideas and work. Share your piece with us at [email protected]. We also welcome ideas in the planning phase.

What Do We Expect?

  1. The content should align with our interest in web development and open source technology. However we are open to topics from in and around the industry.
  2. An average blog post should be of around 1000 words, but this is of course subjective.
  3. We love crazy and colourful content. Feel free to link awesome pictures, infographics, stats, and all.
  4. We are also open to articles with cool tips and tricks, some How-to and step by step guide as well

Have a question?
Email us at [email protected]

Name

Email

Attach a file

choose file

One file only.
2 MB limit.
Allowed types: gif, jpg, png, bmp, eps, tif, pict, psd, txt, rtf, html, odf, pdf, doc, docx, ppt, pptx, xls, xlsx, xml, avi, mov, mp3, ogg, wav, bz2, dmg, gz, jar, rar, sit, svg, tar, zip.

Subscribe for more awesome emails and insightful updates

Mar 02 2021
Mar 02

Drupal considers menus, custom blocks and taxonomy terms as content (although it really isn’t going to be used as content). While importing or exporting these so-called content, you might run into issues such as getting only the configurations exported/imported but not the entire block (or menu or taxonomies). Or sometimes when you try to export a menu, the menu items are often missing. The Structure Sync module in Drupal 9 (and Drupal 8) comes in handy to import or export menus, taxonomy terms and custom blocks via the configuration. 

This helpful module reduces the burden of creating the same content in different places and allows for complete syncing between environments. With the Structure Sync module, you can also perform partial imports or exports to blend well with specific environments. The module lets you synchronize content using Drush commands and admin UI, both. Instead of importing and exporting content like menus and vocabularies manually, the Structure Sync module automates the process and saves a lot of time.

Structure Sync Module

Installing the Structure Sync Module

The Drupal 9 Structure Sync module is a contributed module that can be easily downloaded here or with the help of composer.

Using Composer:

  
composer require drupal/structure_sync

drush en structure_sync

Implementing Structure Sync with an example

Here, for the sake of the explaining the usage of this module, I will create two Drupal 9 instances.

  1. Drupal9.local  
  2. Techx.local

Let’s create a Custom block in the Drupal9.local instance. We will be exporting this block using the Structure Sync module.

Custom Block Local

Let’s create a custom block called “Copyrights”, which I will be adding to the footer block of my page layout.

Custom Block Footer

Here in the below screengrab, you can see the Copyrights block created and placed in the footer.

Screengrab

Now comes the interesting part of exporting the footer block that I’ve just created. Let me first push this custom block normally (without using the Structure Sync block) with the push command and then take a pull from the other instance (techx.local).

Git CommitGit Pull

And now when you check if the Copyrights custom block has been moved to the techx.local instance or not, what you get is a broken block. Here, the configuration got exported but not the block.

Structure Sync Custom

To avoid these ugly situations, we will now use the Structure sync module. Now that you have already installed the module, navigate to /admin/structure/structure-sync. Next click on the Custom blocks tab since we will be exporting a custom block.

Export Custom Block

Here, under Export, you will find a list of your custom blocks. Select the ones that you need to export and then click on the Export custom blocks button. Once you hit export, it becomes a part of the configuration. Now go to your configuration and type the command “drush cex” to export all configurations.

Drush Cex

Here in the above screengrab, you can see that structure_sync.data is now a part of your config management. To get the entire block, you will now need to import it from the “techx.local” instance. For that, first you need to run the command “drush cim”. This will import all the configurations into that instance.

Drush Cim

Now, in the techx.local instance, navigate to /admin/structure/structure-sync/custom-blocks and click on import custom blocks (safely).

Custom Block Import

You will now find the custom blocks from the “Drupal9.local” instance have been successfully imported into the “techx.local” instance. Notice that you have three options to import –

  1. Safely - this is a safe option as it imports only those custom blocks/taxonomies/menus in config that were not previously there.
  2. Full - this will import all the custom blocks/taxonomies/menus regardless if they have already existed before. It deletes any custom blocks/taxonomies/menus that are not in config.
  3. Force - Be careful while using this one. The force option will not check for any existing blocks, menus or taxonomies. It deletes all custom blocks/taxonomies/menus in the system and creates new ones.

For this example, I will be selecting the Import custom blocks (safe) option.

Importing Custom Blocks

On successfully importing the custom blocks, you will now be able to see the “Copyrights” custom block that has been completely imported in the techx.local instance.

Successfully Importing Custom Block

Drush Commands

If you are not a UI person, you can use these commands to perform successful export and import using the Structure sync module.

The available Drush commands are:

  • drush em (export menus)
  • drush im (import menus)
  • drush eb (export blocks)
  • drush ib (import blocks)
  • drush et (export taxonomy terms)
  • drush it (import taxonomy terms)
  • drush ea (export all)
  • drush ia (import all)

While importing blocks/menus/taxonomy using drush it prompts you these options:  

Import Style

Select the number mentioned in the boxes to make your choice.

We can use the same steps to export and import Menus and Taxonomy terms as well. One thing that you do need to keep in mind is that when you are exporting / importing menus, blocks or taxonomies, the entire content gets imported/exported. For example, you cannot selectively choose some of the menu items in that menu to be exported/imported. 

Mar 02 2021
Mar 02

Today, there are a bazillion options available for us to choose from, be it restaurants, clothing brands, gadgets or software. We, as users, may have difficulty in choosing the best, but never in finding the options. The options may confuse us, but we are going to be bombarded with them nonetheless. 

This brings me to the question of choosing the right option amongst the lot; how is it selected? For me, one of the most important criteria is usability, if I am not able to understand the usage of a product, I’d rather choose the next one. I am sure usability must be an important factor in your decision as well. 

Now, coming onto the product that I would be talking about today, Drupal. It is one of the most renowned open source content management systems out there. If you are reading this blog, you would definitely be aware of Drupal and all of its brilliance. Despite its eminence and versatility, it is still marred by a slightly unjustified rumour based on its use. Yes, as the title suggests, Drupal is often considered difficult to use and as a result many shy away from using it. 

Today, we will try to understand all the aspects of Drupal that could account for this claim and see if it is really true. Can a software that is meant to be free for anyone to use be so difficult that it become inaccessible to a major lot of its audience? What would be the point of it then? You think about that while I begin with the individual of Drupal’s so-called complexities. 

A Glimpse at Drupal’s Market Share 

Drupal is one of the leading CMSs in the market. Its ability to build powerful web experiences is the paramount reason for the same. So before I get into the nitty gritty details of Drupal's ease of use, I wanted to highlight its popularity. 

A line graph is showing Drupal usage statistics. Source: BuiltWithA table is showing the number of sites using Drupal at different points of time.Source: Drupal.org 

These numbers clearly show that Drupal is being used by a considerable number of sites worldwide with as many as a million Drupal sites operational at one time. This proves the answer to the question ‘Is Drupal in demand’ is going to be an affirmative.

A graph shows how many sites use Drupal in comparison with other CMSs.Source: W3TechThere is a list of the most high traffic sites using Drupal.Source: SimilarTech

Is Drupal still relevant? I’d say it is primarily because it isn’t just the numbers that make Drupal impressive, but its performance as well. The above images depicts Drupal’s competency at handling high-traffic sites. Drupal is a software for which millions of visitors aren't daunting as proven by its clientele.

Two pie charts are showing various changes in business and projects handles by it.Source: Drupal.org 

Moreover, in a survey to understand 2021’s business outlook, Drupal found out that the majority of its users felt that the new year would mark a growth in their prospects. With Drupal’s presence in a wide range of industries, the profitability of the CMS is impressive too. Sectors like education, charities and nonprofits, government, IT and even media have experienced more profits with Drupal as per the findings of Drupal Business Survey 2020

Drupal has proven its worth in every aspect, be it the number or the performance. The only thing that mars its impeccable record is that it is difficult to use, which isn’t technically the case. I’ll start answering the why with the next section.

Let’s move on to the programming language 

PHP or Hypertext Preprocessor is the programming language Drupal is built on. And PHP is a language that is often considered to be part of its complexity. I would say that it is not accurate. 

PHP is one of the best programming languages and has landed itself in the top 10 best languages to learn in 2021 by many surveys; Simplilearn and Hackr.io are two of these reports. With that kind of efficacy, the language cannot be considered to be problematic.  

Further proof of PHP’s popularity is in the number of websites and applications that use it, which isn’t a lowly figure. Look at the graph below for proof. 

A graph is showing the popularity of various programming languages.Source: W3techs

And these reports and figures aren’t antiquated, rather are as new as the year itself. So, PHP must be a worthwhile language, even if it isn’t the easiest of them all. 

However, PHP isn’t the only language Drupal works with. It has other dependencies as well. These include; 

Symfony; 
Twig; 
CKEditor; 
jQuery and jQuery UI. 

All of these only mean that Drupal is versatile, it isn’t a software with one side. Its multifaceted programming aspects only add to its appeal. It may seem like a lot at first, but it is necessary and doesn’t add up to Drupal’s difficulties, rather it eases the task of web development.

Moving on to the beginner’s conundrum 

When we start something, more often than not, we feel overwhelmed with it. Since we are not accustomed to the newness and it’s nuances, that is understandable. And Drupal ensures that it takes into consideration the novice developers. 

Until Drupal 8, beginners have reported difficulties with the installation and evaluation of Drupal. But after the release of the eighth version, things are more streamlined with the beginner’s needs and expertise. 

Drupal has also brought on new themes to make its experience more flattering for the beginners. For example:

Umami in Drupal 8.6 
Claro in Drupal 8.8 
And Olivero as an experiment in Drupal 9.1

All three themes have made Drupal more accessible, responsive and simple for its users, if we are to rely on user feedback. If I talk about Olivero specifically, it is the new beta experimental frontend theme, which is both modern and concise, and will take over Bartik as Drupal default theme. Its simplicity and professional look make it a perfect pair for beginners.  

With Drupal 9, there isn’t much that has changed. If you are comfortable with Drupal 8, you would be able to ease into the 9th version with a breeze. Although there are indeed differences between Drupal 8 and 9, these are not as stark and have made development not seem like a daunting task. 

And there is more. 

The Drupal Community, always helping out!

Drupal has a community of over 1 million people and 100,000+ stories to tell. From putting your skills at work to acquiring new skills to work, the Drupal community is known for upliftment of the software and the people using it. 

Any questions a beginner may have will be rightfully answered. You can easily find mentors, who are Drupal veterans and will gleefully help you become an expert like them. You can practise, practise and practise some more to get to the level you want to be at. Being part of the Drupal community, you will be able to hone your skills unlike anywhere else. 

You would not feel like an outsider, meet people with similar interests and similar geography as you at Drupal Groups. Since the best way to learn Drupal or anything really is to be immersed in it, the Drupal community is just the place for learning and mastering.

And, there is a constant endeavour to help underrepresented groups from the Drupal Community. Diversity, inclusion and equity is at the heart of the community.

So, there isn’t much room for the beginner’s conundrum at Drupal.

Then there are the notorious Drupal upgrades

Upgrades are necessary, but they don’t necessarily have to be an insurmountable task, which frankly speaking was the case for Drupal. Upgrading till Drupal 8 could not be described as being easy and quick. They required a lot of work and it was difficult, as there were major fundamental changes in the software. However, there was no other way to go about it. If you wanted the added functionality and support that new version would have, upgrading was the only choice.

However, that isn’t the case now and thank goodness for that. 

With the launch of Drupal 9, upgrades have become less notorious and more accommodating. The Drupal 9 switch has been deemed as the easiest upgrade of the decade and that is saying something. This is because unlike previous upgrades, Drupal 9 does not change the entire CMS on a fundamental level, there is no reinvention, but it is still unique. It is a new and improved version of Drupal 8, with deprecated APIs and updated dependencies.

Here is an illustration that will help you understand what I have been saying about fundamental changes.

Different train tracks are used to describe the difference between various Drupal versions.Source: Drupal.org 

With a four step process, you can make your Drupal 8 sites ready and waiting to be upgraded into Drupal 9, if that is difficult, I wonder which adjective would be appropriate for the previous ones. You can also directly upgrade from Drupal 7, if you wish to. Access this complete guide to Drupal 9 to know everything about Drupal 9 upgrade and migration.

Yes, Drupal upgrades were difficult, but they aren’t now. So, does this fact make this pointer for Drupal moot? I think it does.

Coming on to the workflow 

For content management systems, content is the integral. The way it is created and managed essentially decides whether the life of developers and content creators is going to be easy or not. If you are using Drupal correctly, I can assure you life is going to be a breeze.

I say this because in terms of editorial workflow, Drupal has a lot to offer and not much is complicated, with structured tools equipped to define the same.

Here is an overview of some of them.

Workspaces is one tool that helps in defining the staging environments, previewing content changes, all the while deploying these to a live environment.

Transitions is another tool that makes it easy to control content States, which have their own attributes. It allows state changes to become restricted by roles and permissions along with allowing users what content to be put through them.

Then, there is the eminent Views module. This is one unique to Drupal and its highlighting feature in terms of content. It gives the power of creating, managing and displaying lists of content to administrators and site designers. It is these lists that are called views, while what the portray in the form of blocks or pages is the display, it can be one or many.

A screenshot of Drupal's Views module can be seen.Source: Drupal.org 

One of Drupal’s most fulfilling editorial tools is the Layout Builder. It allows editors to create a publishing piece that is more than flexible to their needs. Any kind of layout is possible with this module.  
 
All of these support the editorial needs of the many content authors who will be populating a platform and the better part is they would not need the guidance of the developers every of the way or any at all.

The new-age of Headless CMSs 

As times change, the things that satiated our needs no longer do so. The same is true for CMSs. Looking back, it is evident that site builders and developers were quite satisfied with nestling an entire project inside one CMS, which would have acted as the provider of the frontend and the backend needs. However, with the advent of multitudinous frontend technologies, that satiation is no longer achievable. 

Hence, the new-age of CMSs emerged, which is essentially without a head, that is the presentation. Unlike the monolithic architecture, the headless approach separates the frontend development from the backend, making the developers happy by leveraging other technologies.

Drupal is a pro at the headless approach. Its monolithic architecture is also used by sites with simpler needs, however, it does give them the option to decouple or go headless, if they wanted to. 

  • You could choose to decouple partially, this would be the progressively decoupled approach
  • You could choose to go all the way, with the fully decoupled approach with JavaScript framework of your preference taking care of the frontend or you could choose static site generators as your frontend.

Be it React, Angular, VueGatsby or Metalsmith, Drupal can work with all of the major frontend technologies and make the project a success with it acting as the content repository.

Drupal’s work isn’t finished yet, it also provides robust APIs to streamline the connection between the presentation and the content layer. Built on the API-first approach, Drupal offers all of its application functions as APIs. This is done through its web services including RESTful web services and JSON:API along with API extensions with GraphQL

Drupal can create its own flexible and structured presentation layer, there isn’t a doubt in it. Regardless of this, when it is decoupled, it performs with equal efficiency to create API endpoints, which basically make room for content consumption and display in the headless application.

And this new-age of CMSs is gaining ground each day, and Drupal, with its own web services at play, is making the transition quite easy.

Fusion with Emerging technologies

I mentioned in the previous section that with time things change and so does their to us. Today, technology is a major part of that change. I remember a time not long ago, when a single camera setup on our smartphones was enough for us. Now, my phone has three, still I envy my husband, whose smartphone has a quad camera setup. Who could have imagined that? 

The same is true for CMSs, when we look at them, we don’t just want a simple site building tool. We want innovations, enhancements and upgrades that will stun us in the most positive way. And CMSs have started providing that. 

Taking Drupal into focus, it has had a revolutionary impact on the market by integrating itself with futuristic technologies.

Drupal has proven to be both reliable and reaching in its fusion with emerging technologies and that has led to an improved digital experience, both for the developers and the users. Read our blog Unleashing macro trends in technology with Drupal to find more about this topic.

It all comes down to continuous improvement in focus

A horizontal bar graph shows the various reasons people opted for Drupal.Reasons for people choosing Drupal. Source: Drupal Business Survey 2020 

The most common reason for people using Drupal is because they have already used it and because of that familiarity, it becomes easy to use. However, ease of use is not amongst the top reasons for taking up Drupal. 

Probably that is why, when Drupal 10’s 2022 release was announced during DrupalCon Global in 2020 by Dries Buytaert, its ease-of-use was addressed as one of the most impactful aspects. And Drupal 10’s development is proof of that.

In Dries speech, he emphasised the ease of use quite a lot. He talked about five crucial steps that were taken to simplify Drupal even more. 

  • Improving third party components even after their EOL to enhance Drupal 10 readiness; 
  • Improving Drupal’s ease-of-use further, Drupal 9 was a great step in this direction;
  • Improving frontend themes; 
  • Improving updates by making them automates, this would work best for security upgrades; 
  • Improving on Drupal technology by implementing JavaScript components in the UI. 

For all of these, the efforts are being made by the entire community. 

Yes, it would be faster, better and more innovative, but it would not be difficult. Like I mentioned before in this blog, we should not expect many overhauls to the software that would make our eyes pop and heads hurt. 

There are going to be improvements, there would at least by four versions of Drupal 9 before the arrival of 10. However, this continuity in advancements does not have to affect the way Drupal is seen by its users. It needn’t be the forbidden fruit that everybody wants to taste, but scared to do so. Drupal is an open source software, it is meant for everyone and that means it isn't too difficult. I wouldn’t deny that wasn’t complex at one point, but that point of time is long gone. What lies in the future is a version of Drupal that is as easy to use for a beginner as it is for an expert developer.

The Bottom Line 

I’d like to answer the question ‘How hard is it to use Drupal?’ with a direct from one of our developers.

“Being from a technical background and having PHP development experience before diving into Drupal gives me an upper edge during the journey. Being into Drupal development for around 3 years, I can say it’s all about learning the architecture of Drupal (such as entities, configs and forms) and how the code executes (sequence of functions calls). The earlier you understand these, the easier the Drupal journey would be for you and it would help you to debug faster and select the best approach for the requirements. Plus having a great community and open contribution platform helps you learn better and faster. Drupal is like a Lego, you can build it to your liking but, at a certain point of customisation, it is like a box with thousands of pieces and not all of them fit together.” - Anmol Goel, Senior Software developer at OpenSense Labs

For Anmol, Drupal experience made the journey easier. It requires you to get a hang of things, once you do that, there isn’t much that you’d find difficult, and your Drupal development experience would be a walk in the park; at least most of the time. And like he put it so eloquently, who could find a game of Lego difficult? All it is about is building something new every time, be it today or tomorrow and that’s Drupal for you.

Mar 01 2021
Mar 01

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.

Mar 01 2021
Mar 01

This is part 3 of the blog. Here we will continue our discussions on the other features and changes in PHP 8.

Stringable interface

The new Stringable interface which is introduced in PHP 8 is now automatically added to all the classes which implement the __toString method.

`PhpToken` Tokenizer class

The new PhpToken class which is introduced in PHP 8, provides an object-oriented approach to tokenizer results.

The return value is an array of PhpToken objects.

abstract methods

Previously, PHP would not allow us to declare a private abstract function in any PHP version. That has now changed with PHP 8. It allows us to declare a method as abstract even if a method with the same name exists in the parent class.

For example:

class ParentFoo {
    private function demo() {}
}

abstract class ChildFoo extends ParentFoo{
    abstract protected function demo();
}

Before PHP 8, the above would produce the following error:

Fatal error: Cannot make non-abstract method Foo::test() abstract in class ChildFoo in ... on line ...

Variable syntax tweaks

From the RFC: "the Uniform Variable Syntax RFC resolved several inconsistencies in PHP's variable syntax. This RFC intends to address a small handful of cases that were overlooked."

ext-json is now always available

Previously compiling PHP without the JSON extension enabled was allowed but that is not the case anymore. This is a healthy change in PHP 8. 

If the composer.json file already has PHP 8 in the required parameter then the ext-JSON is no longer required to be manually added.

{
   "require": {  
       "php": "^8.0",  
-       "ext-json": "*",  
   }
 }

Concatenation takes precedence

A line of code such as this:

echo "sum: " . $a + $b;

Would be previously interpreted like this:

echo ("sum: " . $a) + $b;

And in PHP 8, it is interpreted like this:

echo "sum: " . ($a + $b);

Reliable numeric strings

From the RFC, “all strings which currently emit the E_NOTICE “A non-well formed numeric value encountered” will be reclassified into the E_WARNING “A non-numeric value encountered” except if the leading-numeric string contained only trailing whitespace. And the various cases which currently emit an E_WARNING will be promoted to TypeErrors.

Reliable string to number comparisons

From the RFC, “0 == "foobar" returns true. This RFC proposes to make non-strict comparisons more useful and less error-prone, by using a number comparison only if the string is numeric. Otherwise, the number is converted into a string, and a string comparison is performed.

Mar 01 2021
Mar 01

This is part 2 of the blog. Here we will discuss the other features and changes in PHP 8.

Mixed type

The mixed type was already being widely used in DocBlock comments. In PHP, a missing type can be due to a lot of reasons:

  • A function returning null or nothing.
  • Expecting one of several types.
  • Expecting a type that can’t be typed hinted in PHPbackward-incompatible.

mixed itself means one of the following types:

  • array
  • boolean
  • callable
  • int
  • float
  • null
  • object
  • resource
  • string


mixed can also be used as a parameter or property and not just as a return type. Since mixed already includes null so it is not allowed to make it nullable. On doing so, the following error will occur:

// Fatal error: Mixed types cannot be nullable, null is already part of the mixed type.
function myFunction(): ?mixed {}

mixed type can be used to indicate that it accepts any type, or can return any type. In a class/interface context.

function myFunction(mixed $var): void {
    var_dump($var);
}

Static return type

static is a new return type in PHP 8. The static return type declares an object of the called class will be returned. 

class Foo {

    public static function myFunction(): static {

        return new static();

    }

}

Error handling improvements

Internal functions now throw exceptions on type errors or value errors. This is a backward-incompatible change.

throw in expressions

It was not possible to throw exceptions from an expression (e.g. a ternary statement) before PHP 8. It is now possible to do so in PHP 8.

$var = isset($_GET['value'])
    ? $_GET['value']
    : throw new \InvalidArgumentException('value not set');

catch exceptions only by their type

We can catch exceptions by their type, without capturing the exception object.

try {}
catch(TypeError) {
  // Did not catch the $exception object
}

@ Error, Suppression operator does not silent fatal errors

PHP 8.0 changes the behavior of @ error suppression operator. Previously, it used to silence the fatal errors, which would lead to a script failure, due to the @ operator not preventing fatal errors, but rather hiding the error message display.

Default error reporting is set to E_ALL

The default configuration in PHP 8.0 is to show all error messages. It was configured to hide deprecation and strict warnings in older versions.

Default PDO error mode

From the RFC: The current default error mode for PDO is silent. This means that when an SQL error occurs, no errors or warnings may be emitted and no exceptions are thrown unless the developer implements their explicit error handling.


In PHP 8, the default error will change to PDO::ERRMODE_EXCEPTION.

Weak maps

A WeakMap holds references to objects, which does not prevent those objects from being garbage collected.

WeakMap and SplObjectStorage are quite similar. They both use objects as the key and allow arbitrary values to be stored. However, a WeakMap, unlike SplObjectStorage, does not prevent the object from being garbage collected.

Example of WeakMap:

class Myclass
{
    private WeakMap $cache;
 
    public function getAvalueFromCache(object $obj): object
    {
        return $this->cache[$obj]
           ??= $this->computeResult($obj);
    }
}

`::class` magic constant is now allowed on objects

In PHP, the magic constant ::class helps in resolving a class name to its fully-qualified class name. When this magic constant is used with a class name, use and use as statements will be resolved or the present namespace will be prefixed which would make it a fully-qualified class name.

For example:

namespace MyApp\DemoApp;

use MyFoo\Bar;
use MyBar\Baz as BBaz;

class MyDemo {}

// `use` statement is resolved:
echo Bar::class; // "MyFoo\Bar"

// `use` X `as` Y is resolved:
echo BBaz::class; // "MyBar\Baz"

// Current namespace is resolved:
echo Demo::class; // "MyApp\DemoApp\MyDemo"

Before PHP 8.0, the usage of the magic constant ::class was not allowed on objects and it would throw a fatal error like the one below:

$object = new Foo\Bar();
echo $object::class;

// Fatal error: Cannot use ::class with dynamic class name.
Now since it is allowed, we can do this and it would be correctly resolved at run time:

$object = new Foo\Bar();
echo $object::class;

// PHP 8.0+:
// "Foo\Bar"

Trailing commas now allowed in parameter lists and closure `use` lists

PHP 8 is also quite forgiving and allows us to leave trailing commas in parameter lists and closure use lists.

public myfunction(
    string $paramA,
    int $paramB,
    Foo $myobject,
) {
    // …
}

DateTime objects can be created from the interface

There is now a generalised way to convert DateTime and DateTimeImmutable objects to each other by adding DateTime::createFromInterface() and DatetimeImmutable::createFromInterface().

DateTime::createFromInterface(DateTimeInterface $other);

DateTimeImmutable::createFromInterface(DateTimeInterface $other);

Read part 3 of the blog here.

Mar 01 2021
Mar 01

Open-source has the power to change the world, but, as we depend on it for democratic innovation, open-source also depends on us to thrive. At Axelerant, we know and own this; hence we’re constantly engaging in different open web communities, including Drupal’s.

Why are we writing this? First of all, we are always keen to shine a light on our team members because our people-first culture makes Axelerant succeed. Second, in a knowledge sharing spirit, we are willing to put out what has worked for us (and what we struggle with) regarding contributing and our community involvement.

We are celebrating Drupal’s 20th Anniversary, and we are proud of being part of that history for over a decade. What better way to celebrate than recognizing and sharing the stories of the people involved, the makers that keep the ball rolling.  

Hussain Aabbas

Hussain Abbas
Director of Drupal Services

"Celebrating our people and the community has been among our values since the beginning. Drupal’s 20th anniversary is one of those occasions where both of these values come together in demonstrating Axelerant’s commitment to be a productive part of the amazing Drupal community through its team."

Here, we want to share a few stories from team members who recently contributed and inspired us with their Drupal journey.

Lessons learned in our Monthly Contribution Meetups

We started Monthly Contribution Meetups in 2019 to foster a culture of mentoring and giving back. Our goal is to get more people contributing to Drupal consistently and provide the tools to those who want to do it for the first time. These meetings are an excellent space to seek out support, share findings, learn, and bring the opportunity to know other team members, their Drupal journeys, and motivations. From these sharings, we continue to grasp the familiar obstacles people encounter when contributing, ideas on how to surpass them, and the benefits that come with getting involved. 

screenshot of Axelerant team's zoom meeting

November’s monthly contribution meetup

Thirst for learning overcomes time constraints

Hansa-Pandit

Hansa Pandit
Frontend Engineer - L2

“I was first introduced to Olivero reading about it on different blogs. That caught my eye. I read the documentation, got my set up ready, jumped right into a coding sprint, and assigned myself an issue. I wanted to work on a feature, so when the theme went into the core, I would be able to say: that is the part I built.”

Hansa has been on Drupal.org for over two years, and besides other contributions, she’s been actively involved with the Olivero theme initiative

Time management was a big challenge for Hansa, especially since she gave Olivero the same priority level as other work-related projects. But the logic was clear; she knew that if she was investing her time towards contribution, she needed to benefit from it by learning.

And she declares the experience made her technically stronger, “I learned a lot of new skills. Other projects I worked on supported specific client's needs. Still, for Olivero, we had to make sure we were theming every single module supported by Drupal while making sure we met all the accessibility standards.”

And Olivero is now in core, we are proud of Hansa, and we celebrate her and everyone involved in this achievement.  

Find the right initiative, and don’t do it for the credit

mohit-aghera

Mohit Aghera 
PHP/Drupal Architect - L1

It is important to focus on learning and exploring instead of doing it for the credits: “I decided to focus on this initiative because I was interested in learning about writing test cases for Drupal Core. It was a quick way to get introduced to this, and also a great opportunity to explore almost every feature of the core, instead of focusing on a specific module.”

Mohit is one of our most experienced Drupal engineers and contributors; hence he’s continuously mentoring the team. In our last meetup, he explained his motivations and experience with the Bug Smash Initiative; “it’s a great initiative to devote energy to, because it is well managed. Maintainers do an excellent job triaging issues,” he argued. We often hear that not knowing where to start or feeling overwhelmed by the issue queue translates into demotivation within weeks. Counting on careful planning and mentoring makes life easier for everyone, which is why finding the right initiative becomes essential.  

A second factor to consider while contributing is the right motivation. We always remind ourselves of the opportunities that come with contributing for personal branding, sharing your work, showcasing a visible portfolio, and “ultimately if you want to learn Drupal Core, contributing is the best way to do it” he insists. 

Clear expectations help first-time contributors

Abhay-Saraf

Abhay Saraf
PHP/Drupal Engineer - L2

When asked what could be done differently to motivate others to join these sprints, he told us, “being clear about expectations and providing resources that display a step by step before the event would make the experience less intimidating.”

As founding members of the Drupal India Association, we also look to align our mentoring and contribution efforts with India’s larger Drupal community. Organizing and hosting monthly contribution weekends is one way to boost a sustainable contribution culture, and Abhay recently joined this initiative for the first time. From his experience, we confirmed that meeting folks, running into smiling faces, and having the space to give back without the pressure of getting lost or making a mistake is fundamental to onboard newcomers. “I had a good experience because I already had a list of prioritized issues. I could work with a free mind since I knew that I'd get the guidance needed if I had any doubts. Also, I liked the flexibility of this event, it goes on for a day, you can dedicate any amount of time you can, even if it is just an hour, it would still be worthwhile,” he shared.

Contribution = Recognition = More contribution

Gaurav-Kapoor

Gaurav Kapoor 
PHP/Drupal Engineer - L2

Gaurav's efforts were rewarded with a scholarship to attend DrupalCon Amsterdam 2019. Through this contribution journey, he gained vast Drupal knowledge, “now I focus on mentoring and sharing knowledge, so others can also leverage all you can gain from contributing,” he says. 

Gaurav’s Drupal journey started right after college when he decided to leverage his spare time by joining a two-person startup. After learning Drupal, he soon realized that contributing to the community would build the company’s reputation as trusted experts, and that was the initial driver. Eventually, what sparked a community spirit was getting noticed and recognized. He’s been ranked among the top 30 contributors and recognized in Dries’post about Who sponsors Drupal development? for the past three years.

Events and the power of networking

kunal-kursija.jpg

Kunal Kursija
PHP/Drupal Engineer - L3

Kunal has the habit of surfing through different channels that list upcoming events (DrupicalDrupal.orgDrupal Slack), so when we found out about BADCamp 2020’s call for papers, he decided to go for it. A two-way process started, “I began to review everything I had learned recently or topics I wanted to learn about”, from there Kunal came up with a list of topics and submitted them.

 

Speaking at events has many benefits, especially to those interested in being seen as an authority in their fields. Presenting sessions nourishes the community with knowledge and best practices and builds the speaker’s reputation and network. That was certainly the case for Kunal. “I first heard about BADCamp while attending DrupalCamp London. Someone I met there told me BADCamp is one of the best Drupal events. That image struck me and has stayed with me since then.” 

 “Of course, it was exciting to learn my session had been selected. I was disappointed I couldn’t attend the event in person. However, I enjoyed getting introduced to other BADCamp speakers, and it was great to participate in such a big and important event.”

To many more years of Drupal

We recognize our monthly meetups serve the purpose of keeping an ongoing conversation around contributions, inspire and support team members and promote those who actively get involved. Our team works with a contribution-first approach, and this practice grants us a place at the top of the ranking of organizations supporting Drupal. And yet, there's more we need to do to build up a sustainable contributing culture. We still find that most people that haven't contributed before can judge the onboarding process as too arduous, and time constraints follow soon after. Even with mentorship support available, the steep learning curve poses a hurdle to conquer.

We are continually discussing and exploring initiatives to encourage contribution, from creating a role for a full-time contributor to gamification aspects around tracking contributions or mentoring team members on the bench between projects. 

Today we introduced a selected few stories, evidence that sustains again and again that the key ingredient and the strength of this 20-year-old open-source project are people.

We are excited to be part of this celebration and would love to hear about your contribution strategies and ideas. What’s your preferred way to give back to Drupal?

Don’t forget to join the celebration on social media!

P.S. See you at the Global Contribution Weekend happening 29-31 January 2021.

Mar 01 2021
Mar 01

Traditionally, Drupal web applications are built using various entities like Content types, blocks, components using Layout Builder, and then the product is made available to the end-user on the front-end using HTML, CSS and JavaScript. The team usually starts with backend stories related to building various content types, related roles, and permissions, and then the frontend team picks it up to make the site more usable and accessible as per the design requirements. 

Of course, with component libraries like Storybook, Fractal, PatternLab, and with designs in place, the frontend team can start implementing them as component libraries in parallel, which are later integrated with Drupal. 

In this blog, we will be talking about testing the application and the following topics:
 

01. Automated Testing in Drupal

02. Applitools and Drupal

03. Interpreting the automated test execution results

04. Other tools in the market

05. The Applitools Advantage

06. What next?

Automated Testing in Drupal

BehatPHPUnitDrupal Test Traits (DTT), and NightwatchJS are the most widely used tools for automating tests with Drupal. There are several reasons why these tools are popular within the Drupal community, such as all these tools are PHP-based frameworks (apart from NightwatchJS), offer ready to use Drupal extensions/plugins and have huge community support. With these tools, one can automate unit, integration, and acceptance level tests.

But what about automating the visual tests? That’s the missing tip of the pyramid, which we will address through this blog post. 

We have used Cypress to automate the browser and Applitools for AI-based visual validation. Our reasons for using Cypress over other tools are many, including the following:

  1. One can quickly get started with writing actual tests with Cypress as compared to Selenium.
  2. Cypress enables fast-paced test execution.
  3. Our POC with Cypress + Drupal proved that testing the Drupal side of things can also be achieved with Cypress. 
  4. Cypress offers harmonious integration with Applitools. Having said that, please note that Applitools does have SDKs for Selenium PHP and NightwatchJS and many more just in case you have your existing automation functional suites written using any of the other testing frameworks.
  5. Since Cypress is a JS-based framework, developers can also contribute to writing automated tests.

The site to demonstrate the concept is called Drupal Umami, the major advantage being that the site is already constructed and we can directly focus on writing automated visual tests without having to worry about creating these pages.

NOTE: If you are completely new to the concept of automated visual validation testing, then please refer to the course “Automated Visual Testing: A Fast Path To Test Automation Success" on Test Automation University from Angie Jones.
 

Applitools and Drupal

Applitools provides an SDK for Cypress, which makes it very easy for us to integrate automated visual validation tests in the same functional test suite created using Cypress. The steps to configure Applitools with Cypress are straightforward and you can refer to their official documentation for more details. Let’s take a look at the test written for the Homepage. The gist is shown below:

The test in the above example launches the Homepage and verifies the UI using the “checkWindow()” command. The checkWindow() command takes in the following parameters:

  1. tag: The name of the test.
  2. target: Shall the window be targeted or a particular element?
  3. fully: Identify the scope, whether it is the current viewport or the entire window. 

That’s it! And you are ready to execute the first automated visual test. So, let’s execute it using the command `npx cypress run`, assuming that the baseline image was captured correctly on the first run.

Here’s a small screencast for the same.


Interpreting the automated test execution results

Now that the tests have been executed let’s look at the execution results, which brings us to the Applitools dashboard. Here’s the passed test result. 

test results passed

The tests passing is a good thing. However, that’s not the primary reason for having automated tests. You want the tests to correctly detect the discrepancies as close as the point of introduction. For the purpose of this demo, we have intentionally introduced a couple of CSS bugs on the Homepage through Cypress’s invoke command. Once the script launches the Homepage, CSS changes are made at run-time in the browser and then the screenshots are captured as below:

Let’s re-execute our test to see how the tool catches these bugs. The tool has correctly highlighted the three errors (in pink color) below that we introduced on purpose:

  1. “Search bar” in the header has shifted from its original position.
  2. The font color for the “View recipe” button on the banner has changed.
  3. “Find out more” link in the footer.
      reference image
test run image

We confirm that these indeed are bugs, and reject the image marking the test as failed and then report bugs in Jira directly from Applitools. Additionally, the root cause analysis feature from Applitools helps us quickly identify the visual (UI) issues, in this case, caused by CSS changes, as shown in the images below: 

RGB bug margin bug

Until now, it was only about one browser. However, if we really want to leverage the automated tests written for validating the UI, then the true benefit lies in having the ability to execute these tests across several browsers, Operating systems, and devices. Verifying that the UI looks correct on one browser/device doesn’t guarantee that it would look exactly the same on all other browsers/devices because the rendering of the UI might be different on other browsers/devices. 
 

Cross-browser/device/OS testing using the Ultrafast Test Cloud

Now that we have seen and understood how automated visual testing is done with one browser, let’s discuss some points that need to be accounted for to scale up your automated testing:

  1. Configure your suite to execute automated tests across several browsers and devices. However, not only the test authoring time increases but also creates a dependency on the technical staff as the logic for tests to run all tests across several browsers and devices need to be coded.
  2. Linear automated test execution increases execution time, thereby resulting in larger build times and delaying the feedback of the application to the entire team. 
  3. Maintain an in-house grid for parallel execution or purchase additional subscriptions provided by Cloud-based solutions for parallel execution of automated tests.

This brings us to discussing the Applitools Ultrafast Test Cloud, which inherently takes care of the above points.

By using Applitools Ultrafast Test Cloud, you would be able to execute the automated visual validation tests across several browsers, operating systems, and devices of your choice and at lightning speed as although the test runs once on, say Chrome (assuming Chromedriver is configured in the tests), the capturing of the pages occurs in parallel, in the background for all the configured browsers and viewports.

So, let’s write some more tests for Articles and Recipes landing and listing pages on the site. Let us also execute these tests in parallel on several browsers/devices as configured below using Applitools Ultrafast grid solution:


Here are the Ultrafast Grid Test Results across several browsers and devices. 

test results

To be precise, here are the details:

  1. Number of browsers and devices = 7
  2. Total number of functional tests = 6
  3. Total number of visual tests = 7*6 = 42
  4. Time taken to complete execution on Ultrafast grid - 5 minutes 2 seconds

Execute once and see the results on so many browsers and devices. Now, that’s what I call truly automating your visual tests.

Also, notice that using the Applitools Batch feature, we have logically grouped the Test Results to make it extremely readable. 
 

Other tools in the market

There are many other Open Source tools like BackstopJSShoovGeminiVisual regression service for WebdriverIO to name only a few, but none of the tools has the Applitools advantage and we will look at a few of many reasons in the coming section.
 

The Applitools Advantage

  1. The AI-driven image comparison algorithm is incredibly accurate and avoids false positives, which otherwise occurs in a pixel-to-pixel based comparison. The amount of time it would take to troubleshoot false positives, especially on full-page screenshots, would be time and cost-prohibitive. Pixel-based is ok for verifying small components across a short period of time; otherwise, it breaks down.
  2. Seamless integration with your existing functional automation suite through several Web, mobile, screenshot, desktop, and codeless SDKs available for testing and automation frameworks like Cypress, Selenium, Nightwatch, WebdriverIO, Appium and also languages like PHP, Java, Javascript, C#, Python only to name a few.
  3. With the help of Ultrafast Test Cloud, your entire web application can be tested for visual accuracy at a fast speed (as the tests run only once whereas the visual rendering validations happen in parallel on several browsers and devices in the background) with guaranteed reliability and security.
  4. Applitools also provides out of the box integration with the Storybook component library for React, Vue and Angular.
  5. Learn more about the following Applitools Eyes integrations on their site:
    1. Integration with GitHub
    2. Integration with Microsoft Azure
    3. Integration with GitLab
    4. Integration with BitBucket
    5. Integration with Jira
    6. Integration with Email and Slack for notifications
       

What next?

Signup for a free account with Applitools and feel free to clone this repository to try it out on your own. Integrate automated visual validation tests in your project that will help you build and release visually perfect web applications or websites confidently at a faster rate.

Want to know more about automated testing? Learn how early Automated Testing design helped us in upgrading a Higher Education platform. The OpenScholar's product with its own complete layer was built above Drupal and needed the customizations to be thoroughly tested. The objective was not just to verify functionality accurately but also to achieve faster feedback at all levels of the implementation phase.

Mar 01 2021
Mar 01

In the last article, we discussed the changes required to get Drupal 9.1 running on PHP 8. At that time, we got the Drupal 9.1 dev release working on PHP 8.0.0 RC4 with a few patches. Since then, a lot has changed with many of those patches being committed and Drupal 9.2 dev open for development. But we’ll talk about all of that at a later date. Today, let’s look at getting some of the common PHP extensions and configure it to run with Drupal.

We left off at a point where we have plain Drupal 9.1 running on a plain PHP 8 RC4 setup. Drupal doesn’t require any extensions, not in PHP core, and that means we only had to enable extensions like gd, MySQL, and others to have Drupal 9.1 running. With that, we were able to install Umami and use the site without any problems at all. To enable those extensions, we only needed our docker-php-ext-enable script, which is part of the PHP base Docker imageSee the Dockerfile in the reference repository for the source code (lines 41-52). Installing other extensions that are not part of the PHP core is not quite that simple. Think of it this way: if a module is present in Drupal core, you can install it right after downloading Drupal. But if it is a contrib module, you have to download and install it separately. It’s the same thing with PHP extensions.

Why test with extensions?

Just as you probably wouldn’t have a Drupal site with at least one contrib module, you probably wouldn’t have a PHP installation without a few of the common extensions. Drupal core utilizes some of these extensions when they are available (such as APCu and YAML), which yields better performance. This means that even though the extensions are not technically required, you would most likely have them.

I started with extensions, which I almost always install on sites I work. These are APCu, YAML, and Redis. Drupal core doesn’t use Redis, but I almost always install the Redis module for caching, which requires this module. It made sense to test if it worked on PHP 8 (both the module and the extension). As for the other two extensions, Drupal core uses APCu and YAML extensions for better performance if they are available. Again, it is a good idea to test Drupal with these extensions installed.

Installing extensions

Typically, we would use PECL to install any extensions we needed. PECL is a repository for PHP extensions, very much like a composer for PHP packages. With PECL, we would just need to run a command such as pecl install Redis to install the extension. You can see this being used in lines 53-58 in the Dockerfile.

pecl install apcu redis yaml

This is not as simple with PHP 8. PHP 7.4 removed default support for PECL and the official Docker image removed the command in PHP 8 images (it applied an explicit option to keep it for PHP 7.4).

Alternative tool to build extensions

I found another tool called pickle, which was intended to replace PECL but became dormant as well. I noticed some activity on the project, including a relatively recent release, and I tried that first.

The tool worked very well for APCu and Redis extensions. However, for YAML, it failed because it could not parse YAML's beta version number (2.2.0b2). I found that this was fixed in a recent commit but that would have meant that I would need to build pickle in my Docker image rather than just downloading and using it. I was not looking to go that route.

Building the extension manually

This left me with only one option: building the extensions myself. Fortunately, this turned out to be much simpler than I thought. You can see the steps required for each extension in lines 54-67 in the reference repository’s Dockerfile. For each extension, there are essentially just two steps:

  1. Clone their source code of the extension
  2. Run phpize, make, and make install to build the extension

We need the PHP source available to use the above tools and this is easily achieved using a helper script in the Docker image. You can see it being used in line 39 in the reference repository. Once we build the extensions, we clean up the PHP source to keep our Docker image size small. This is what the complete step looks like:

docker-php-source extract;
git clone https://github.com/krakjoe/apcu.git; cd apcu;
phpize; make; make install; cd ..;
# ... Install other extensions same way
docker-php-source delete;

Enabling extensions

Now that the extensions are installed, we can use the same script (docker-php-ext-enable) as earlier to enable the extensions. In our reference repository, you can see this done on lines 69-72. Thanks to these helper scripts, we now have our extensions enabled and configured for both the PHP module (for Apache) and the CLI. This can be verified by running the following command:

php -m

The above command will list all the enabled PHP extensions (internal ones as well) and you should be able to find apcu, redis, and yaml in the list.

Bringing it together

Now, we need to make sure that Drupal works with the above extensions. Since APCu and YAML extensions are used by the core, we should see any issues immediately. We can even verify that Redis is connected and APCu is being used by looking at the status report page, as shown in the following screenshot. 

Tweet from Hussainweb

For Redis, we need to install the Drupal module as well as the Drupal core doesn’t use it directly. We will discuss installing modules in another post.

PHP 8 remains an important milestone in PHP history, not just because of cool new features but also because it established a trusted release cycle promised at the release of PHP 7. A predictable release cycle helps build trust and also consistently brings new features and innovation to the product. We saw that with Drupal 8’s regular six-monthly release cycle and we will see that with PHP as well.

Mar 01 2021
Mar 01

I joined Axelerant with the thrilling purpose of cultivating and fostering their participation and contribution to the Drupal community. And I did, with a defying obstacle: I don’t code and until then I had only heard a few things about Drupal.

As soon as I began this journey, I verified that Drupal (the technology) is completely interlinked with the community that sustains it. To understand one you must know the other. Though you can get a kick out of reading about the advantages of headless Drupal or the improvements that will come with the release of D10, it is obvious that what holds the project together is the willingness of its members to advance, connect, and share knowledge. Hence, the motto “Come for the code, stay for the community.”

Everybody has their first time

In every community, face-to-face encounters are essential to solidify our personal and professional bonds. They are mandatory to get the true sense of a community. Therefore, as soon as I embarked on this endeavor I knew I needed to add an event experience to my Drupal immersion.

Yet, the global crisis unleashed by the COVID-19 pandemic is forbidding us all to attend large and exciting live events. Was I supposed to meet this need online, while surfing a context of widespread virtual fatigue? The truth is that, although we are all a little tired of facing our screens, technology has proven its capability of bringing us close, even eliminating borders. As a result, I decided to sign up for free for my first Drupal Camp, and I was lucky to have debuted with my attendance at the Bay Area Drupal Camp, or BADCamp, which describes itself as the world’s raddest Drupal camp.

Pierina at BAD Camp 2020

Travelling from Buenos Aires to the world’s raddest Drupal camp

The Bay Area Drupal Camp is “An annual celebration of open-source software normally based in Berkeley, California” that has already trained over 3,000 Drupalers. This year, for their very first time, they went the extra mile and went fully virtual from October 14th to 17th.

From day one, the organizers ensured the attendees were aware of the Drupal Code of Conduct, and indeed all the interactions I had and the overall environment were imbued with respect and collaboration.

The first couple of days were exclusively for summits and training. I joined for the last two days of the event to attend sessions. The schedule offered a wide variety of topics for all levels of experience, which allowed me to achieve my goal: understanding the full range of knowledge-sharing and learning that happens in these events, without feeling like an outsider. I was able to participate in meetings related to non-code contributions from which I earned valuable resources.

Thank you for making it happen!

Thanks to the organizers and volunteers who made it happen. Surely it would have been easier to suspend the event until next year, but you took the time and effort to carry it through and the result was impeccable.

609

Registrations

515

Attendees

32

Countries

Congratulations!

What I experienced at BADCamp 2020

Two experienced Drupal contributors from Axelerant participated at BADCamp as speakers: Mohit Aghera and Kunal Kursija. Obviously, I wanted to watch them in action. Their sessions were tagged as “Drupal for beginners”, and they both had over 20 attendees to their meetings. It was very compelling to see how they interacted with the audience, covering concepts as well as practical tips and showcasing live-demos. They answered all questions and provided further examples when needed, and of course, in an open-source collaborative spirit, shared their slides and links to the sample code repositories.

Go ahead, relive the sessions, and check out the resources.

 

 
This will be helpful both for site builders and developers. 

  

Learn about the very tiny, mighty and hidden gems of Drupal, "filters", that process and display the user-submitted content. 

As I was planning my schedule, I literally felt this session title was talking to me. Baddy did a great job explaining specific ways you can contribute to Drupal beyond code. And she managed to make it appealing, sharing her own journey choosing non-code contributions even though she has the needed technical skills. Thanks to her inspiring talk, I realized I can offer valuable support by pitching in with these kinds of contributions. So, if you like to design, you’re good at organizing projects or events, you enjoy writing, reviewing, or translating content, find out how you can help here

This session offered valuable insights towards building the marketing arm of an open-source project, highlighting the importance of storytelling, both within the community and towards external audiences. Suzanne stressed the need to pinpoint whom the Drupal community is talking to, and how to adapt marketing efforts to different personas (from developers encountering Drupal for the first time, but also to marketers and evaluators that won’t ever install Drupal but occupy decision-making positions in organizations). I personally engaged with the idea of telling better stories around code contributions within the community. Good stories are easier to amplify, and knowing the people behind the code makes it straightforward to relate and is always inspiring. Stories boost empathy, motivation and sense of belonging; all things that foster a healthy culture in any community.

The Promote Drupal Initiative already produced valuable resources in this direction: the Drupal brand book (setting design elements but also the tone of voice and the brand personality) and marketing materials such as press releases, pitch decks, and one-pagers. Visit the Promote Drupal page to download the resources and/or if you want to contribute to the Drupal brand.


Overall, I had a rich experience, I witnessed first-hand the power of innovation and knowledge-sharing behind Open Source and I now have proof that the Drupal community is guided by a culture of openness, respect, and collaboration.

P.S 1: If you’re interested in web content accessibility, I recommend you watch this session to learn interesting insights, tools, and distinctions between accessibility, usability, and authentic digital inclusion. Check out the video here.

P.S 2: Thanks again to the BADCamp organizers for including the farm tour and the pet meet & greet, it was a creative and conscious way to mitigate virtual fatigue.

Check out all the recorded sessions of BADCamp 2020 here.

Mar 01 2021
Mar 01

Understanding the Menu API in Drupal

In Drupal 8 the menu system, in comparison to Drupal 7 has become much more flexible, and the areas of functionality are now separated into different systems. 

The routing system now handles the following:

  • Association of path with the Controller
  • Combines access checking
  • Parameter up-casting
  • Serves as a basis for path access

The menu system is now a collection of: 

  • Different APIs for menu items
  • Local tasks
  • Contextual links defined by modules. 

While we were working on one of our client's projects, we came across a requirement where we had to have an admin for every country and allow them to add and edit the details. 

We decided to have the Country as a Vocabulary and the Countries as the terms in the vocabulary. The details of the Country are made available through fields in the vocabulary. Having done that, now we have every Country mapped to every Country admin. The term edit page should be made available to them as a menu link so that it’s easier to edit the details of the respective country, as shown in the screenshot below.

edit country details of backend

Defining Menu links

Menu links in Drupal 8 should be defined inside the module file following the convention module_name.links.menu.yml. Since menu-links are plugins themselves, they are discovered using the YAML discovery type.

Sample menu link definition: 

lines of code

Here the title key is required, and the route_name specifies the route the menu-link would point to.

By only specifying the parent link which is in a menu, we no longer need to mention the menu_name, as clearing the cache will get the menu link added to our menu.

Adding dynamic values to the menu link

With the use case that we discussed, we wanted to add a menu link to the edit page of a Country term that maps to the Country of the currently logged user.

The route to term edit page is entity.taxonomy_term.edit_form with the path /taxonomy/term/{taxonomy_term}/edit

Here the {taxonomy_term} is the route parameter that should be made available to the menu-link to switch paths dynamically.

lines of code

To make this route parameter available dynamically, we need to extend the MenuLinkDefault class, containing the required information for the default interaction.

Providing the route parameters using the Menu Link plugin class

lines of code

Using the getRouteParameters() function, we are passing the term id to the path - /taxonomy/term/{taxonomy_term}/edit

Now it’s available to the menu-link and changes dynamically when the user logs in.

Disabling menu-links dynamically

lines of code

In the above example, we wanted to enable the menu-link only if the country value is present. Here, passing the empty string could lead to a page with a broken link. 

So, we used the isEnabled() function to override the default functionality. Now, sending FALSE when the condition meets will disable the menu-link all together to the logged-in user.

This is one of the ways in which the menu-link could be altered dynamically. Other preferred methods could be to opt for hooks, commonly used  hook_menu_links_discovered_alter() for statically defined menu-links, hook_link_alter to alter the parameters for links. Here is the list of hooks the Menu API had to offer.

Feb 27 2021
Feb 27

Part of contributing to any open source project, or even really being a contributing member of any community, is sharing what you know. That can come in many forms. While many projects over emphasis code, and most of us understand the value of conference talks, good how-to articles are some of the most critical contributions for any software platform. There isn’t much point to a tool if people cannot figure out how to use it.

Why do I write how-to articles

I’ve contributed code to Drupal, some of it even good and useful to others. But usually when I hear someone noticed something I created it’s blog posts about how to solve a problem.

When I struggled to find the answer to a question I expect it is a candidate for a how-to post. I am not so creative that I am often solving a problem no one has, or will want to, solve for another project. And I am good enough at what I do to know that if I struggled to find an answer it was probably harder to find than it could been.

That helps me find topics for articles that are helpful to the community and benefit me.

How-to articles help others in the community use tools better

The goal of a good tutorial is to help accelerate another person’s learning process. The solution does not have to be perfect, and I know most people will have to adapt the answer to their project. I write them when I struggled to find a complete answer in one place, and so I’m hoping to provide one place that gives the reader enough to succeed.

Usually I combine practical experience earned after digging through several references at various levels of technical detail – including things like other people’s blog posts, API documentation, and even slogging through other people’s code. I then write one, hopefully coherent, reference to save others that digging extra reading.

The less time people spend researching how to do something, the more time they have to do interesting work. Better yet, it can mean more time using the tools for their actual purpose.

How-to articles serve as documentation for me, colleagues, and even clients

The best articles serve as high level documentation I can refer back to later to help me repeat a solution instead of recreating it from scratch. When I first wrote how-to articles I was solidifying my own learning, and leaving a trail for later.

They also came to serve as documentation for colleagues. When I don’t have time to sit with them to talk through a solution, or know the person prefers reading, I can provide the link to get them off and running. Colleagues have given me feedback about clarity, typos, and errors to help me improve the writing.

I have even sent posts to clients to help explain how some part of their solution was, or will be, implemented. That additional documentation of their project can help them extend and maintain their own projects.

How-To articles give me practice explaining things

One of the reasons I started blogging in the first place was to keep my writing skills sharpened. How-to articles in-particular tend to be good at helping me refine my process in specific areas. The mere act of writing them gives me practice at explaining technology and that practice pays off in trainings and future articles. If you compare my work on Drupal, Salesforce, and Electron you can see the clarity improve with experience.

How-To articles give me work samples to share

When I’ve been in job applicant mode those articles give me material to share with prospective employers. In addition to Github and Drupal.org, the how-to articles can help a hiring manager understand how I work. They show how explain things to others, how I engage in the community, and serve as samples of my writing.

How-To articles help me control my public reputation

I maintain a blog, in part, to help make sure that I have control over my public reputation. To do that I need inbound links the help maintain page rank and other similar basic SEO games.

From traffic statistics I know the most popular pages on this site are technical how-to articles. From personal anecdotes I know a few of my articles have become canonical descriptions of how to solve the problems.

When I first started my current job we had a client ask if I could implement a specific feature that he’d read about in a post on Planet Drupal. It turned out to be mine. Not only was I happy to agree to his request, it helped him trust our advice. My new colleagues better understood what this Drupal guy brought to the Salesforce team. Besides let’s be honest it’s fun when people cite your own work back at you.

Writing your own

You don’t have to maintain a whole blog to write useful how-to articles. Drupal, like most large open source projects, maintains public wiki-style documentation. Github pages allow anyone to freely publish simple articles and there are many examples of single-page articles out there. And of course there is no shortage of dedicated how-to sites that will also accept content.

The actual writing process isn’t that hard, but often people leave out steps, so I’ll share my process. This is similar to my general advice for writing instructions.

Pick your audience

It’ll be used more widely than whoever you think of, but have an audience in mind. Use that to help target a skill set. I often like to think of myself before I started whatever project inspired the article. The higher your skill set the more you should adjust down, but it’s hard to adjust too far, so be careful is aiming for people with far less experience than you have – make sure you have a reviewer with less experience check your work. Me − 1 is fine, Me − 5 is really hard to do well.

Start from the beginning and go carefully step by step

Start with no code, no setup, nothing. Then walk forward through the project one step at a time writing out each step. If you gloss over a detail because you assume your audience knows about it add reference links. You can have a copy of a reference project open but do not use it directly; it’s there to prevent you from having to re-research everything.

List your assumptions as you go

Anything that you need to have in place but don’t want to describe (like installing Drupal into a local environment, creating a basic module, installing Node, etc) state as an explicit assumption so your reader starts in the same place as you do. Provide links for any assumptions which are likely hard for your expected audience to complete. This is your first check point – if there are no good references to share, start from where that article you cannot find should start (or consider writing that article too). 

Provide detailed examples

Insert code samples, screenshots, or short videos as you progress. Depending on what you are doing in your article the exact details of what works best will vary. Copy and paste as little reference code as possible. This helps you avoid accidentally copying details that may be revealing of a specific project’s details.

If you look at mine you’ll see a lot of places where I include comments in sample code that say things like “Do useful stuff”. That is usually a hint that whoever inspired the article had interesting, and perhaps proprietary, ideas in that section of code (or at least I worried they would think it was interesting). I also try to add quick little asides in the code samples to help people pay attention.

Test as you go

Make sure your directions work without that reference project you’re not sharing. This is both so your directions work properly and further insulation against accidentally sharing information you ought not share.

End with a full example

If you end up with a bunch of code that you’ve introduced piecemeal, provide a complete project repo or gist at the end. You’ll see some of my articles end in all the code being displayed from a gist, and others link to a full repository. Far too many people simply copy and paste code from samples and then either use it blindly or get stuck. Moving it to the end helps get people to at least scan the actual directions along the way.

Give credit where credit is due

If you found partial answers in several places during your initial work, thank those people with links to their articles. Everyone who publishes online likes a little link-love and if the article was helpful to you it may be helpful to others. Give them a slight boost.

Feb 26 2021
Feb 26

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.

Feb 26 2021
Feb 26

Acquia was named a Leader in The Forrester Wave for Agile Content Management Systems, Q1 2021.

Acquia shown as a Leader together with Adobe and Optimizely

This research replaces Forrester's Wave on Web Content Management Systems. The focus is now on "agile content management" instead of "web content management". This change makes sense given the way people consume content today. Because consumers shift between channels when researching a brand or product, organizations need a back end that can support different end points (e.g. web, mobile, kiosks, voice assistants, etc).

The analysts note: The [Acquia] platform shined in developer and practitioner tooling, with superior capabilities in front-end components and backend extensibility of the platform..

Feb 26 2021
Feb 26

If you work in the digital industry, you’ve almost definitely encountered the term “agile” - actually, since you’re reading this article on Agiledrop’s website, you no doubt at least know about it.

First officially used in the 2001 Agile Manifesto, the term referred to a collection of software development practices initiated in the 1990s, e.g. scrum and kanban, as an alternative to the “waterfall” approach. 

In contrast with waterfall software development, agile methodologies allowed for much more innovation and experimentation, with projects done in incremental “sprints” and a focus on the “fail fast, then optimize” mentality. 

Waterfall vs. agile graphic

The agile business

Recently, however, this phenomenon of “agile” has expanded beyond software development into other aspects of the digital business. Agile marketing is one example of this, but mostly this meant agility being adopted on a more company-wide basis, with all or most of the business processes transformed to accommodate this new mindset. 

So, a business or company that has really embraced agile can be called an agile business/company. And, unsurprisingly, a lot of such businesses have not only been keeping afloat but actually thriving throughout the Covid pandemic, with the ability to act fast and take risks representing a significant business advantage.

There are many advantages of agile for businesses, and with the already fast pace of digitalization only further sped up by Covid, these advantages have only become more pronounced. The following section will take a more detailed look at six of the major ones.

Benefits of adopting agile

1. Innovation

One of the most important and impactful advantages of agile is the high degree of innovation it enables. Because of the work being done in sprints and due to streamlined cross-team collaboration, a lot more experimentation is possible throughout the process, even when projects don’t last a really long time.

With things such as MVPs and A/B testing, you’re able to gain a better understanding of the market and your audiences faster, giving you the upper hand over your competitors.

It’s important to note that you can only truly tap into this innovation if your teams/departments aren’t siloed; they need to collaborate effectively in order for the exchange of ideas and knowledge to take place. Once you de-silo, you facilitate out-of-the-box thinking which provides a better basis for innovation.

2. Collaboration and productivity

In contrast with the waterfall model, different teams simultaneously work on their respective parts of the project in agile. The different teams have frequent stand-up/scrum meetings that ensure issues are found and resolved quickly and that everyone has access to all the working materials they need.

Since the project is done in sprints, it’s easier to organize the work and to bring new people in for specific tasks. The streamlined processes allow for greater autonomy, and consequently greater efficiency and productivity.

On-point digital communication is also key to effective agile collaboration, especially post-2020. Make sure you have your internal as well as external communication channels well set up and facilitate both on-the-fly as well as async communication.

3. Stronger relationships

One very important result of better collaboration are the strengthened internal relationships within the company. Moreover, due to agile’s tendency for proactive problem solving and frequent communication, this is also extended to the relationships with partners or clients in a B2B environment.

And this also holds true for B2C, of course: being agile means being able to better reach your customers wherever they are and respond to market shifts swiftly, leading to a kind of “always-on” approach where it’s harder to fall behind the fast pace of innovation than with the traditional waterfall approach.

For those brands that really prioritize building meaningful relationships with their customers, using agile is a huge boon, if not almost a necessity considering the increasingly fast pace of things moving in the digital age.

4. Employee experience

Stronger relationships within the company, together with streamlined processes and good transparent communication, contribute immensely to a positive employee experience.

One important thing to note here is that agile bridges the perennial gap between developers and marketers by providing them with tools for better collaboration. And something such as implementing DevOps can also greatly benefit productivity and experience of employees working in IT and development.

5. Fast time to market

A vital element of keeping up with digital trends and innovations is being able to get your new product or service to market quickly. But that’s easier said than done in a work environment bogged down by outdated processes and overcomplicated hierarchies.

Agility, naturally, is one of the main factors of being agile. In a truly agile environment, the approval process should not take so long that the new product or feature ends up missing its mark once it’s finally released. 

Since teams are enabled to simultaneously work on different parts of the project, and with both more autonomy and greater collaboration, products can be rolled out quickly, which feeds back into the experimentation and innovation we covered under point number one.

This becomes more and more important as competition in the digital industry grows - with several competing products responding to market demands, the one that’s available first logically has an upper hand. The Covid pandemic has made this especially relevant in the e-commerce sector.

A slow time to market is one of the biggest drawbacks of the waterfall model of managing projects, and the speed and efficiency gained by agile in this area are one of its major benefits.

6. Future-readiness

Another advantage of being agile that’s related to the previous point is that it guarantees a higher degree of future-readiness

By being open to iteration and experimenting, and with testing being an integral part of the entire process, it becomes easier to prepare for the future and/or plan for a potential pivot. This flexibility that comes with agile is crucial in times of uncertainty.

During the first months of the Covid pandemic, we saw different types of responses: some scrambled to stay afloat while trying to digitalize, while others were quick to innovate and immediately come up with efficient solutions to the newfound remote and digital way of life.

Going agile empowers you to be in the latter group the next time a major disruption occurs, by either giving you a future-proof foundation to continue or by facilitating a pivot.

Conclusion

Executives walking in an office alongside abstract streams of bits

Has your company already adopted agile? If you’re still on the fence about it, maybe this article will help you make the call once you get familiar with all the potential benefits, especially considering the recent disruption’s longer-term consequences.

With the increasingly fast pace of the digital age, it can truly pay off to go with an agile approach, or at least adopt those agile methods that work best for your business. This is especially becoming true in a post-Covid “new normal”.

If you’re an agile company looking for an equally agile development partner, Agiledrop may be just what you’re looking for. Reach out to us or learn more about working with us here.

Feb 26 2021
Feb 26

This is the first 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 successful business is resultant of an array of decisions, whether big or small, leading to its conception, formulation and finally, execution. With digital being normalized to the extent where it is the only way we know of to access a ton of products and services, a solid online presence has come to be of utmost importance for a business. A lot of times, businesses prefer going for a CMS (Content Management System) instead of building a website from scratch, as a CMS gives you a pre-built website, good to go as it is, or easily customisable even without having a dedicated team of developers and related coding knowledge.

What are the options?

The first step towards making a business case is to weigh your available options side by side. As a business choosing a new CMS, you will be rendered the following options -

A) Proprietary Model CMS

A CMS built under the proprietary backdrop will have a unitary ownership. Every tool and feature available will be created and listed by the owner organisation, and will be served to the end user in a transactional manner, with not much deliberation involved as everything sources back to one single origin. 

B) Open Source CMS

On the contrary, in an open source CMS model, apart from a few core features, contributions are invited from everybody. The model opens up avenues for discussion and innovation for its end users thus forming the likes of a community, working together for the greater goal.

Due to the community benefits that come along with an open source CMS, recent statistics point towards an increase in inclination towards adopting an open source model for a business.

blue and pink bar chart analysing the likelihood of large companies to opt for open source cmsSource : The New Stack

The said benefits can largely be summed up in the following points.

grey chart with blue lines mapping the benefits of open source adoptionSource : SASwhite chart using blue lines to map the customer benefits of using open sourceSource : SAS

Business Case : Open Source CMS vs. Proprietary CMS 

For a better understanding of the business case for a CMS of either kind, let’s compare from various dimensions the features of Open Source and Proprietary CMS models with a business point of view -

The Costs

In a proprietary model, since it is the organisation that bears all the cost of maintenance, addition and subtraction of features, upgradation and bug fixation, it will recover these expenses in the form of subscriptions, licenses etc. You might need to pay yearly renewal fees or monthly usage charges. Along the line, be prepared for cost surprises, as they may initially be hidden, but will pop up soon enough.

If you’re wondering why to choose an open source CMS in this case, it is because it’s free to use with no charges in the form of subscriptions or premiums.

Hence, both the models do need some form of monetary support, and it is the business owners’ call what they want to invest their money on. 

Customisation

With the homogeneity that comes with proprietary CMS models, also comes rigidity in terms of customisation and personalisation, since there’s very little that is left to you for deliberation. Hence, if your business thrives on establishing unparalleled user experience by tapping on features like personalised feed and customisable layouts, go for open source. An open source model remains connected to its user base owing to continuous contributions and ongoing discussions within the community, making the field research for customisation much easier. 

On the other hand, if your requirements do not place much focus on the look and feel of the site, and rather banks on niche content for niche audiences, the associated costs and effort that comes with customisation is not that high utility for you and this is when to choose a proprietary CMS.

Complexity

Needless to say, all the additional features and tools make open source CMS unnecessarily complex. A small business with limited resources might find it too overwhelming to delve into web development especially if it is not their calling. However, the open source community, like that of Drupal, for instance, is available at your disposal any time. Just leave your questions in the dedicated forum, someone from the Drupal Community, that comprises millions of members, would surely revert. Or, if you wish to get web performance optimisation services or support and maintenance services, you can also partner with a digital agency which specialises in Drupal. In the case of proprietary CMS, with a single vendor to reach out to, things can be streamlined here as well.

Reliability

A proprietary CMS is a one-stop-shop experience, everything is handed out to you at once and you have very little to worry about if your area of expertise lies elsewhere. You can certainly rely on it in customary scenarios where you’re looking for greater stability of the product. But what must be kept in mind is that the ownership decides the lifespan of every service offered, and reliance takes a hit if the products you’ve based parts of your business on are changed opposite to your liking, or even removed. You also need to rely on the owners for bug fixes.

On the other hand, in case of an open source CMS, when our surrounding technology sphere undergoes change, open source is the first to reflect it, as it consists of users, and more importantly, contributors, from all across the globe. It gives one the freedom to work on a part of the software that is useful to them, hence creating their own safety net.

Security

Proprietary CMS models bank on security by keeping their source code under wraps, which might backfire as any bugs that creep into the source code will remain hidden from the public eye as well. Although the source code being open in open source models has drawn speculation, it is widely known for bug fixes being very prompt as multiple hands are working constantly to make it error free. Snyk found out in one of their reports that there were lower vulnerabilities reported across popular open source ecosystems, and that there was an improved security mindset within open source organisations. 

Bulkiness 

Proprietary software packages come in a bulk, installing various components that you might never end up using, as choosing exactly what to install isn’t everybody’s cup of tea. Open source softwares are based online, taking up negligible computer storage space. If bulkiness is your area of concern because you already have a lot of bulk on your plate, closed source might add to the problem.

Expertise Required

Open source is a developer’s paradise. If you have the expertise to work on an open source software or can afford people with the needed skills, nothing like it. However, if your website requires multiple people being on board to handle the content on a regular basis, it might not be the best choice for you. A closed source software doesn’t need any technical knowledge or coding skills to work seamlessly, while open source does. People with little to no technical experience can also work on proprietary software.

Innovation

The flexibility and space for innovation that comes with an open source software is unparalleled. Open source is like a self service buffet, each user is free to take what he or she wants, but it does not end there. New ideas for the betterment of the software and the community are always invited. In comparison, closed source models have a few people deciding on the features of the software, so it is impossible to cater to everybody. If your business’ future is to thrive on change and creativity, it is best to go for an open source model to avoid a fix in the future.

In open source communities, we see newer ideas and technologies on the ground not only sooner, but also on a continuous test drive with multiple technicians already working on the issues as soon as they’re detected. Open source CMS Drupal has held quite a starry record in unleashing new trends and making those functional as an open source platform. Macro trends in the industry like Continuous Delivery for superfast project deliveries, microservices infrastructure for small, autonomous services and machine learning for ‘intelligent’ web development’ have been brought to good use by Drupal. Hence, newer technologies see optimum utilisation with the backdrop of an open source community. 

Most importantly, the satisfaction of working with open source and contributing to it

Contributing to open source also has a plethora of hidden, indirect benefits. A company that is known to contribute to the common good is sure to build a positive, welcoming and compassionate brand value both within and outside the company. Developers involved in working on the open source components would be interacting with similar abundantly skilled people from all around the globe. Hence, not only is open source the right thing to do, it is equally exciting and challenging to work on. A person constantly interacting with the community is bound to gain a lot of dynamic experience, leading to a much faster growth rate as compared to a stagnant worker. And at the end of the day, one walks home satisfied and content with the feeling of having contributed to the bigger picture, to have fulfilled a bit of their own social responsibility. 

Companies as big units also find it important to provide funding to the community as a part of their CSR (Corporate Social Responsibility). Since they derive so much in terms of components and knowledge from the open source community, it only makes sense at the end of the day to give back to it. More on large companies' preference for open source here.

Drupal as an open source software has time and again seen how contributions and community engagement keep the platform afloat. Drupal acknowledges each contributor by issuing them credits for their work, and derives essential data from the trends of contributors. For example, if they see minimal engagement from a social or ethnic group, the inclusion statistics are likely to be revisited in order to analyse whether Drupal is accessible to everybody to engage and contribute in. Drupal also states in its Values and Principles that the bigger goal is to foster a learning environment leading to collaborative decision making and overall excellence. To know more, take a look at what makes open source recession proof, how it has tackled Covid-19 problems, and how Drupal stayed on top in the coronavirus pandemic.

At present, Drupal receives contributions from thousands of organisations and individuals who believe in the power of open source. Learn more about the approaches and perks of contributing to Drupal here.

Conclusion

The process of choosing a new CMS should be undergone carefully after thorough analysis of every aspect of the business cases for different softwares. The CMS is what you choose to represent and associate your brand image with, hence it should do justice to your goals, agendas and vision.

Feb 26 2021
Feb 26

Bright vivid colours

While this trend might be counteracted by another - brutalism - you’ll find a gluttony of sites brandishing a set of bright colours emboldened further with soft gradients. This of course poses some accessibility challenges with text overlapping such backgrounds. Check out Stripe.

Animated background

The more courageous of the brands push their vivid colours even further with background gradient animations. Check out Qoals.

Glassmorphism

Peering through glass-like interface elements might hark back to Windows Vista times, and more recently with the latest builds of iOS. UI designers are taking it further with 'glassy' overlays to help text become a bit more accessible over gradients and bright backgrounds. Check out DesignCode.

Other trends to get you inspired

Stay tuned

We’ll keep you updated as we release some of these and more on Convivial

Feb 26 2021
Feb 26

How does it stack up

Those of you who work with Drupal, you are probably familiar with the combination of using Search API with a search backend such as MySQL or Solr. A pluggable architecture makes Search API a good choice for indexing content in Drupal.

For a long time MySQL and Solr were the popular choices. MySQL was an easy choice as performance was good and results were OK. For those working with large datasets and many concurrent facets, Solr made more sense. Most Drupal hosting companies provide it as a service for this reason. As the search market has matured, other backends have become available, including one for Sajari.

The table below compares these three options and highlights the strengths and weaknesses of each.

Feature Database Solr Sajari

Separate service

No

Built into Drupal.

Yes

Drupal hosting companies provide a Solr as SaaS.

Yes

Sajari is available as a SaaS.

Full text search

Yes

Yes

Yes

Facets

Yes

Yes

Yes

More like this

No

Yes

A useful feature for providing item recommendations based on similarity.

No

Result quality

OK

Good

Very good

Performant

Partial

Slow with many filters over large datasets with facets.

Yes

Yes

Easy install

No

Requires a module such as Search API Database to push data across to Solr.

No

Requires a module such as Search API Solr to push data across to Solr.

Yes

We can configure Sajari in the Sajari UI to run from metadata on the page. Sajari provides an embeddable widget.

We recommend the Search API Sajari module approach.

Search API Integration

Yes

Search API Database module

Yes

Search API Solr module

Yes

Search API Sajari module

Federation

No

No

Yes

A site parameter can be passed into the index for easy filtering.

ReactJS components

No

No

Yes

Interface is faster than Search API as server round trips are not needed.

Result tracking

No

No

Yes

Built-in metrics understand page trends and poorly performing keywords to help you see what searches led your users to individual pages, or which content visitors are searching for but can’t find.

Reporting

No

Reports can be set up in analytics software.

No

Reports can be set up in analytics software.

Yes

Sajari provides logs and charts of search requests.

Autocomplete - suggestions

Yes

Extra module can be installed.

Yes

Extra module can be installed.

Yes

Synonyms

No

No

Yes

Libraries of synonyms can be uploaded via Sajari UI.

Typos

No

No

Yes

Support for misspelled words.

Boosting

Limited

Limited

Yes

Advanced rules can be defined on certain plans.

Machine learning

No

No

Yes

Sajari will learn which results are more or less relevant, promoting the best results to the top.

Pricing

Free

Database comes with Drupal hosting.

Included

Solr server comes built in with typical Drupal hosting.

Free and up

Starts free for smaller sites and then increases.

https://www.sajari.com/pricing

Summary

An easy, low cost search solution.

A more scalable solution with handy features such as “more like this”.

A fast system with smart results helpful for those looking for synonyms, results boosting, tracking and reporting.

Sajari is a viable alternative for clients who are looking for more insights into how their audience use the search on their site and more control over the delivery of the results. This is the case for content driven sites as well as for ecommerce configurations where preferences play a big role.

Integrating Sajari with Drupal

The Sajari Widgets

It is possible to implement Sajari search into any website without the need for the addition of modules or custom code in the backend. Sajari provides a set of widgets which will allow search to operate without the need for much technical knowledge.

Firstly, a Javascript tracking code will allow for “instant indexing”. When a user visits a page, the code fires up and tells Sajari about the page. Sajari can then visit and index the page to update its index. This approach is simple to set up but has its downsides - freshly updated or deleted content will not make it into the index immediately. If this is a concern, then using Search API Sajari, below, would be an alternative.

Secondly, Sajari offers a tool in the admin UI to define a search form and results. It covers things such as the search query, filters, tabs, result counts and result display. It is very easy to configure. The result is a snippet we can embed onto your search page. A set of ReactJS components drive the search and return results in lightning speed, leading to a good experience for users.

Drupal Module: Search API Sajari

For those looking for a tighter integration between their Drupal site and Sajari, it is possible to use their API to push updated content across. The Search API Sajari module , authored by the developers at Morpht, provides a backend to the venerable Search API module  This will update Sajari when content is updated on your Drupal site.

The main advantages of this approach are:

  • Content is indexed instantly, even when no one views it;
  • Deleted content is removed from the index immediately;
  • The tools within Search API allow for the fine tuning of the various fields;
  • There is support for sending a site name across in the result, allowing for federation of results.

Drupal Module: Sajari

The widgets provided by Sajari offer a quick way to get up and running with a search page. However, there are some limitations in the way they work. At the time of writing (early 2021) the widgets did not support the definition of facets.

In order to overcome this shortcoming, Morpht developed a ReactJS library which sits on top of the components provided by Sajari. It has quite a number of configuration options for queries, result counts, filters, tabs and facets. It even has the ability to customise the results through the provision of a callback function which can convert the JSON result to HTML. This code is available at Sajari Configuartor.

The Sajari module makes use of Sajari Configuartor to power the way search is implemented. The module provides a block for defining how the search will operate. The configuration is then passed through to the Sajari Configurator and the UI and results are then shown.

The Sajari module also makes use of the JSON Template module which allows for different handlebars templates to be defined by the themer. These templates can then be selected by an editor during the block creation process. The select template then forms the basis for the callback which is passed into the Sajari Configuartor. The result is that editors can select how to show results. There is no need to alter the ReactJS templates which are in the library.

A recipe

If you are looking to get up and running with Sajari, we recommend this process:

  • Sign up for a free account at Sajari;
  • Set up an initial collection in Sajari, but add no fields;
  • Install JSON Template, Sajari and Search API Sajari;
  • Configure Search API Sajari with your collection details in a new Server;
  • Define your Node Index and assign it to the Sajari server you have just created. The schema will be updated automatically in Sajari with the changes you make in Drupal;
  • Confirm that content is being indexed properly;
  • Add a Sajari search block to your search page and configure it. Be sure to use the correct pipeline and get the field names right;
  • Test the search and confirm it is working.

Conclusion

Sajari is an up-and-coming search provider offering a new breed of search which can utilise human behaviour to improve the results it shows. It's useful for content heavy and ecommerce sites which have a strong need for good search results. There are now integration modules for Drupal to get you up and running with Sajari easily.

Is Sajari right for you?

If you currently have a Drupal site based on a different engine and are interested in what Sajari can offer you, please get in touch with us to discuss it further.

Feb 25 2021
Feb 25

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, often requiring complex data transformations to fit legacy content 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 will cover more advanced topics such as niche migration tools, content restructuring, and various custom code solutions.

There’s a certain leniency afforded to migrating content from an old Drupal 7 website to its new Drupal 8 rebuild. Preserving old content with all its outliers can be complicated and tedious. However, it is typically run only once in production then augmented and completed. Take notes for future migrations and move on. This leniency is not available for ongoing migrations that need to be run routinely to keep a website’s content up to date. This can be anything from a website's directory to up-to-the-minute news and events data where the data comes from outside the website and requires a custom migration. Here the code needs to work consistently and report errors gracefully.
 

To run these migrations on cron, there are a few different options. The easiest is to use a module like Migrate Cron Scheduler or Migrate Cron. Both of these allow you to quickly pick a custom migration to run on cron and choose its frequency. Migrate Cron Scheduler, however, allows the user to configure the “update” and “sync” flags on the migration import.

The "update" flag will update all previously imported entities. The "sync" flag will also remove any previously imported entities that are no longer in the source database, so that the source and destination are synchronized.

These modules also let you choose a migration group, so that the migration import will automatically respect migration dependencies. The downside is that any custom code that needs to be run in conjunction with the migration will have to be split into a different cron job, and there is no setting on these modules to run the migration at a certain time of day or at an irregular frequency.


For situations that require these additional features, install and configure the Ultimate Cron module. This is a powerful tool that can be used to fine-tune any cron job to an exact time and frequency. The combination of Ultimate Cron and a migration cron module will cover the majority of use-cases. However, if custom code or reporting is necessary immediately before or after the migration runs, then a custom cron job may be needed. To build this, go to your custom migration module and create a hook_cron function in the .module file. This file will need to use the following classes:

use Drupal\migrate_tools\MigrateExecutable; use Drupal\migrate\MigrateMessage; use Drupal\migrate\Plugin\MigrationInterface;

Exactly how you configure this hook will depend on your situation. For each migration that you want to run on this cron job, you will need to follow these steps. First create an instance of the migration plugin by feeding the migration’s id into the Drupal plugin manager: $migration = \Drupal::service('plugin.manager.migration')->createInstance($migration_id);

Next, check the status of the migration. Often if there is an error, the migration will be hung in the “importing” state. Running a migration with the “importing” status will result in an error. To get around this, check the status and if necessary reset it to idle:

// Reset migration status. if ($migration->getStatus() !== MigrationInterface::STATUS_IDLE) { $migration->setStatus(MigrationInterface::STATUS_IDLE); }

At this point there are a couple options. You can leave the migration as-is and run a straight import where the content that has already been migrated will remain the same and any new content will be imported. Or set the “update” flag so that new content will be imported and existing content will be updated to match the source: $migration->getIdMap()->prepareUpdate();

Additionally, you can set the “sync” flag to remove any migrated content that no longer exists in the source database (e.g. an event that was cancelled). Note that this option requires at least migrate_tools version 5.

$migration->set('syncSource', TRUE);

Finally, create the MigrationExecutable plugin and run the migration:

$executable = new MigrateExecutable($migration, new MigrateMessage()); $status = $executable->import();

The “status” variable indicates whether the migration ran into any errors. If the status is empty, then there was an error and we can send a report and make custom adjustments to help the migration fail gracefully. Otherwise the migration ran fine.


Once the cron hook is ready, go to the Ultimate Cron jobs page (/admin/config/system/cron/jobs) and click the “Discover jobs” button. Your custom cron job should show up in the table, and you can click the “edit” button to fine-tune the exact timing. For updating or syncing migrations with hundreds of entities, the page may timeout if you manually hit the “run” button for your custom cron job. However, Ultimate cron version 2.x adds the drush commands cron-list and cron-run. Use cron-list to find your cron job id. Then use cron-run with that id and the “--force” flag to manually run your cron job for testing.


The Migrate Cron Scheduler or Migrate Cron module route is much faster to set up and is the better choice for quick, simple migrations that need to be run on the hour. However, for bigger, more complicated migrations that require additional code either immediately before or after the migration, or need to be run in the middle of the night, the Ultimate Cron module combined with a custom cron job provides the most customization and flexibility.

Feb 25 2021
Feb 25

When speaking with government clients, I’m often asked about web design trends. 

The fact is, design trends for government sites have very little to do with colors, fonts, or any sort of fleeting fashion. Nor are government sites the place where the boundaries of technologies such as augmented reality, virtual reality, or voice control are being pushed.

What matters most for government sites is trust, transparency, and ease of use. 

Government sites have a lot of heavy lifting to do, and more so than ever before, these sites are serving as a central hub from which constituents keep informed about events, monitor public health alerts, take care of official business, stay connected to the community, and a lot more. 
 

Web Design at Work

Those responsible for government and public sector sites tend to be very savvy about the need to engage constituents and ensure that the navigation and overall experience of their sites align with what visitors are looking to accomplish. The pandemic, of course, catapulted the importance of excellent UX to the forefront, but as COVID-19 hopefully heads for the history books, expectations for the UX of government sites will remain high. 

Given the depth and breadth of content that often needs to be organized and accommodated on government sites, modern design practices such as proper use of white space along with a spacious and fresh feel that mitigates against clutter and confusion is an essential best practice. While the interior pages of the site often need to be more content-heavy, an open and inviting home page serves as an engaging launch pad for a wide range of user journeys. 

Once the key persona groups who visit the site are defined, and the user journeys are mapped, the essential focus needs to be on streamlining and simplifying the UX, with a focus on removing any potential roadblocks or frustrations. 
 

People First

A people-first design philosophy is the “trend” that serves as a key driver for us at Promet Source. This calls for a recognition that government sites are being designed for a broad range of users -- those who are young, those who are elderly, users who are accustomed to conducting business online, users who are easily frustrated with technology, users with disabilities that require assistive technology to access the site, and a wide swath of users within every spectrum. Given the complex content models and scope of objectives that government sites need to accomplish, we find that Drupal is the CMS tends to be the best suited

Much of the world’s websites and many government sites among them are running on outdated, clunky user interfaces that were developed long before the concept of user experience or UX entered into the general lexicon or the discipline of web design. Now that we understand the design imperative of defining end-user needs, goals, motivations, and pain points, we are much better positioned to leverage design thinking as a solution to streamline user experience journeys. 

The fact is, design trends for government sites have very little to do with colors, fonts, or any sort of fleeting fashion. 

- Peter Ross, UI/UX Designer

Among the indicators of this trend is increasingly friendly and highly contextual navigational language. One example would be navigational tabs that represent a walk-through to specific talks. Rather than a “Forms” tab, or a list of departments, for instance, a tab we recently designed for a county website read: “I want to.” Clicking that tab resulted in a sub-menu of options within the categories of: 

  • Apply for
  • Pay for 
  • Register
  • Report
  • View

Visual Storytelling

While there are a multitude of tasks that need to be accomplished on government websites, a well-designed government or public sector website factors in a lot more than information and functionality. Perspectives and messaging can be intricately woven into the design, through a holistic approach to collaborating with government clients and drawing upon multiple disciplines to create the look, feel, messaging, and the entire experience that conveys the government entity’s story and identity. 

Working closely with content and development teams, we’re able to optimize engagement, conveying information a manner that is both creative and informative. 

This holistic design approach to the user’s experience on a site digs much deeper and ensures a greater degree of inclusivity than simply asking, “does it look nice?” Government websites truly need to work for everyone.

The more we strategically approach design and UX and the more we educate ourselves and others on the best practices for inclusive design the better everyone will be for it. I see it as an opportunity to be conscious of others and unite within a digital platform.

Working in close collaboration with federal, state, county, and municipal clients, Promet Source is making a difference and having an impact. Interested in starting a conversation concerning the distinct objectives for your website? Let’s talk
 

Feb 25 2021
Feb 25

The work of a content manager requires intensive linking of various content together. Proper linking of subpages is one of the foundations of SEO. It also makes it easier to navigate your website, which may have a great impact on marketing effectiveness.

Drupal by default allows you to create links in text. You just select the appropriate button in the editor and enter the URL of the new link. However, when you need a more convenient autocomplete solution, I recommend trying the Linkit module. In this article, I’ll show you its abilities.

Dates

The module debuted at the beginning of 2010. The first stable version 1.0 for Drupal 6 was released back then. Since that time LinkIt has been updated regularly. The latest beta release, 6.0.0, saw the light of day in December 2020.

Popularity

The LinkIt module is extremely popular in the Drupal world. Official statistics show over 110 thousand installations. This number also includes the websites based on our Drupal distribution – Droopler. 41% of the above websites are based on Drupal 7.

Linkit-stats

Module's creators

The module has been maintained by Emil Stjerneman for ten years, and he’s created over 900 commits in the project so far. In total, almost 80 users made contributions to it.

Purpose of the module

The LinkIt module adds to WYSIWYG editors the ability to conveniently link internal and external content. It offers built-in support for content types, taxonomies, users, files, and comments. Thanks to this, you don’t have to remember or copy the URLs you link to when you’re editing a webpage. All you have to do is enter a title fragment and the target page will be suggested by autocomplete. This is a very useful functionality, especially since errors in URLs are one of the most frequently detected problems in SEO audits.

Unboxing

The module is available on the Drupal.org website. Like other Drupal add-ons, you can install it from a .zip file or via Composer (using composer require drupal/linkit command).

The administration panel can be found in the menu by selecting Configuration → Config Authoring → Linkit.

Module's use

When you start editing any text format, pay attention to the "Drupal link" section.

linkit-enable

After clicking the "Linkit enabled" checkbox, the standard link widget in CKEditor will be replaced with a new one, with built-in autocomplete.

linkit-add

At this stage, you can finish the module configuration.

Linkit profiles

If you want to customise autocomplete, create your own Linkit profile in the Configuration → Config Authoring → Linkit panel. Each profile has its name, description and a list of matchers.

linkit-profiles

You have the following types of matchers to choose from:

  • Content – basic matcher, searches for content by title among all or selected types of content,
  • Contact form – searches for contact forms,
  • Email – detects e-mail addresses and creates a mailto: link automatically,
  • File – searches for files from the sites/*/files directory managed by Drupal,
  • Front page – suggests a home page when you start typing "Front page",
  • Media – searches for media of selected types,
  • Taxonomy term – searches for taxonomy terms,
  • User – searches for website users.

Example of use

The easiest way to explain the operation of matchers is by using an example. I’m adding a new "Example profile" containing the following elements:

linktit-matchers

Notice that the “Metadata” fields are filled in, showing additional information about the link match found. Now, let’s set the “Example profile” as active in the text format configuration.

When you go to webpage editing, the effect of the above actions will be as follows:

linkit-add-example

You can see three matchers here, one below the other. The first one shows the article, the second one shows the Media object with a thumbnail, and the third one - the taxonomy term.

URL format

When you save the content with a link inserted via Linkit, you will notice that instead of a URL alias (of the /example-article type), the link contains its abbreviated form (e.g. /link/20). You can change this behaviour by activating the following filter in the text format settings:

linkit-urls

Hooks and integrations

The Linkit module is object-oriented and highly flexible. You can extend it with:

  • "matcher"-type plugins, allowing you to easily add your own sources of link hints,
  • "substitution"-type plugins that return links to content.

There are currently no additional Linkit modules on Drupal.org. This is probably due to the fact that the basic version covers most cases of use.

Summary

Linkit is a simple and reliable solution that will improve the UX of your website at a low cost. It’ll also allow you to better control the structure of links and help you avoid linking errors. We’ve been using this module for many years – also as part of our own Drupal distribution – Droopler.

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