Planet Drupal

Subscribe to Planet Drupal feed
Drupal.org - aggregated feeds in category Planet Drupal
Updated: 4 hours 24 min ago

Evolving Web: Highlights of Drupal Europe

21 September 2018 - 11:10am

I spent last week hanging out with over 1000 Drupalers at Drupal Europe, the biggest Drupal event of the year in Europe. It was held in Darmstadt, Germany and brought Drupal users of all sorts from all over the world. Most attendees were from Europe, but many travelled from Asia, North America, and as far away as Australia to attend.

What Was Special About Drupal Europe?

Drupal Europe was basically a community-organized DrupalCon. It was a large event that had most of the features that you would associate with a DrupalCon from the professional venue to the DriesNote to the hundreds of valuable sessions to Trivia Night and the large contribution sprint on Friday.

Watching the 12 core organizers and countless other volunteers step up and organize this event was an inspiration. The volunteers are community members and they brought so many great ideas to the event that made the event excellent. Here are some of the things that I loved about the conference:

BoFs (small break-out sessions that are conversations between attendees rather than speaker-led) were incorporated into the main calendar of events making them highly visible. This made it easy to see which ones were going on. This meant that BoFs were popular and all that I attended seemed highly productive.

There were also lots of opportunities to contribute throughout the conference, and reduced-price contributor tickets were available for people who just wanted to work on the project and not attend sessions.

Diversity tickets were available. I haven’t seen the data, but it seemed like a more geographically and gender diverse conference than other Drupal events I’ve attended in Europe. 

The Splash Awards that kicked off the Tuesday of the event and highlighted great Drupal work being done. I think this is a great way to integrate more success stories and customers into the community.

The overall conference venue from the way the space and sponsor booths were laid out to the food were all very conducive to networking opportunities. There were lots of different spaces to chat, hang out, talk to sponsors, drink coffee, and contribute. The signage kept everything on track and allowed real-time updates to the schedule as needed (thanks Gabor Hojtsy!)

Updates from the Dries Note

If you didn’t attend the event, I recommend watching the DriesNote to get an update on what’s happening with the Drupal project and the community as a whole. Dries talked about the roadmap for Drupal. He touched on recent work on improving the evaluator experience, the work being done on the admin UI, and updates to drupal.org.
 

Drupal User Experience Study

I spent some of the week co-ordinating efforts around the Drupal UX Study that I’ve been working on. I got to meet with Cristina Chumulls and new contributors. We worked on the wireframes for the new Admin UI. The work we’re doing was promoted at the DriesNote, so watch from here to find out more.

If you want to get involved in helping us do user testing to improve the Drupal Admin UI, find us on the Admin UI channel on the Drupal Slack.

Working Together to Market Drupal!

I also spent a lot of my week talking to folks from different parts of the community about how we can work together to better promote Drupal. This resulted in three separate community efforts: creating a starter kit to help local associations promote Drupal, hiring a marketing manager to create materials for local communities, and a marketing pitch deck for the Drupal project as a whole.
Get in touch with me on the #marketing channel on the Drupal Slack if you want to get involved in these efforts and I’ll connect you to the right person! (my username is pixelite).

Where’s All the Drupal Talent?

Many Drupal agencies face challenges recruiting new talent. When we talk about marketing Drupal, the need to bring new people into the community always comes up. At Drupal Europe, I participated in a panel about how to recruit Drupal talent organized by Josef Dabernig. I talked about our efforts to Axcelerant. I also learned a lot about how other Drupal teams are organized and innovative programs for on-boarding junior developers.

Drupal Association

This was the first big Drupal event that I attended as a member of the board of the Drupal Association. I attended a board retreat the two days before Drupal Europe and got up-to-speed on what the Board is working on. I took advantage of the conference to connect with people in the community who are interested in the Promote Drupal initiative and other efforts of the association. I also sat on a panel about the past, present, and future of the Drupal Association and collected the feedback from audience members who were asking questions about the role of the association going forward.

I’m excited to get started on the board and I’ll post more updates as my involvement advances.

Watch more here!

#DrupalThanks
Again, huge thanks to the volunteer organizers of the event! 

 

 

+ more awesome articles by Evolving Web
Categories: Drupal

Aten Design Group: Handling Timezones in a Progressively Decoupled Drupal Application

21 September 2018 - 9:27am

This year I’ve been working on a fun new Drupal-based event management application for libraries. During the course of development, I’ve become convinced that–beyond caching and naming things–the third level of Computer Science Hell is reserved for time zone handling. Displaying and parsing time zones proved to be a fruitful source of unforeseen issues and difficult to diagnose bugs.

The application we’ve been working on uses a progressively decoupled architecture, meaning interfaces that demand greater interactivity are self-contained client-side applications mounted within the context of a larger server-rendered Drupal site. This allows us to focus our efforts, time and budget on specific key interfaces, while taking advantage of Drupal’s extensive ecosystem to quickly build out a broader featureset.

Some examples of where time zone bugs reared their nasty heads:

  1. In certain cases, events rendered server-side displayed different date times than the same event rendered client-side.
  2. In a filterable list of events, time based-filters, such as “Show events between September 6th and 9th.”
  3. A user’s list of upcoming events would sometimes not include events starting within the next hour or two.
  4. Two logged in users could see a different time for the same event.

Let’s talk about that last one, as it’s a fairly common Drupal issue and key to understanding how to prevent the former examples.

User’s Preferred Time Zone

Drupal handles time zone display at the user level. When creating or editing their account, a user can specify their preferred time zone.

All users have a preferred time zone–even the logged-out anonymous user. A Drupal site is configured with a default time zone upon creation. This default time zone serves as the preferred time zone of all anonymous users. It also serves as the default preferred time zone for any new user account as it’s created.

When date values are rendered, the user’s preferred time zone is taken into account. Let’s say you have Drupal site with a default time zone set to America/New_York. If you have an event set to start at 4pm EST, all anonymous users–since they’re preferred time zone matches the site default–will see the event starts at 4pm.

However, a user with a preferred time zone of America/Phoenix will see that same event’s time as either 2pm or 1pm – literally depending on how the planets have aligned – thanks to the user’s time zone preference and Arizona’s respectable disregard for daylight savings time.

So the first thing you need to understand to prevent time zone bugs is users can set their preferred time zone.

Dates are Stored in UTC

One thing Drupal does really well is store dates in Coordinated Universal Time or UTC – I’m not sure that’s how acronyms work – but whatever. UTC is a standard, not a time zone. Time zones are relative to UTC. Dates are stored in the database as either Unix timestamps or ISO-8601 formatted strings. In either case they are set and stored in UTC.

Likewise, Javascript date objects are stored internally as UTC date strings. This allows dates to be compared and queried consistently.

The Disconnect

We now know Drupal and JS both store dates internally in a consistent UTC format. However JS dates, by default, are displayed in the user’s local time zone – the time zone set in their computer’s OS. Drupal on the other hand, displays dates in your user account’s preferred time zone. These two won’t always match up.

If the browser and Drupal think you are in two different time zones, dates rendered on the server and client could be off by any number of hours.

For example, you may be in Denver and have America/Denver set as your preferred time zone, but if you’re logged out and Drupal has a default time zone set to America/New York, server rendered times will display 2 hours ahead of client rendered times.

In another scenario, you may live in the same time zone configured as Drupal’s default and don’t have have a preferred time zone set. Everything looks fine until you travel a couple time zones away, and now all the client rendered dates are off.

This is the root cause of the bugs in the first three examples above.

The browser couldn’t care less what preferred time zone you have set in Drupal. It only knows local time and UTC time. Unlike PHP, JS currently does not have native functions for explicitly setting the time zone on a Date object.

Keeping Client- and Server-Rendered Dates in Sync

Now we know Drupal and the browser store dates in UTC. This is good. To make our lives easier, we’ll want to keep our client side dates in UTC as much as possible so that when we query the server with date-based filters, we get proper comparisons of dates greater than or equal to.

But we need to ensure our client-rendered dates match our server-rendered dates when they are displayed on the page. We also need to ensure dates entered via form fields are parsed properly so they match the user’s preferred time zone. There’s two things we need to do.

  1. Let the client know the user’s preferred time zone.
  2. Parse and display client-side dates using this time zone.

Passing the User’s Preferred time zone To do this, we’ll attach the preferred time zone via drupalSettings. This can be done via HOOK_page_attachments() in a .module file. If you don’t know how to create a custom module, there are plenty of resources online.

/** * Implements hook_page_attachments. */ function my_module_page_attachments(array &$attachments) { // Add user time zone to drupalSettings. $user_time zone = new \Datetime zone(drupal_get_user_time zone()); $attachments['#attached']['drupalSettings']['my_module']['user'] = [ 'time zone' => drupal_get_user_time zone(), ]; // Cache this per user. $attachments['#cache']['contexts'][] = 'user'; // Clear the cache when the users is updated. $attachments['#cache']['tags'][] = 'user:' . $current_user->id(); }

With this, we can now access the user’s preferred time zone in the browser from the drupalSettings global, like so:

const userTimeZone = drupalSettings.my_module.user.time zone; // Ex: ‘America/Denver’ Displaying, Parsing and Manipulating Dates in the User’s Time Zone

Now that we know the users preferred time zone client side, we can ensure any dates that are displayed and parsed, for example – from an input, are taking into account the correct time zone.

Currently there isn’t good native support for this in browsers. We have to either write our own functionality or use a third party date library. I typically use Moment.js for this. Moment has been around for a while and, as far as I know, has the best time zone handling.

To use Moment’s time zone handling, you’ll need to load the library with time zone support and the most recent time zone dataset. The dataset is required to map time zone names to the appropriate UTC offset – taking into account Daylight Saving Time at the appropriate time of year.

For all the following examples, we’ll assume you’ve loaded the time zone version of Moment with data bundled together as a browser global. There’s a number of other ways to import Moment via npm if you prefer to use it as a module.

<script src="https://momentjs.com/downloads/moment-time zone-with-data-2012-2022.min.js"></script> Setting a Time Zone on Dates

To begin with, we need to tell Moment what time zone we are dealing with. We’ll also assume userTimeZone has been set to the string value from drupalSettings above.

// Create a date for now in the user’s time zone const date = moment().tz(userTimeZone);

Just like Drupal and native JS Date objects, Moment stores the underlying date in UTC. The time zone plugin merely allows us to include a reference to a specific time zone which will be taken into account when manipulating the date with certain methods and formatting the date as a string.

const date = moment('2018-09-13 12:25:00'); date.unix(); // 1536863100 date.format('HH:mm') // ‘12:25’ date.tz('America/New_York') // "14:25" date.unix() // 1536863100

In this case, we are simply using Moment to display a date in a specific time zone. The underlying UTC date never changes.

Manipulating a Date

Whereas the format() method in Moment simply outputs a string representing a date, other methods manipulate the underlying date object. It’s important to take time zone into consideration when manipulating a date with certain operations to ensure the resulting UTC date is correct.

For example, Moment has a handy startOf() method that lets you set the date to, for example, the start of the day.

We instinctively think of the start of day as being 12:00 AM. But 12:00 AM in Denver is a different UTC time than 12:00 AM in New York. Therefore, it’s important to ensure our Moment object is set to the desired time zone before manipulating it. Otherwise we will get different results depending on the time of day and local time zone in which the method was executed.

Parsing a Date

In some cases, we need to parse a date. For instance, to correctly convert a Date Time field from Drupal into a JS Date object, we need to ensure it’s parsed into the right time zone. This is pretty straightforward as the date output from Drupal is in UTC. However, the client doesn’t know that. We can simply append the Z designator to indicate this date in UTC.

moment(`${someDateValue}Z`);

I typically wrap this in a function for easy reuse:

export const dateFromDrupal = date => moment(`${date}Z`).toDate();

And going the reverse direction:

export const dateToDrupal = date => date.toISOString().replace('.000Z', '');

Another use case for parsing dates is when handling user input. For example, if you have a filtering interface in which you need to show events on a given day. The user needs to enter a date. The HTML date input uses a simple string representation of a day, such as 2018-09-15 – in the user’s local time zone.

Now, if we want to take this input and query Drupal for events with a start time between the start and end of this day, we’ll need to convert this string value into a UTC date. We’ll need to do so by parsing this date in the user’s time zone, otherwise we might not get accurate results. In fact, they could be as much as a day off from what we’re expecting.

function changeEventHandler(event) { if (event.target.value) { const inputDate = moment.tz(event.target.value, userTimeZone); const startValue = inputDate.startOf(‘day’); const endValue = inputDate.endOf(‘day’); // Do something with the start and end date. } }

Date and time zone handling is one thing you should not take for granted when considering decoupling a Drupal application. Having a good understanding of how dates are stored and manipulated will help you identify, diagnose and avoid date related bugs.

Keep these things in mind throughout the development process and you should be fine:

  1. Store your dates and pass them around in UTC. This will help keep things consistent and reduce any time zone related bugs.
  2. Take time zone into account when dealing with user input and output. Time zones are relative to the user, so keeping those operations as close to the user interface as possible should keep the internals of the application simple.
  3. When considering any open source modules that deal with dates, such as React components or date handling libraries, make sure they allow for proper time zone handling. This will save you some headaches down the road.
  4. Test your application using different user time zones in Drupal and by manually overriding your time zone on your local machine. Sometimes bugs are not apparent until you are on a drastically different time zone than the server.

Good luck!

Categories: Drupal

OpenSense Labs: Face-off 2018: Drupal vs Sitecore Comparison

21 September 2018 - 7:32am
Face-off 2018: Drupal vs Sitecore Comparison Shankar Fri, 09/21/2018 - 20:02

A game of soccer is not shorn of any fanfare among the soccer lovers when the so-called English Premier League brings together the greatest players in the same team. And when two legendary players of different nations play together for the same franchise, fans often find it an arduous task to pick the champion of the champions. Choosing the best CMS for your business between Drupal and Sitecore puts you in a similar junction.


Drupal and Sitecore are the leading CMSs in the market and that reflects in the Gartner Magic Quadrant for Web Content Management 2018. Apparently, both are amazing as the content store for websites and that puts digital businesses in a dilemma to choose best of the best breed. Here, we have put several parameters in place and did a side-by-side comparison. Let’s see who comes on top.

A Brief Exploration of Drupal and Sitecore

Before we dive into the comparison part, let’s quickly define the two content management systems.

Drupal

An open-source CMS, Drupal is absolutely free to use which is maintained by a community of volunteers and sponsored contributors across the globe.

It comes with various modules and integrations out-of-the-box. It is powering some of the world’s biggest and most intricate websites and is a praiseworthy choice for firms that need a solution offering impeccable and complex integrations.

No wonder, it is on the upward direction in the usage statistics as can be witnessed in the graphical representation below.

Drupal Usage Statistics from BuiltWithSitecore

Sitecore, a closed-source or a proprietary CMS, provides some amazing marketing automation tools out-of-the-box.

It is a good contender for enterprises that are considerate about content personalisation, journey orchestration, and marketing.

Like Drupal, it is perpetually rowing upstream despite heavy competition in the CMS market and has made a mark for itself as can be seen in the graph below.

Sitecore usage statistics from BuiltWith

While both the CMSs are continuously proving to be quintessential when it comes to their respective growth and business adoption over the years, market share shows a different picture. Market share, with a bulk of the share in the pockets of Wordpress, has a strong contender in Drupal. W3Techs statistics delineates that Drupal leads the market share as compared to Sitecore.

Comparing Drupal vs Sitecore in Different Perspectives

Doing a side-by-side comparison of Drupal and Sitecore on different metrics would portray a better picture of who wins the battle when to comes to being the best of the best.

Features and Functionalities

Metrics

Drupal

Sitecore

Content Management

Excellent content management

Excellent content management

Security

Highly secure

Highly secure

Decoupled and headless approach

Decoupled presentation layer available

Decoupled presentation layer available

Performance and Scalability

With a smaller footprint, it is more scalable and offers high performance

With larger footprint, it is relatively low on scalability and performance metrics

Multilingual site

Great support for multilingual sites

Great support for multilingual sites

Accessibility

Better features for web accessibility

Relatively less features for web accessibility

Multisite

Multisite functionality available

Multisite functionality available

Responsive web design

Fully responsive

Fully responsive

1. Content Management

Drupal has a much more customisable backend as compared to Sitecore. The default Drupal content administration view is stupendous. It can be further customised for optimising the content editors’ user experience.

Drupal allows the implementation of custom workflows for the content teams thereby ensuring that governance standards are met. It makes sure that all the content is posted and approved as per the norms of the organisations’ existing content practices.

For instance, with the release of Drupal 8.6, Workspaces module, an experimental module, has been included. So, when a large package of content, let’s say hundreds or thousands of items, have to be assessed and deployed at once, Workspaces module offers intuitive UI to do so.

Workspaces module in action

On the contrary, while Sitecore's current backend is tremendously functional, the user experience leaves quite a bit to be desired. Sitecore Director of User Experience, Niels Handberg, showcased the Future of Sitecore Content Management User Experience at the Sitecore Symposium 2017.

Source: Delete Agency

Upcoming editions of Sitecore such as Sitecore 9.1 will have hugely improved content authoring experiences and content management tools. It will have options for advanced workflows in specific areas or content types on the site. It will allow users to configure systems for approvals, notifications, and translations on multiple content items.

Inference: Drupal and Sitecore have been truly consistent with their approach of providing an excellent content management to the users and have been continuing to inculcate more improvements.

2. Security

An extensively researched whitepaper by the University of Washington titled “Is Open Source Software More Secure?” signifies the high-level security that open source software offer. It states that open source does not pose any significant roadblocks to security but rather reinforces best security practices by involving many people who can expose bugs swiftly.

Drupal offers fine-grained access over what content can be created, modified, updated and deleted and by whom. Although, as an open source CMS, it is a highly integrated system, it is also immensely security-focussed CMS. Drupal allows you to build securely integrated platform and has a suite of security modules to choose from.

Dedicated Security Team of Drupal is committed to address security vulnerabilities and build patches to ensure top-of-the-line safety.

Moreover, adhering to Drupal’s coding standards also helps keep security risks at bay.

In the 2017 Cloud Security Report by Alert Logic, Drupal was reported for the least number of web application attacks.

Source: Alert Logic

Sucuri’s Hacked Website Report also showed that Drupal was the better performing CMS in terms of security as compared to leading CMSs like Wordpress, Joomla, and Magento.

Source: Sucuri

Sitecore enables you to create users and user roles with fine-grained access to any part of the site an administrator chooses.

It is built on .Net which means that whenever a .Net patch is released, all Sitecore sites will be updated automatically without any user intervention. And since Sitecore sites are designed to minimally integrate with other systems, the risk of outside security flaw creeping into the site gets reduced.

It offers extensive documentation on safeguarding one’s environment. Clients would have to coordinate with vendors in order to make sure that security patches are installed instantly.

Inference: Both Drupal and Sitecore are highly secure platforms.

3. Decoupled and Headless Approach

Decoupled Drupal offers multi-platform capabilities, awesome frontend experience, and marketing agility. So, a large enterprise with a presence of an awful lot of digital properties to govern benefits a lot with Decoupled Drupal’s Create Once Publish Everywhere approach.

Source: Acquia

Sitecore, with its decoupled approach, can automatically serve content in the format that is best-sized and suited for a user’s device. Sitecore originated as a headless CMS. But it has never marketed itself as headless as it has always separated content from the presentation and thought of headless as a commodity.

Inference: Both the CMSs can be a superb choice as the decoupled or headless CMS.

4. Performance and Scalability

The Drupal effect on high-performance websites is huge and can be very meritorious.

  • Drupal modules like BigPipe and Redis helps in the advanced cache optimisation.
  • Memcache API and Integration module help in the database optimisation.
  • Advanced CSS/JS Aggregation module keeps a tab on your front-end performance.
  • Blazy module provides the functionalities of lazy loading
  • Fast 404 module handles 404 errors on websites.
  • CDN module helps in the integration of Content Delivery Network for Drupal websites.

Also, Drupal scales with your needs to help sites cope with a colossal amount of traffic. High-traffic websites like The Grammy Awards, NBC Olympics, Time Inc., NASA and many more are efficiently handling spikes in web traffic. Drupal can manage a voluminous amount of visitors, content and Drupal users.

Sitecore encounters a challenge in order to attain high performance and scalability but its recent large-scale deployments have shown that it can be addressed. With a large footprint, it requires a large hosting infrastructure to manage it.

For attaining high scalability, Sitecore’s documentation recommends that separate servers can be assigned for individual tasks like content delivery, reporting, processing/aggregation and more.

The Forrester Wave: Web Content Management Systems, Q1 2017 report states that while Sitecore Experience Accelerator (SXA) may ease off operational pains but large feature set add intricacy to operations.

Inference: Drupal has a clear edge over Sitecore in terms of website performance and scalability.

5. Multilingual Site

Drupal’s out-of-the-box language handling abilities deliver value to the firms who need localised digital experiences thus saving time and money in the process. Building multilingual sites is faster and easier with Drupal with the support for natively installing 90+ languages.

Four core modules in Drupal for language handling, interface translation, content translation, and configuration translation allow full translation of every part of a site. You can swiftly develop a customised site in any language. Or, you can build an intricate multilingual web application with dynamic, language-based displays using various admin languages and translation workflows.


Sitecore XM natively governs the multilingual content and the translation workflow. It also integrates with translation services thereby enabling content creators to write in their native language and translate it globally.

Sitecore allows each language to have its own version history. Every field on a template can be marked as unique to a specific language. Or, they can be shared across all the languages. Items can be pushed through the workflow for incorporating the translation process. When done properly, a site won’t require software alterations for supporting new languages.


Inference:Building multilingual sites are well-supported by both the CMS.

6. Accessibility

Both Drupal and Sitecore are accessible platforms but Drupal has better features out-of-the-box like the default support for Web Accessibility Initiative – Accessible Rich Internet Applications (WAI-ARIA).

Drupal 8 comes with several accessibility tools out-of-the-box with modules like Block ARIA Landmark Roles, Siteimprove, CKEditor Abbreviation and much more available to offer better experiences.

Sitecore needs designers and frontend developers to develop an HTML prototype which is split into components, tested, and rebuilt in the Sitecore system.

Both Sitecore and Drupal can be built and tested as per the World Wide Web Consortium (W3C) standards but with Sitecore, it might be time-intensive.

Inference: Drupal has a slight edge over Sitecore when it comes to ensuring accessibility standards.

7. Multisite

The multisite feature of Drupal helps in governing multiple sites across your organisation, brands, campaigns and geographies on a single platform. It allows users to quickly and easily create and deploy multiple websites.

Drupal’s multisite functionality enables you to share a single Drupal installation consisting of core code, contributed modules and themes among several sites. So, managing the code is easier as each upgrade only needs to be done once.

Sitecore allows you to share content across multiple sites for a consistent experience on all of them. A default Sitecore installation defines a single published website but this single Sitecore installation is capable of publishing multiple websites with each site having its own properties.

For instance, you can define a new Sitecore site to be your published public-facing website or to be used by content editors for accessing the content management system.


Inference: Multisite functionality is at the heart of both the CMSs.

8. Responsive Web Design

The out-of-the-box mobile-friendly features of Drupal 8 creates quite the buzz with the words like ‘mobile-friendly’, ‘responsive’ and ‘squishy’ associated with it. Above all, it is designed with a mobile-first approach.

Drupal 8 offers responsive administration and toolbar for the content editors and mobile-friendly core themes for the themers. It also comes with core modules like the Breakpoint module and the Responsive Image module for the site builders. With the Web services in the core, it is also great for application developers for developing native mobile applications.

Sitecore is mobile responsive and display-agnostic. Its device detection module allows users to automatically detect and optimise content for different devices thereby giving the option of previewing the content on different mobile devices.

Also, the geoIP detection package helps in personalising the content based on the physical location of the user.

Inference: Mobile-friendly features are prevalent in both Drupal and Sitecore.

Content Editor’s Eye View

Metrics

Drupal

Sitecore

Editing Interface

Good editing interface

Good editing interface

Drag and drop functionality

Drag and drop feature available

Drag and drop feature available

Granular editing

Granularity while editing possible

Granularity while editing possible

Grouping of the content

Better grouping of content

Relatively less flexible while grouping of content

Layout configuration

Excellent layout configuration options available

Excellent layout configuration options available

1. Editing Interface

Drupal offers excellent editing options. One of the options is to use the full edit mode where any content item can be easily edited using CKEditor - WYSIWYG HTML editor.


Another option is to do in-place editing with the Quick edit module where specific items are chosen to be edited as shown here.


In Sitecore, content editing is managed by Sitecore Experience Platform and Sitecore Experience Accelerator. Sitecore Experience provides editing tools namely the Content Editor and the Experience Editor.

The Content Editor offers fine-grained control over the content elements organised as objects in a content tree. Editors can choose an item for editing its fields. The Editing UI is by design resembles that of Microsoft Windows and provides easy usability transition for Windows shops.


Sitecore’s Experience Editor enables in-place editing where, like Drupal, content editors won’t have to leave the page to edit a content item.


Inference: Editing Interface offered by both the CMSs is similar and efficient.

2. Drag and Drop Functionality

Adopting an intuitive feature like drag and drop interface is quite popular with Squarespace and Wix offering a lot of those features.

Drupal comes with Panels module which can enable drag and drop functionality. Another Drupal module, Stacks, can help content editors build beautiful pages without any code.

Sitecore Experience Accelerator offers a UI which can be leveraged to drag and drop various reusable elements onto the page like text, video, image, JS widgets and many more.

Inference: Both the CMS excel at drag and drop feature offering.

3. Granular Editing

In Drupal, monolithic content is broken up with the help of Paragraphs module that allows end users to select on-the-fly between predefined paragraph types independent from one another. The paragraph type is any unit of content such as a text block, slideshow, image etc. Entity Construction Kit, another Drupal module, offers an alternative solution to edit with more granularity and reuse.

Paragraphs module in action

Sitecore allows the content to be broken up into smaller pieces instead of one monolithic body. This, again, offers more granular control and reuse of content.

Inference: Granularity while content editing is possible with both Drupal and Sitecore.

4. Grouping of content

Drupal offers flexibility in the way display of grouping of its content is done. It is because of its highly structured content and the Views module as part of its core.

Views module in action

In addition to basic filtering, Views can also filter on context like determining the logged-in user, knowing what parameters were passed into the URL and many more.

Views also display a grouping with elements of multiple disparate data sources with a common element like the grouping of blogs written by authors from a particular set of magazines. It is possible to filter the search results further by a number of elements constituting author, tag, field etc.

Sitecore displays a grouping of content items using its Search utility. Search results can be displayed in multiple view types constituting image view, list view, and grid view. It can be filtered down further by numerous elements like the author, tag, field etc.


Inference: Drupal offers more power in the grouping of content than Sitecore.

5. Layout Configuration

Drupal provides the Layout module that helps in the provision of author-controlled layouts across several devices. It does so by decoupling layouts from themes created by the developer.


Also, the experimental Layout Builder module in the recent release of Drupal 8.6 supports per-display customisations for defining layouts with dynamic sections. It also helps in creating one-off blocks for a specific layout that won’t show up in the global block list. This is essential for things like a promotion that is only visible in the single landing page.

Another Drupal module, Display Suite, lets content editors place the fields like paragraphs, images etc. in the required region of the page. It can, then, choose from several predefined layouts for any content type.


Also, Drupal’s Panels module lets the user select layouts without ever leaving the page.


Sitecore does not let users do in-page layout editing but it does offer a wide array of multi-column grid layouts where each of the columns can be customised.

Sitecore also provides a tool called Splitter for creating row regions and customise columns where any layout can be customised with CSS.


Inference: Layout configurations options are excellent in both the CMSs.

Developer’s Eye View

Metric

Drupal

Sitecore

Skillset

Knowledge of PHP, Symfony, Twig, and YAML essential

Knowledge of C# and ASP.NET essential

Development in Drupal needs proficiency in HTML, CSS and JavaScript for the frontend and backend requires object-oriented PHP and MYSQL as the database. Drupal, typically but not necessarily, runs on LAMP stack with Linux as the OS and Apache as the web server. 

Knowledge of Symfony and the dependency injection design pattern is required for the Drupal backend. For theming, understanding of Twig is required and YAML should be known for the configuration of themes, distribution and modules.

Since Sitecore is friendly to Microsoft shops, it requires developers to have proficiency in .Net library, in particular, C# and ASP.NET in addition to HTML, CSS, and JavaScript. Microsoft SQL Server or MySQL covers the database part and the application server is IIS.

Inference: Both are completely different tech stack and very efficacious as well.

Hosting and Deployment

Metrics

Drupal

Sitecore

Hosting

Hosting-service agnostic

Typically hosted by Microsoft Azure

Deployment

Easy deployment

Relatively complex deployment

Drupal is hosting-service agnostic which can be deployed to any hosting service that supports PHP-based web applications. It stores the site configuration data in a consistent manner. It is easy to move configuration between environments like development, test and production environments.

Sitecore solutions are typically hosted by Microsoft Azure. To aid in deployment to Azure, Sitecore comes with an Azure toolkit consisting of ready-to-run command scripts, performance optimisation configurations, security essentials and many more. 

Inference: Being hosting-service agnostic, Drupal does the better job in this category.

Marketer’s Eye View

Metrics

Drupal

Sitecore

Marketing capability

Allows integration with best-of-breed third-party marketing tools

Comes with integrated marketing capabilities but third-party integrations not possible

Web personalisation

Drupal modules available for incorporating web personalisation features

Comes with integrated web personalisation features

E-commerce

Drupal commerce module helps in setting up e-commerce sites

Sitecore commerce helps in setting up e-commerce sites

Although Drupal core does not come with integrated marketing and analytics functionality, It does integrate well with major marketing automation platforms like Marketo and Pardot. Thus, Drupal gives power to marketing teams to choose tools that work best for their organisation.

Moreover, the Rules module helps in creating deep, personalised user experiences without the intervention of developers. Also, Acquia lift connector module provides integration to Acquia lift service incorporation best web personalisation strategies into the website.

Google Analytics module incorporates high-level analytics and reporting capabilities into Drupal.

For businesses, who are in need of setting up an e-commerce site, open source module Drupal Commerce suite of modules offer a great platform.

Sitecore comes with integrated marketing and analytics capabilities in its core. It allows users to easily set up marketing campaigns and campaign analytics. For instance, you can track the number of visitors on your site and the level of engagement of the traffic.


Also, Sitecore uses a rules-based interface to let digital marketers target content to specific users under certain conditions. With a feature called Engagement Plans, it can employ actions and triggers upon specific actions that are being met. Moreover, it manages Experience Profiles to track user behaviour.

Sitecore also offers dashboards and reports for monitoring page views, conversion rates, user engagement etc. which can be used for analysis.

However, the Forrester Wave: Web Content Management Systems, Q1 2017 report states that Sitecore’s practitioner’s tools like testing, optimisations, customer data profiles etc. for marketing needs do not compete against best-of-breed tools.

Sitecore also offers commerce capabilities by integrating with a suite of applications which is called Sitecore Commerce which is available for additional licensing costs.

Inference: Sitecore has in-built marketing analytics and personalisation capabilities which is not there in Drupal. But Sitecore’s inability to integrate with other wonderful marketing tools available in the market makes a strong case for Drupal’s third-party integration capabilities.

Business Constraints

Metric

Drupal

Sitecore

Industry-wide adoption

Relatively more market share and industry-wide adoption

Relatively less market share and industry-wide adoption

Business costs

Being open source, it is free to use

Incurs licensing costs and is priced very high

Vendor lock-in Vendor-agnostic Not vendor-agnostic Source: Similartech

Whether it is Top 1 million sites, Top 100k sites or the top 10k sites, Drupal has a lead over Sitecore. This is because Sitecore’s pricing is high as stated by Gartner Magic Quadrant for Web Content Management 2018. In comparison, Drupal and its contributed modules are absolutely free to use. However, Drupal involves costs for implementation and hosting like Sitecore.
Drupal has a plenitude of hosting options at virtually every price point.

Being an open source platform, Drupal is vendor-agnostic. In contrast, Sitecore, being a proprietary CMS, lands you in vendor lock-in incurring high costs.

Inference: When it comes to right decisions regarding business costs and efficient CMS for the digital business, Drupal beats Sitecore by a country mile.

Community Presence

Metric

Drupal

Sitecore

Community size

Larger community

Smaller community

Drupal community is gargantuan with more than millions of people across the globe of all the skills and backgrounds contributing towards the betterment of Drupal core.

With such a large community, the Drupal project is perpetually under a vast peer review with innumerable independent developers working on the project across the world. Peer-reviewed, community-created patches are rapidly built for Drupal and its modules. The community’s ethos of teamwork and volunteerism drive digital innovation and it keeps on working towards the integration of Drupal with new, trending futuristic technologies.

On the flip side, Sitecore has user forums for developers to support each other. But the comparatively smaller size of community makes it difficult to gain access to qualified developers.

Gartner Magic Quadrant for Web Content Management 2018 stated that Sitecore has a reputation for intricacy and relatively long implementation and deployment times. Some customers have complained about insufficient support resources from Sitecore during design and deployment stages. Also, inconsistency has been witnessed in implementation quality from its partners.

Inference: With a robust community presence, Drupal far exceeds in this category against Sitecore.

Conclusion

Drupal and Sitecore have been compared against various perspectives and both the CMSs have apparently grown over the years with loads of features to offer.

Technical comparisons have shown that Drupal and Sitecore are both content store backed object-oriented framework. However, Drupal’s ability in integrating with amazing third-party marketing tools and web personalisation tools should be considered which can be way better than what Sitecore offers as part of its integrated system.

Unlike Sitecore, Drupal is hosting-service agnostic and is relatively easier to deploy. No wonder, Drupal has witnessed more industry-wide adoption as compared to Sitecore.

More importantly, Business costs are a huge factor where Drupal, being open source, beats Sitecore by a big margin since Sitecore is priced very high.

Finally, Drupal, with a presence of an active community, provides seamless module extensions, quick mutual support, and rapid response to security threats. Unlike Sitecore, Drupal is vendor-agnostic and its smaller footprint ensures more scalability than Sitecore.

Choosing a CMS for a digital business involves business demands and strategies that state what’s best for their future endeavors. It is important to look at this analysis in terms of your organisational needs and make a decision accordingly.

At Opensense Labs, we have been pioneering in the Drupal Development and can help you transform your digital presence. Ping us at hello@opensenselabs.com to make the right decision vis-à-vis CMS selection.

blog banner blog image Drupal 8 Drupal vs Sitecore Drupal Drupal CMS Sitecore Sitecore CMS Web content management system Sitecore experience platform Sitecore experience accelerator content editor Marketer Digital marketer Drupal community Content Management System drupal security Decoupled Drupal Drupal Multilingual Drupal accessibility Drupal performance Drupal scalability Drupal multisite Responsive web design mobile-first drupal Drupal development Drupal hosting Drupal deployment web personalisation Blog Type Articles Is it a good read ? On
Categories: Drupal

ARREA-Systems: Drupal 8 composer installation on EC2 with Ubuntu 18.04 LTS

21 September 2018 - 6:31am
Drupal 8 composer installation on EC2 with Ubuntu 18.04 LTS Fri, 09/21/2018 - 21:31 In this post we will share our experience with installing a Drupal 8 application on an Amazon EC2 server with latest Ubuntu 18.04 LTS. Installing Drupal with composer greatly simplify system maintenance and further update.
Categories: Drupal

OpenSense Labs: CMS Comparison 2018: Drupal vs Umbraco

21 September 2018 - 6:31am
CMS Comparison 2018: Drupal vs Umbraco Akshita Fri, 09/21/2018 - 19:01

Like every organization, you want yours to build around consistent and successful marketing operations. The choice of your CMS has a lot to do with the execution of the successful marketing campaigns. 

Dynamic organizational goals need dynamic sites. Which raises the bar high when selecting the CMS of your choice. 

Comes along the cost involved in all aspects. 

In the comparison series, today, we have Drupal (open source software) vs Umbraco (proprietary software).

Here’s to choose between Drupal and Umbraco. Which one serves your needs better? Read on to know more. 

But first, let’s have a look at the market share of each CMS. 

Market Share of Umbraco vs Drupal  Source: W3TechsSource: W3TechsSource: Similartech


Drupal has better usage coverage in more websites categories. Including Business & Industry, Arts & Entertainment, People & Society, Career & Education, and 242 other categories. In other words Umbraco hasn't got a lead over Drupal in any websites category.

Let’s get to the actual comparison. 

Round One: The Cost

Umbraco is actually an open source but it heavily relies on proprietary software. Umbraco add-ons range from free to a licensing fee either per domain, per server, or a lifetime license. The licensing is covered under MIT license which means you can do whatever you want as long as you include the original copyright and license notice in any copy of the software/source. 

Drupal, on the other hand, is an open source software. Free to use, re-use, and distribute. Drupal modules (add ons) are free too. 

The Drupal.org (official Drupal website) writes it as “...It's built on principles like collaboration, globalism, and innovation. It's distributed under the terms of the GNU General Public License (GPL). There are no licensing fees, ever. Drupal will always be free.”

Drupal Wins!


Round Two: Editing Experience

At the heart of marketing lies content. 

A marketing CMS streamlines the work involved in creating new content in unprecedented ways. That is why your CMS needs to offer the right and intuitive kind of editing experience. 

Creating content is easy in Drupal. Authoring with WYSIWYG features is designed to keep content creation neat and ordered. It provides the preview and drag-and-drop image uploads option. And when you need to make quick changes with in-context editing it is easier. 

Not just this, it is available in 100 languages. You don’t have to limit your audience to one specific demography or language. 

With the help of a CKEditor feature built specifically for Drupal, you can more easily control details like image alignment and captions right from the palm of your hand.

By default, the editor enforces clean markup and has formatting tools disabled. In case you are looking to change the settings or editing buttons you just need to use a drag-and-drop configuration UI for adding and removing editor buttons.

Editing is indeed intuitive in Umbraco. 

It is easier to just add the content and rearrange it accordingly. Working on Drupal’s text editor for more than a year, it has been a breath of fresh air (no offense, Drupal community). Adding multimedia content is easy.

Not just this, you can also see the preview of your content on different sites with Umbraco’ unique Responsive Preview. Even before it is live. 

This ensures that the visitors experience the content the way you want them to. Adjustments are easy to make too. 

Another thing that adds is that as an editor you can always rollback to an older version. It’s like an infinite undo button. (@Drupal we need this.)

The built-in Umbraco Image Cropper ensures that your images are presented as you want. With the focal point you simply point and click on the most important thing in the image and the image is automatically resized and cropped so as to fit perfectly on any device while ensuring that the most important thing stays in focus. 

Drupal’s Focal Point module promises similar functionality but it needs to be added later. 

Both offer the option to schedule the content. 

Umbraco Wins! 


Round Three: Practicing Accessibility

It is very important that as an organization you don’t happen to miss any of your audience, not even by ignorance. 

Drupal 8 provides web accessibility out-of-the-box and it is mandatory. Not just this you could even mark content regions with attributes with HTML5 semantic markup. 

Navigation is simpler by identifying menus, banners, and ancillary content areas, and letting keyboard users move through them more easily. Drupal 8 puts these methods to work in a new admin toolbar that adapts to different screen widths, and is easier for people with screen readers to use.

Umbraco, although, provides accessibility features like alt text sadly they are optional. Accessibility is something that should be part of the general web development practices, and clearly Drupal ensures the discrimination doesn’t happen, as a choice. 

Drupal Wins!


Round Four: Community support

The Drupal Community is one of the largest open source communities in the world. The community support involves documentation creation, sharing networking opportunities, and more. The sheer commitment to the open source spirit pushes the Drupal project forward.

Around 1,300 agencies provide Drupal services across the globe (according to Drupal.org) and more than 3,200 contributors are working right now to improve the platform. 

Community support of Umbraco is no different. The official website tells us that they currently have an active community of over 200,000 “Umbracians” worldwide ready to share their experience and knowledge with others.

They take pride that the online community transcends to and becomes real gatherings all over the world in the form of local Umbraco meetups and even Festivals. 

It’s a Tie!
 

Round Five: Installation Profile

Getting started with the Umbraco? It provides you with two options - Clean website and the one with a demo. However good the intentions were a clean slate can be a bit overwhelming for some, especially if they’re new to Umbraco (did I copy that?)

Drupal - the latest 8.6 version provides with a starter kit - a basic site with a sleek minimalistic design of a food magazine. Learn and play with it. Set the features as you want. 

This makes it easy to customize and see how Drupal features set in. See if it fits your needs. 

Drupal Wins!


Round Six: Headless/ API first

An API first or Headless CMS simply lets you hit publish and your changes will automatically update on mobile apps, on store displays, flat screens, websites, even on smart watches. 

A feature that you can’t afford to miss especially when there are numerous screen types today. 

Umbraco promises that its headless “helps you edit the content easily in one place, and it is updated across your webshop, website, campaign sites and on displays on every screen.” 
 
Umbraco Headless helps you enable power for other types of websites with Umbraco such as Single Page Application or websites running on a different platform than .NET. 

Problem? 

The community is very close to having everything in place for the official launch of Umbraco Headless. It is not yet launched. All Hype, Nothing Fruitful

Drupal 8 core has out-of-the-box REST API that allows operators to interact with content entities like taxonomy terms, nodes, users, and comments.

Drupal 8 has Contenta (a Drupal distribution) and Reservoir are two of the API first initiative. Various contributed modules allow you to add web services to a Drupal installation without the need for writing code. 

For instance, Developers can use Services module and the RESTful Web Services module to configure a server for enabling the Drupal installation to push or allow data that is to be pulled as needed with the help of REST API. No matter whether the action is a push or pull, Drupal is the services layer. 

Drupal Wins! 


Round Seven: Training and Understanding 

Umbraco.TV will help you go from zero to Umbraco hero at a pace that suits you. Our easy to follow online training videos + written docs will give you the fundamental knowledge to start building awesome Umbraco websites, without burning a hole in your pocket!

Drupal has a steep learning curve. True that! 

But the content is easily available on the web. You can access learning material on Acquia, OSTraining, and Drupalize.me. Leaving Drupalize.me aside both the sources are free and available for all. 

It’s a Tie!


Round Eight: Hosting and Deployment

Drupal is hosting-service agnostic which can be deployed to any hosting service that supports PHP-based web applications. It stores the site configuration data in a consistent manner. It is easy to move configuration between environments like development, test and production environments.

Umbraco solutions are typically hosted by Microsoft Azure. To aid in deployment to Azure, Umbraco comes with an Azure toolkit consisting of ready-to-run command scripts, performance optimisation configurations, security essentials and many more. 

Being hosting-service agnostic, Drupal does the better job in this category.

Drupal Wins!


Conclusion

Every CMS has its own set of advantages. The choice of CMS is generally influenced by what your web project’s requirements are. The questions that follow are: What functionality or features are needed? 

In my opinion, Drupal has a bonus point for maintaining a modules directory that lets you search and manage the content. 

It's easier to customize components—views, lists, blocks, admin tools, and more—than ever before. Control how data is displayed without using a single line of code.

Drop a mail at hello@opensenselabs.com to discuss your business goals.

blog banner blog image Blog Type Articles Is it a good read ? On
Categories: Drupal

OPTASY: Media Handling in Drupal 8.6.0: 4 New Features that Will Enhance Your Media Management Experience in Drupal

21 September 2018 - 4:05am
Media Handling in Drupal 8.6.0: 4 New Features that Will Enhance Your Media Management Experience in Drupal silviu.serdaru Fri, 09/21/2018 - 11:05

The media management experience had been one of the well-known sources of frustration for Drupal content editors for a long time. For, let's face it: Drupal's out-of-the-box media support was just... basic. But not anymore: there are new exciting features for media handling in Drupal 8.6.0 that will dramatically change the way you manage your media assets on your Drupal website!

Now, let's take a sneak peek at these most-anticipated media handling features that Drupal 8.6.0 comes equipped with:
 

Categories: Drupal

Droptica: Case Study: How to archive a website created in Drupal 8 to HTML?

21 September 2018 - 2:56am
What to do with an old, outdated website that you would like to keep online? The perfect solution is to archive it to pure HTML code. We will demonstrate it on the example of a drupalcamp.pl website created in Droopler, based on Drupal 8.
Categories: Drupal

Agiledrop.com Blog: Our blog post from August 2018

21 September 2018 - 1:52am
You have already seen what Drupal blogs were trending in previous months, and now it is time to look at all the blog posts we’ve written. Here are the blog topics we covered in August. READ MORE
Categories: Drupal

Chocolate Lily: Managing Shared Configuration Part 5: Updating from Extensions

20 September 2018 - 11:29am

This is the fifth installment in a series presenting work on shared configuration that comes out of the Drutopia initiative and related efforts. To catch up, see Part 1, Configuration Providers, Part 2, Configuration Snapshots, Part 3, Respecting Customizations, and Part 4, Configuration Alters.

In this installment we'll start to pull it all together.

Paraphrasing a bit from Part 1, we described a key problem this way:

How can I update my site so that I have all the latest configuration changes from a distribution--while still retaining any customizations I made?

In Part 1 we mentioned Fabian Bircher's widely used Configuration Split module and its enabling API module, Config Filter, returning in Part 3 to give a more detailed introduction. In Part 2, we summarized the API and accompanying user interface that core provides for staging configuration. Here we'll take a deep dive into how we can merge in configuration updates from installed extensions through an approach that's built on Config Filter and closely parallels core's configuration staging.

Categories: Drupal

Mediacurrent: The State of Drupal in 2019

20 September 2018 - 10:27am

As we enter the month of September and start planning for 2019, it’s a good time to take stock of where Drupal is as a project and see where it’s headed next year and beyond.

Dries Buytaert, founder of Drupal, recently wrote his thoughts around the timeline for Drupal 9 and “end of life” for Drupal 7 and 8. We will look at current Drupal 8 adoption and assess where we sit in 2019 as well.

An important part of this discussion that deserves attention is the rise of Javascript as a programming language, in particular, the rise of React.js. This technology has put CMSs like Drupal in an interesting position. We will look at how React/Javascript are evolving the web and assess what that means for the future of Drupal.

Finally, we will wrap up with thoughts on what these changes mean for both developers and organizations that use Drupal today or evaluating Drupal.

Drupal 8 Adoption

As mentioned previously, Dries has offered his thoughts on the proposed timeline for Drupal 9 in a recent blog entry on his website (see below).

In early September Drupal 8 released version 8.6.0 which included major improvements to the layout system, new media features, and better migration support. This is in addition to many other improvements that have been released since Drupal 8.0 was first unveiled in late 2015.

In terms of adoption, Drupal has picked up steam with 51% growth from April 2017 to April 2018.

Dries Keynote Drupalcon 2018

As encouraging is that news is, it’s still should be noted that Drupal 7’s popularity still far exceeds Drupal 8 both in current usage (800k compared to 210k+ sites) and in terms of growth year over year. 

Drupal’s weekly project usage from August, 2018

Drupal 7 will reach its end of life likely around November 2021 with paid support extending the lifetime with commercial support (as was the case with Drupal 6). Will Drupal 8 reach the level of usage and popularity D7 has? Perhaps not but that is largely due to focus on more robust, “enterprise” level features.

Drupal as a CMS sits largely in between Wordpress and enterprise proprietary CMSs like Adobe CMS and Sitecore in the marketplace. With the release of Drupal 8, the project moved more into the direction of enterprise features (which could explain some of the fall-off in adoption).

Pantheon had two excellent presentations (also at Drupalcon Nashville) that dive deeper into Drupal’s position in relation to other projects, most notably Wordpress. I would recommend watching WordPress vs Drupal: How the website industry is evolving and What's possible with WordPress 5.0 for more information on this topic.

According to builtwith.com, Drupal still has a sizable chunk of Alexa’s Top Million Sites. It should also be noted that Drupal does better the higher you go up the list of those sites which underscores the project’s focus on the enterprise.

CMS market share (builtwith.com)

 

Drupal usage statistics (builtwith.com)

With the release of Drupal 8, Drupal’s target audience started consolidating more towards the enterprise user. In the future Drupal’s success as a project will be tied more closely to performance against platforms like Adobe CMS and Sitecore in the marketplace.

React (and Javascript) Take Over the World

The thing about Javascript is that it’s been around forever (in tech terms) but recently has taken off. I won’t detail all the reasons here. Seth Brown from Lullabot has one of the best write-ups I have seen from a Drupal community perspective. In short, the ability now to run Javascript both in the browser and on the server (Node.js) has led the surge in Javascript development. Github shows us that more projects are built with Javascript than any other technology and Stack Overflow’s survey tells us that Javascript is the current language of choice.

Stack Overflow 2018 survey results

Github projects 2018

Dries recognizes the importance of Javascript and has spoken about this recently at MIT. In a bit, we will look at some of Dries’ ideas for the future in relation to the Drupal project.

A few years ago we saw several Javascript frameworks pop up. These became very popular for single page applications (SPA) but also had broader appeal because they could make any website feel more interactive. React.js & Ember.js were both released in 2015 and Angular.js is older but has started getting more attention around the same time.

A big issue that needed to be solved with these frameworks was how to address SEO. Initially, these frameworks only rendered the page in the browser which meant site content was largely hidden from search engines. For SPA’s this was not necessarily a deal breaker but this limited the broader adoption of this technology.

Only fairly recently have we seen solutions that are able to use the same framework to serve pages both in the browser and on the server. Why do I bring this up? Because this has been one of the more difficult challenges and React.js addresses it better than any other framework. There are many reasons why React.js adoption is exploding but this is why I believe React is king.

The State of Javascript report from 2017 is often referenced to illustrate React’s popularity (see below):

John Hannah also has some great graphs on javascriptreport.com that demonstrate React’s dominance in this space (see below).

Npm downloads by technology (1 month)

Npm downloads by technology (1 year)

Finally it should be noted that Facebook’s technology, GraphQL paired with React.js is also on the rise and intertwined with the growth of this technology. GraphQL will come into play when we look at how CMSs are adapting to the surge in Javascript and Frontend frameworks.

React and the CMS

Is React compatible with CMSs of ‘ole (e.g. Wordpress, Drupal, etc.)? Well, yes and no. You can integrate React.js with a Drupal or Wordpress theme like you can many other technologies. In fact, it’s very likely that Drupal’s admin interface will run on React at some point in the future. There is already an effort underway by core maintainers to do so. Whether or not the admin will be fully decoupled is an open question. 

Another example of React admin integration is none other than Wordpress’ implementation of React.js to create the much anticipated Gutenberg WYSIWYG editor.

Gutenberg editor

In terms of websites in the wild using React with Drupal, there have been solutions out there (TWC, NBA, and others) for many years that use Drupal in a “progressively decoupled” way. The “progressive” approach will still exist as an option in years to come. Dries wrote about this recently in his blog post entitled “How to decouple Drupal in 2018.”

The problem I have with this type of solution is that sometimes you get the best (and worst) of both worlds trying to bolt on a Javascript framework onto a classic templating system. The truth is that Drupal’s templating theme layer is going to have trouble adapting to the new world we now live in (addressed in detail at Drupalcon’s “Farewell to Twig”). 

The real power of React is when you can combine it with GraphQL, React router and other pieces to create a highly performant, interactive experience that users will demand in years to come. To accomplish this type of app-like experience, developers are increasingly looking to API’s to address this dilemma, which we will examine next.

CMS as an API

The last couple of years there have been many Cloud CMS-as-an-API services pop up that have been generating some attention (Contentful might be the most popular). At this time it doesn’t appear that these API’s have disrupted market share for Wordpress & Drupal but they do signify a movement towards the idea of using a CMS as a content service. 

The “Decoupled” movement in the Drupal community (previously known as “Headless”) has been a big topic of conversation for a couple of years now. Mediacurrent’s own Matt Davis has helped organize two “Decoupled Days” events to help the Drupal community consolidate ideas and approaches. Projects like Contenta CMS have helped advance solutions around a decoupled architecture. Dries has also addressed Drupal’s progress towards an “API-first” approach recently on his blog.

While cloud services like Contentful are intriguing there is still no better content modeling tool that Drupal. Additionally, Drupal 8 is already well underway to support JSON API and GraphQL, with the potential to move those modules into core in the near future.

As I look at the landscape of the modern technology stack, I believe Drupal will flourish in the enterprise space as a strong content API paired with the leading Javascript Frontend. React & GraphQL have emerged as the leading candidates to be that Frontend of record.

Next, we will look at a relatively new entrant to the family, JAM stacks, and see where they fit in with Drupal (if at all?) in the future.

JAMStacks - The Silver Bullet?

The popularity of Netlify hosting and static generators has created some buzz in the Drupal community, particularly Gatsby.js, which we will examine in a moment.

Netlify provides some great tooling for static hosted sites and even offers its own cloud CMS. Mediacurrent actually hosts our own website (Mediacurrent.com) on Netlify. Mediacurrent.com runs on Jekyll which integrates with a Drupal 8 backend so we are well aware of some of the benefits and drawbacks of running a static site.

Where Drupal fits into the JAM stack is as the ‘A’ (for API), with ‘J’ being the Javascript Frontend (i.e. React) and ‘M’ being the statically generated markup. Back in 2016 we liked this idea and settled on Jekyll as the tool of choice for our rebuild as it was the most popular and well supported project at the time.

Since then Gatsby.js has risen dramatically in popularity and has a robust source plugin system that enables it to be used as a Frontend for many platforms including Drupal and Wordpress.

The creator of Gatsby, former Drupal developer Kyle Matthews recently spoke on the subject at Decoupled Days 2018. While it’s hard to know if JAM stacks like Gatsby having staying power in the years ahead they do have a lot of appeal in that they simplify many of the decoupled “hard problems” developers commonly run into. The question of scalability is an important one yet to be answered completely but the upside is tremendous. In a nutshell, Gatsby provides an amazingly performant, React/GraphQL solution that can pull in content from practically any source (including Drupal).

Do JAM stacks like Gatsby have staying power? Will these close the complexity gap that blocks more sites (large or not) from decoupling? We will have to stay tuned but the possibilities are intriguing.

Looking Ahead

We have examined the state of Drupal as a project, future release plans and how it is adapting towards a future that is “API First” that also fits well with the React world in which we now live. 

The main takeaway I would offer here is that Drupal, while still an amazing tool for managing content, is better suited as a technology paired with a leading Frontend like React. With the web evolving from monolithic systems to more of a services-type approach, it makes sense to use a best-in-class content modeling tool like Drupal with a best-in-class FE framework like React.js. 

What does that mean for the average Drupal developer? My advice to Drupal developers is to “Learn Javascript, deeply.” There is no time like the present to get more familiar with the latest and greatest technology including GraphQL.

For organizations evaluating Drupal, I do think the “Decoupled” approach should be strongly considered when planning your next redesign or build. That being said, it’s important to have an understanding of how the pieces fit together as well as the challenges and risk to any approach. This article attempts to present a high-level overview of the technology landscape and where it’s headed but every organization’s needs are unique. At Mediacurrent we work with clients to educate them on the best solution for their organization. 

Have questions or feedback? Hit me up at https://twitter.com/drupalninja/

Categories: Drupal

Palantir: Workbench Tabs in Drupal 8

20 September 2018 - 9:04am
Workbench Tabs in Drupal 8 brandt Thu, 09/20/2018 - 11:04 Bec White Sep 20, 2018

Workbench Tabs is here to help "Edit" tabs and Drupal messages into the Toolbar.

In his blog post outlining the roadmap to Drupal 9 published last week, Dries Buytaert states that “if you are on Drupal 8, you just have to keep your Drupal 8 site up-to-date and you'll be ready for Drupal 9.” The maturity of Drupal 8 and its solid upgrade path make this the time to migrate your site to Drupal 8.

We’re excited to announce that the Palantir team released a new Workbench module this month for Drupal 8 called Workbench Tabs. We have used this module to improve editorial usability on nearly all of our Drupal 8 projects, and it has been public on Github for a while now, but now it's available on Drupal.org!

What is Workbench?

Workbench is a suite of modules released by Palantir to help solve common editorial problems in Drupal. The core Workbench module is largely a collection of custom Views that create dashboards for content editors. Its widespread use by organizations in government, higher education, nonprofits, and media is a testament to the module suite, and its capabilities have been helping editorial teams manage workflows and permissions since Drupal 7.

What does Workbench Tabs do?

Workbench Tabs integrates local task tabs and Drupal messages into the Toolbar. What exactly does that mean?

  • Editorial usability is improved by placing the "Edit," "View," "Revisions," and "Delete" tabs in a consistent location
  • Custom themes don't need to place and style the local task tabs
  • Drupal messages will be separated from the content layout

 

++ to the Palantir team members that made this happen: Patrick, Ashley, Ken, Avi, and Bec.

Want to learn more about Workbench in Drupal 8? Drop us a line through our contact form, or reach out to us on Twitter @Palantir.

Community Development Drupal Workbench
Categories: Drupal

mark.ie: Responsive Images with PatternLab and Drupal - the easy way

20 September 2018 - 8:39am
Responsive Images with PatternLab and Drupal - the easy way

Responsive images in PatternLab get a bit of a bad rap sometimes, because they are tricky to have in PL and Drupal. Here's my "easy way" of achieving it.

markconroy Thu, 09/20/2018 - 16:39

This came up today in the DrupalTwig Slack (join it). A user wanted to know how to use responsive images with the Emulsify Drupal theme. I don't use the Emulsify theme (yet - I will soon), though Four Kitchens, the geniuses who created it, have responsive images built in. Recently I created my own - simple and rudimentary, but it works a treat.

I first create a "Responsive Image" pattern. In this I have two files - responsive-image.twig and responsive-image.yml. Here's the contents:

responsive-image.twig:

responsive-image.yml:

image_src_sets:
  join():
    - 'https://placeimg.com/500/500/nature 500w, '
    - 'https://placeimg.com/1000/750/nature 1000w, '
    - 'https://placeimg.com/1440/475/nature 1440w'

image_sizes: '(max-width: 600px) 100vw, (max-width: 960px) 100vw'

To use it in another component, I just call a variable and set that variable in the YML file.

For example, to call the hero image as a responsive image in my event component, I'll print this: {{ hero_image }}. Then in my corresponding event.yml file, I'll define the hero_image item like so:

hero_image:
  join():
    - include():
        pattern: 'basic-elements-responsive-image'
        with:
          image_src_sets:
            join():
              - 'https://placeimg.com/600/600/tech 500w, '
              - 'https://placeimg.com/1200/360/nature 1000w'

Then in my Drupal template I just swap my image field variable for the responsive image one, like this:

{% if node.field_hero_image.value %}
  {% set hero_image: content.field_hero_image %}
{% endif %}
{% include ... usual path to component stuff ... %}

Drupal then renders the image field using whatever settings I have given it in Drupal - presumably responsive image ones.

This post might not help you if you are using Emulsify, but it might help others who stumble upon it.

Categories: Drupal

Specbee: The Experts Speak - What makes Drupal 8 so appealing?

20 September 2018 - 6:12am

Drupal 8 is not just packed with features that alleviate digital experiences for the end user but is also making life easier for developers, content authors and site builders. So here are some insights from some of the top (and passionate) Drupal experts and developers on Drupal 8 and how it has significantly refined and eased the way they work.

Categories: Drupal

OSTraining: How to Integrate a Calendar in Drupal 8

20 September 2018 - 4:53am

One of our customers asked us how to integrate a calendar with events on their site.

The Calendar module is the most popular module in Drupal 7 with over 1 million downloads. Unfortunately, the module is still under development for Drupal 8.

Another option is the Full Calendar View module. This module is by far not as popular as Calendar, but it does its work well.

This tutorial will explain the usage of this module. Let’s start!

Categories: Drupal

myDropWizard.com: So, When Do I REALLY Need to Upgrade From Drupal 7?

19 September 2018 - 11:07pm

Drupal 8 was released on November 19, 2015 - nearly three years ago. The drastic architectural changes created a difficult upgrade path for those running Drupal 7. With the huge amount of investment in Drupal 7 over the previous 5 years, this set off shockwaves of fear across the Drupal ecosystem. Recently, Dries Buytaert, the project lead for Drupal, announced the planned launch of Drupal 9 in 2020. That signals the "End of Life" of Drupal 7 in November 2021. When do I need to upgrade?

By the way, that is more than ten years after the release of the first version of Drupal 7!

It's also the date of the "End of Life" of Drupal 8 (more on that later).

Categories: Drupal

TEN7 Blog's Drupal Posts: Episode 039: Drew Gorton

19 September 2018 - 1:50pm
Today, it is our privilege to be talking with Drew Gorton, Director of Developer Relations at Pantheon and long time web veteran. Here's what we're discussing in this podcast: Drew's history; Cherishing our kids; What is Prairie High School; Going to St. Olaf College; How to choose a college major or not; Teaching English in Japan; Learning to swim and function in an unknown culture; Starting a tech career in Japan of all places; Building world cultural exchange with websites; Building Gorton Studios; Access a database? We don't need no stinkin' ticket!; Contributing Backup and Migrate Drupal modules; NodeSquirrel; Becoming a part of the Pantheon family; The joy of leading wonderful teams; The joy of cooking; The nerd and his love of science fiction.
Categories: Drupal

Ashday's Digital Ecosystem and Development Tips: Drupal Module Spotlight: Webform for Drupal 8

19 September 2018 - 12:00pm
Webform in Drupal 7 was always one of the top 10 must-haves on any Drupal site. Then Drupal 8 came along, and Webform wasn’t in the picture at first. Luckily, Drupal 8 came with the contact module in core that took care of most form needs, and we lived without the Webform module.
Categories: Drupal

Nextide Blog: Automating HR Business Processes

19 September 2018 - 11:54am

Gartner recently released an interesting tech note discussing how automated business processes and online integration and transformation of business workflow should be a focus for businesses. By 2022, 50% of digital business technology platform projects will connect events to business outcomes using event-driven intelligent business process management suite (iBPMS)-oriented frameworks - here is a link to the Gartner article.

Categories: Drupal

Nextide Blog: Create a New Content Entity During Module Update

19 September 2018 - 11:54am

As Drupal module maintainers, we at Nextide need to be constantly updating our modules to add new features or patch issues.  Whether your module is available for download or is a custom module for a client site, you can't expect users to uninstall and reinstall it to pick up new features.  If you have data or configuration changes, update hooks are mandatory to learn.  This post will show how we created a new content entity in a Drupal update hook.

Categories: Drupal

Droptica: Droopler 1.3 allows you to make even better websites. See why it's worth using!

19 September 2018 - 7:08am
At Droptica we have always wanted to solve the problem of time-consuming creation of Drupal 8-based small pages from scratch. Finally, we have been able to achieve satisfactory results with Droopler. Version 1.3 is even better. Why did we make Droopler? We regularly make small pages for our needs (for example for marketing campaigns or events like DrupalCamp Poland) as well as for our clients. Making a small website from scratch is time-consuming with Drupal 8, especially if you compare it to Drupal 7 or WordPress. It takes a lot of time to create a nice template that will work well on mobile devices, be easy to expand and comfortable to change.
Categories: Drupal

Pages