Drupal Planet

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

Appnovation Technologies: Simple Website Approach Using a Headless CMS: Part 1

February 6, 2019 - 15:00
Simple Website Approach Using a Headless CMS: Part 1 I strongly believe that the path for innovation requires a mix of experimentation, sweat, and failure. Without experimenting with new solutions, new technologies, new tools, we are limiting our ability to improve, arresting our potential to be better, to be faster, and sadly ensuring that we stay rooted in systems, processes and...

OpenSense Labs: Adopting DevOps Model For Drupal Development

September 24, 2018 - 11:13
Adopting DevOps Model For Drupal Development Shankar Mon, 09/24/2018 - 09:43

Software and the internet have metamorphosed the world and its industries ranging from shopping to entertainment to banking. It is no longer something that just supports a business. Instead, it has become an integral part of every part of a business. Organisations interact with their customers through software that is delivered in the form of digital service or application and on all kinds of devices. They also leverage software to enhance operational efficiencies by transforming every part of the value chain. This is where DevOps plays a key role.


DevOps is having an astronomical role to play in the rapid IT service delivery mechanisms. And when it comes to Drupal development, DevOps can be instrumental in streamlining project delivery involving Drupal. Before we traverse deeper into how Drupal can benefit from DevOps, let’s look at this terminology called DevOps.

Evolution of DevOps


Sometime between 2007 and 2008, when IT operations and software development communities were vocal about some of the calamitous level of dysfunction in the industry, DevOps started to coalesce.
 
Developers and IT/Operations professionals had separate goals, separate department leadership, separate key performance indicators, and, most often than not, they worked on separate floors. As a result, isolated teams were only concerned about their own fiefdoms, long hours, botched-up releases and dissatisfied customers.

People like Patrick Dubois, Gene Kim and John Willis pioneered the evolution of DevOps model

‘There must be a better way’ was the notion that propelled the two communities coming together and talking about betterments in software deliveries. People like Patrick Dubois, Gene Kim and John Willis pioneered this conversation.
 
Therefore, what began in online forums and local meet-ups is now a significant theme in the software zeitgeist which is probably what brought you here!

What is DevOps and how does it work? "DevOps represent a change in IT culture, focusing on rapid IT service delivery through the adoption of agile, lean practices in the context of a system-oriented approach"

DevOps constitutes Dev which refers to software application development and Ops which denotes IT operations. DevOps is not a framework or a workflow but a culture that is overtaking the business world.

Gartner states that “DevOps represent a change in IT culture, focusing on rapid IT service delivery through the adoption of agile, lean practices in the context of a system-oriented approach. DevOps emphasizes people (and culture) and seeks to improve collaboration between operations and development teams. DevOps implementations utilize technology — especially automation tools that can leverage an increasingly programmable and dynamic infrastructure from a life cycle perspective”.

Development and operations teams are not siloed under a DevOps model. Sometimes, these two are teams are combined to form a single team where the engineers work across the entire application lifecycle ranging from development and testing to deployment and operations. Thus, engineers wind up developing a range of skills which are not limited to a single function.

Quality assurance and security teams may become more firmly incorporated in some DevOps models with development and operations and throughout the application lifecycle. When security becomes the point of focus for everyone on a DevOps team, this is sometimes called as DevSecOps.

These teams leverage practices for automating processes that have been, historically, manual and sluggish. They make use of tech stack and tooling which assist them while operating and evolving applications rapidly and reliably. These tools also help engineers autonomously accomplish tasks like deploying code or provisioning infrastructure thereby enhancing team’s velocity.

Benefits of DevOps Source: Algoworks

Incorporating DevOps into the business workflow brings in a lot of merits.

High velocity

Using DevOps, move at high velocity so that you can build digital innovations faster, adapt to altering markets better and grow more efficacious at driving business results. For instance, microservices and continuous delivery allow teams to take ownership of services and then swiftly release updates.

Scalability

Infrastructure and development processes can be operated and governed at scale. Automation and consistency assists in governing intricate and changing systems effectively and with less risk. For instance, infrastructure as a code assists in handling the development, testing and production environments in a repeatable and more efficacious manner.

Faster delivery

Enhance the frequency and pace of releases so that you can build innovate and improve your projects quicker. The faster you can release new features and fix bugs, the quicker you can respond to needs of customers and develop a competitive advantage. For instance, continuous integration and continuous delivery are the practices that can automate the release process right from the build stage to the deployment phase.

Reliable delivery

Quality of application updates and infrastructure alterations can be ensured so you can reliably deliver at a faster pace, thus, providing a positive experience to the end users. For instance, continuous integration and continuous delivery can be leveraged for testing each of the alterations and ensuring that it is functional and secure. Monitoring and logging practices assist you to be apprised of performance in real-time.

Security

DevOps model can be adopted without compromising on security by using automated compliance policies, fine-grained controls and configuration management mechanisms. For instance, defining and then tracking compliance at scale is possible using infrastructure as code and policy as code.

Collaborative efforts

More effective teams can be built as the DevOps model stresses on values such as ownership and accountability. Developers and operations team collaborate closely, share responsibilities, merge their workflows.

Best practices for the adoption of DevOps model Source: Cygnet Infotech

There are significant practices that help businesses to implement DevOps model in the best possible way and get the most out of it.

Performing small updates frequently

These updates are more incremental in nature in comparison to the occasional updates performed under traditional release practices. They assist teams to address bugs quicker as the teams can easily identify the last deployment that resulted in the error. Even though the cadence and size of updates may vary, the DevOps model helps in deploying updates more often than the firms who use traditional software development practices.

Using microservices architecture

Making use of microservices architecture helps firms in making their applications more pliable and allow faster innovation. Decoupling large, intricate systems into simple, autonomous projects is possible with microservices architecture. Applications are divided into many individual components or services where each of the services are scoped to a single purpose or function. They are operated independently of its peer services and the applications as a whole. Such an architecture minimises the coordination overhead of updating applications. When each of the services is paired with small, agile teams, businesses can move more swiftly.

Leveraging continuous integration and continuous delivery

Combination of microservices and enhanced release frequency might lead to numerous deployments which can pose operational hurdles. Hence, DevOps practices like continuous integration and continuous delivery help in resolving these issues and allow businesses to deliver faster.

Making use of infrastructure as code

Infrastructure automation practices like infrastructure as code and configuration management allows you to keep computing resources elastic and responsive to frequent alterations.

Monitoring and logging the workflow

Use of monitoring and logging allows the engineers to track the performance of applications and infrastructure thereby reacting swiftly to the issues.

Implementing DevOps model for Drupal development DevOps Dashboard Template | Source: Smartsheet

The DevOps movement is leading the way forward for higher quality Drupal projects, quicker delivery, happier team members, and satisfied clients for projects of any scale. A digital agency used a Drupal development process to outline key pieces to a reasonable, DevOps-based workflow irrespective of the hosting platform or the different tools you choose to use.

The DevOps movement is leading the way forward for higher quality Drupal projects, quicker delivery, happier team members, and satisfied clients for projects of any scale

The agency maintains a pre-configured Drupal 8 install profile that lives on Github which is also mirrored on Packagist. This helps in kickstarting all the new projects with a working theme, pre-configured content types, Media bundles, Paragraph bundles and other elements.

A solid local development workflow is integral to any continuous workflow environment. Developers build new features or fix bugs on their local machines and the alterations are pushed to Github for triggering several actions. The agency experimented with DrupalVM and Lando which offered easy, repeatable processes for enabling developers and contractors to easily spin up a local environment matching production environment.

For this agency, the build code for each project like composer.json and any custom modules or theme reside in Github. Every time a pull request is made, their code is automatically deployed to a continuous integration server and to a live web environment.

For incorporating modern DevOps techniques, it needed a programmable hosting platform to let developers and other systems like continuous integration server to automate and interact with the platform. It worked extensively with both Acquia and Pantheon hosting which offered a different set of tools.

It leveraged continuous integration server called Circle CI for automatically spin up and test a new version of the site every time the developer introduces a new functionality or a bug fix to the git repository.

Automated functionality tests are another important part of DevOps strategy which this agency used to a great extent. Each time a commit is pushed, a complete version of the site spins up on CircleCI which runs through a series of automated Behat tests for verifying key functionality. CircleCI automatically notifies the hosting environment if the tests pass thereby spinning up a new branch and a new copy of the site. When the Github pull request is submitted on that branch, the final CricleCI build is triggered. When the tests are successful, the code is automatically combined with the production site.

Future of DevOps

According to a Capgemini report, 60% of the companies have opted for DevOps model or are planning to do so eventually. That means DevOps is being widely accepted as a key component of a business strategy. As DevOps continues to grow, some of the future possibilities that are expected to transpire along with the increase in DevOps adoption is being outlined here.

Perpetual growth of DevSecOps

Much in the same way, DevOps has the objective of inculcating continuous delivery in the business workflow, DevSecOps expands this to include security. Looking forward, this trend of incorporation of security into the DevOps pipeline will make businesses more inclusive with security tools and practices becoming part of the early development cycle.

DevOps and IoT

Increasingly, hardware manufacturers working on IoT devices would see software as a significant component of their project. This comprises the integration of DevOps into their business workflow making it absolutely compulsory to have people perpetually work on both hardware and software designs.

Monitoring to become the new testing

At the current and future scale, it is a formidable task and impractical to test all conceivable scenarios at the end of the product cycle. Rather than doing this, it is much more worthy to monitor for live issues and rectify them in short cycles. Testing puts a limitation on what you may find as it required you to think of certain problems to look out for.

But, monitoring will bring up issues as they happen. Adoption of monitoring will permit companies to understand the way their software runs in real situations thereby offering quick information about their systems.

Kubernetes to become standard for cluster computing

More companies will join the project and offer services on top of their operating systems. Moreover, extensions will be made for running applications in the cloud. Many of the major cloud providers are starting to provide Kubernetes as a service. Even a serverless Kubernetes will be on offer where nodes are managed by the cloud provider thereby creating another level of abstraction and simplicity for the developers. This general advancement within Kubernetes will lead to an enhanced adoption of advanced monitoring, logging and metric studying within companies.

Removal of (server) operating systems as we know them

This trend links back to Kubernetes becoming a main operating system for the cloud and clusters/containers that means operating systems would be replaced by the ones that can run containers in a Kubernetes cluster. Furthermore, operating systems for hosts will face implications from containers as in these new environments they will no longer have a host.

Conclusion

Continued growth of DevOps into new industries is opening doors for incorporating new departments such as security, enhancement in product monitoring and the standardisation of Kubernetes for cluster computing. DevOps and its accompanying benefits will become the norm as the integration of more departments into the beginning of the product pipeline would transpire and a rise in monitoring would improve solutions and designs.

DevOps strategy would have a positive impact on Drupal development as well and improve the project timeline and delivery. Opensense Labs strongly believe in the digital innovation and can help you provide amazing digital experiences through Drupal development.

Tell us how you want us to be part of your digital transformation journey at hello@opensenselabs.com.

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

Finalist Drupal Blog: Improving the editor experience (as seen at Drupal Europe). Part two.

September 24, 2018 - 05:00

This is the second post about the latest developments regarding the editorial experience in Drupal 8 based on a couple of presentations at Drupal Europe 2018.

Gutenberg editor

One project that could make a huge difference in the way the editors perceive Drupal could be Gutenberg.

Gutenberg was being presented at Drupal Europe by the Norwegian agency Frontkom. This contrib module integrates Gutenberg, the React javascript editor that originated from Wordpress, into Drupal.

Gutenberg can be enabled on a per content type level and replaces the node edit form with a blank canvas where the editor can create content using Gutenberg blocks as shown in the demo.

By default, various types of blocks are available to the editor, such as headings, text paragraphs, images and Drupal blocks (like the ones for example provided by the Views module). Other Gutenberg blocks can be custom made and the authors are about to launch the Gutenberg Cloud, a library from where blocks via a UI in Drupal can be installed on your website.

What remained unclear form the presentation was how Gutenberg blocks are being stored in the database and whether the individual blocks can be retrieved in a structured way for example to expose it as a REST resource.

The plan is to launch Gutenberg at the end of this year.

The full presentation is available on Youtube:

Improve Paragraphs with lesser known features

More and more site builders implement Paragraphs to let the users build structured content in a very flexible way. Therefore it was great to see Milos Bovan of MD Systems demonstrate at Drupal Europe-about a couple of lesser known features.

Using the following features you can make Paragraphs even better than it already is.

  • Use the style plugin to give each paragraph a specific style that can be used for CSS styling. The style can be chosen from the node edit form.
  • Add paragraphs to a library so you can reuse them elsewhere in the site. A listing is available to show all the paragraphs that are available in the library. You can promote a paragraph to the library and change it once to have it automatically updated everywhere in the site. If you dont want that then unlink it from the library so that the changes do not affect the paragraphs elsewhere.
  • Use the drag and drop mode to make it easier to order the paragraphs on de entity edit form. In combination with the collapse mode you can drastically improve the paragraphs UI which, often can be quite messy.
  • Organize a long messy list of paragraph types creating type groups. In the UI these groups will become available as separate tabs and by using icons for the types you can make the UI a bit more intuitive.
  • Convert paragraph types. This will allow you for example to convert an existing unstructured text field into a structured card paragraph type.
Multistep forms

Multi Step forms are an important feature of a website or application as it gives users a much better experience when submitting their data. It increases the users motivation to finish filling in the form leading in the end to a much higher conversion rate.

The contrib module form steps seems to to a good job in managing the complexity of the multistep form.

Several contributed modules among them Webform, allow building a multistep form but they are often limited in scope, hard to customize or are simply only available for Drupal 7. Alternatively a multistep form can be achieved by writing your own custom code which could at some point lead to an unmaintainable situation.

The form step module on the other allows creating multistep forms by leveraging the new Drupal 8 core feature of form modes. Much like view mode, form modes are different ways of presenting a drupal form (for example a user profile form or a node edit form).

The Form steps modules, as demonstrated at Drupal Europe by the Drupal agency Actency , lets you create workflows where that are collections of different form modes so that you can present the user with a multistep form. Each step in the workflow is linked to a particular form mode of a specific content type. As a result the user creates several nodes (possibly from different content types) when he follows the steps of the multiforms.

The workflow also manages the progress bar of the multistep form, giving the user the option to navigate through the different steps of the form.

The form step seems to provide a robust solution to a feature that many of us would like implement or should starting to implement in our Drupal websites.

Hook 42: Considerations for Drupal and HubSpot Integration

September 24, 2018 - 03:10

HubSpot provides a powerful combination of customer relationship management (CRM) features and insights that can help organize and maintain business processes tied to customers. Drupal is a key digital platform for businesses, especially for inbound customer engagement, marketing initiatives, and 3rd party integrations. The two systems are highly complementary and deserve consideration for logically separating the responsibilities of digital engagement and customer relationship management. Additionally, both HubSpot and Drupal are very flexible and customizable. As an example, both systems support extensible data structures through custom fields in HubSpot and through the entity system in Drupal that allow for implementation-specific data to be stored and maintained.

mark.ie: 10 Thoughts on Running a Front-end Team for an Enterprise Website

September 22, 2018 - 20:55
10 Thoughts on Running a Front-end Team for an Enterprise Website

What would make for a first-class, enterprise-ready, front-end development team?

markconroy Sat, 09/22/2018 - 14:55 Table of Contents
  1. Regular Structured Communications
  2. Fewer Developers, More Focussed
  3. Use a Design System/Pattern Library
  4. One Component Per Design Feature
  5. Focus on Features, Not Breakpoints
  6. Automate Code Quality
  7. Front-end in Tandem with Site Building
  8. Regression Test
  9. Set Time Limit for Being Blocked
  10. Nominate Code Gatekeeper
Regular Structured Communications

There can be a tendency to presume everyone knows what they are doing and should be allowed to work on their own initiative. This is a tendency I agree with, but it’s also of utmost importance to make sure others on the team also know what each person is working on.

Without regular, structured communications (at least weekly, if not daily, meetings), it’s quite possible for one person to work on a component (say a “tile” component) while another person works on another component (say a “card” component) and both of these components to be the exact same time. Except now we have to versions of the same component, just different names for them.

Without regular, structured communications, each team member is working in a silo, not aware of the whole of the project, and being responsible for only their section. This makes it harder to integrate each section of the site into each other. It will also mean it takes more time for the diligent developer to understand each part of the project if they wish to. Regular meetings save time.

One of the great things about regular, structured communications is that they lend themselves very well to team building. Let your team know you are very proud of how much has been achieved this sprint. Congratulate someone for solving a particular tricky issue. Allow a space for people to vent any issues they might be having.

Fewer Developers, More Focussed

It’s a truism and a paradox, but the more developers we have on a project, the longer the project is going to take to complete. Every new developer takes time to get up to speed with the codebase and slows down the momentum of the other team members. This causes projects to go over-time and over-budget.

This is not to say we should have only one developer per project, but I would suggest keeping teams as small as possible. A small number of really focussed developers will work much faster (having such an intimate knowledge of the codebase, feature set, sprint goals, etc.) than a large team of developers working on many small features. A large team lends itself too easily to people changing someone else’s code not expecting there to be any ramifications, to people “fixing” up another’s code because it doesn’t meet coding standards or has a security issue – work that shouldn’t have to be redone.

Use a Design System/Pattern Library

Pattern library tools have become very popular in the past few years. They allow everyone to see an inventory of the different components the team has available to work with when building web pages.

The tool I have chosen to standardise on is PatternLab. There are many others. Check out the responses to this Tweet to see what other people are using:

They also allow us to show our clients what the designs will look like on real devices, rather than images of what they might look like in InVision or some other tool like that. For years, yes literally years, I’ve been talking at conferences extolling the virtues of using a ‘Design in the Browser’ approach to front-end development and against the practice of using static design tools (Photoshop/Sketch) to deliver designs to clients. By all means, use these tools to deliver the designs to your team, but let the team code up the designs to deliver to your client.

Clients should be sent URLs, not PDFs.

One Component Per Design Feature

Once we are all agreed that we are going to use a pattern library tool, we can then start coding up the features of the front-end. Often components have variations of themselves. An example could be a “Card” component which has an image at the top, followed by a headline; with a variation which has the headline on top followed by the image. In this case we might create a card component and also a card—reversed component.

Sometimes teams can fall into the trap of thinking that “everything” is a variation of a core component. So, for example, we might have a component which has an image on the left, a headline and some teaser text on the right and/or vice-versa. Surely we can just create a component variation such as card—columns and card—columns-reversed? Yes, we can. But then when we see another component that has the same layout, except the image is a different size, there is no teaser text, we have tags under the headline, etc., we are then going to need to make another variation of card— and yet another variation of card— and yet another variation of card— and so on. Technically this is possible, but in practice you are setting yourself up for a maintenance nightmare.

The reason each of these components might look like variations on a core component is because they designers are following brand guidelines and using the same font, same sizing and rhythm rules, same colour scheme, etc. When you think about it like that, everything should look similar – it’s all supposed to fit together, but that doesn’t mean everything is a variation of a core component.

If we want to create all the variations of display types based off one core component, we are going to have a large core file, with a lot of logic and clauses and “if this then that” statements, and an equally large CSS file to take consideration of all the variations. This makes it harder to read the code, harder for new developers to get on-boarded to the project, and harder to maintain.

My suggestion is to create one component per display type. Based on the examples above, we would have a card component and a columns component. My files in PatternLab might look like this:

/card
– card.twig
– card.js
– card.scss
– card.yml
– card~reversed.yml
– card~no-teaser-text.yml
– card~no-teaser--text-reversed.yml
– card.md

/columns
– columns.twig
– columns.js
– columns.scss
– columns.yml
– columns~reversed.yml
– columns~no-teaser-text.yml
– columns~no-teaser-text-reversed.yml
– columns.md

This means that all the functionality and styling for the card component is within the card directory. It’s a small core file, with only variations for the image to be top/bottom or for there to be teaser text/no teaser text – very obvious variations of the card. The core file should be easy to read (one CSS class will create the variations), and it’s specific enough to know exactly what this component does.

We can set up a regression test for each component very easily to catch any curveballs that might arise later. None should arise if we use correct BEM naming conventions so that all styling for .card is prefixed with .card and all styling for .columns is prefixed with .columns, like so:

.card { css for card container }
.card__image { css for the image in the card }
.card__headline { css for the headline in the card}

.columns { css for columns container }
.columns__image { css for the image in the columns }
.columns__headline { css for the headline in the columns}

Focus on Features, Not Breakpoints

The Unix philosophy says “do one thing, do it well”. Taking this as a guiding principle, we should focus on developing one feature and completing it (the “card” component, for example) before moving to the next one. Sometimes I talk with teams and they tell me they focus on the desktop first or on the mobile screen views first and try to get the whole website looking correct at one breakpoint before moving on to the next one. While much of the code might be fine for each breakpoint, going over the code to catch all the issues for other breakpoints is going to take longer than completing each feature and having them signed off.

Remember, signed-off features can have regression tests written against each breakpoint. It also means that if the site is going to go over time, it’s possible to launch with a smaller set of (completed) features, rather than a feature-complete website, the front-end of which does not meet all the brand guidelines.

Automate Code Quality

Following coding standards can take time. You write your code, you check back over it, you fix up the indentation and comments style. And – you still miss something. The simple fix? Using code sniffers and/or linters and/or combing tools to automate this for you.

I have CSSComb set up in all my projects, so every time I save a CSS or SCSS file, it’s automatically formatted to follow the (Drupal) coding standards. I use prettier for my JS files, so again, each time I save my file, it’s automatically formatted to meet our coding standards. I have php_codesniffer installed and set to (Drupal) coding standards, so it notifies me each time I have an indentation wrong or something like that.

Why is this important? This is important when working as part of a team to make sure everyone’s code looks the same. It makes it much easier to read code from other developers when it is formatted the same as your code. It’s even more important when you edit a file that someone else has worked on and then try to commit those changes to git. How many of the changes were changes you made (that actually affect the code) and how many were just the csscomb or prettier auto-formatting your code? You want your git commits to be meaningful, so you only want the commit to announce the changes you have made.

What I do now on any file I need to work on is save it the moment I open it, so if another developer doesn’t have automated code checkers built-in, the file will format itself. Then I commit this save with the git commit message “running csscomb” or “running prettier”. After this, I make my changes and my commits are then meaningful – I can see the actual code I changed. This takes more time that it would if everyone just installed code formatting tools from the outset, and is something I think we should insist on for every project.

Front-end in Tandem with Site Building

The chances are that the designs are going to be sent to the client as Sketch files or PDFs or similar and not as PatternLab URLs (despite my best efforts to encourage this for years). Or maybe another agency won the contract to design the website and our agency won the contract to build/maintain it. If this is the case, by the time they get to the front-end developers, they are signed-off – a fait accompli.

Let’s turn this into a positive. As we are creating our front-end components (one component per design pattern, please!), we should also be building out the CMS functionality that this component will use. So, if we have a listing page showing teasers of events in a card display, then we should build out the fields (in Drupal or whatever CMS we use) that support this, and then create the configuration and templates needed to map 1-to-1 from Drupal to PatternLab.

This allows us to “dog food” our own work very early on. We can create our front-end and backend in tandem and make sure that both work seamlessly. We can ask our clients to sign-off on the front-end and CMS features at the same time; and we can then set up regression testing for the front-end and functional testing (with Behat or something else) for the backend. As the project progresses, we will have a featured-complete, fully-tested website and can move from feature to feature (or new feature to new feature during future phases of work) with less fear of things breaking when we make changes.

Regression Test

Here’s a joke: a css selector walks into a bar; a table in another bar across town falls over.

Writing front-end code can often be like playing Whack-A-Mole. It doesn’t have to be.

Regression testing is basically taking a screenshot of your website that you can use as a “reference” (this is what it is supposed to look like). Then, when you make a change, you can take automated screenshots of the site again to make sure that the only things changed were things you expected to change. The regression testing tool I use is BackstopJS.

An example: you have a header, a main content area, and a footer. You set up your reference shots when these are all signed off by the client. In a future sprint you are asked to change the main content area from 1220px wide to 1440px wide on desktops. You make the change, tell your regression testing tool to run the tests and then you get back a report showing you that the main content area is now wider than the header and the footer – as it should be. You see the header and footer were not affected so you can deploy this new item. Now, think about doing this for every component across your website! The regression testing suite will run all the tests in a matter of minutes (while you can be happily working on another feature – multitasking for the win!), whereas it could take you an hour to check everything and you might miss something.

Like automating code quality, automate regression testing: automate the boring things.

Set Time Limit for Being Blocked

If a developer is blocked on something and can’t figure out how to complete the task, that is time wasted. Developers need to know they can ask for advice and they need to know whom they should ask – probably the gatekeeper (see next section).

My general rule of thumb for this is: if I feel I am blocked and just looking at the screen for 15 minutes, I need to ask for help. If I haven’t an idea what to do to unblock myself and I’ve thought hard about it for 15 minutes, that’s enough of the company’s money spent on it.

Ask for help sooner rather than later so you can be as productive as possible.

Nominate Code Gatekeeper

If you need to have a large team of developers, you need to have a code gatekeeper: someone whose job it is to know what components are developed, what ones are in progress, and what is in the backlog.

The gatekeeper also needs to know who developed what component and in what manner, so any components that are re-usable are re-used and one-off components are kept to a minimum. It is the gatekeeper’s job to ensure that no component is developed more than once, just using different names (“card” and “tile” as we saw above).

When someone is blocked or unsure of something, they ask the gatekeeper for advice and guidance so they can continue working as soon as possible. As well as that, the gatekeeper can also step in and try to figure out a solution (or even a proof-of-concept for a solution) while the developer works on something else. When the gatekeeper has an approach figured out they can tell the developer about it and then the developer can get back to that feature as soon as possible. The gatekeeper is a pair of fresh eyes.

The gatekeeper might be the lead developer on the project or it could be a separate role. The gatekeeper should write as little code as possible for the actual production version of the site, and, rather, should focus on the high-level overview of the project and working on solutions to unblock developers.

Conclusion

That’s it. That’s my thoughts on putting together and running a front-end (or teams) that can effectively work on large, enterprise websites. If you have a small team or are a freelancer, I think what I have said above also holds true.

Any thoughts or comments, leave them below. Thanks.

Matt Glaman: Using multiple Solr cores with DDEV

September 22, 2018 - 09:23
Using multiple Solr cores with DDEV

If you want to have multiple Solr indexes using Search API, you need to have a core for each index instance. For my local development stack, I use DDEV. The documentation has a basic example for setting up a Solr service, but I had quite the fun time figuring out how to ensure multiple cores.

Finalist Drupal Blog: Drupal 8.6 shows its tasty features out of the box

September 22, 2018 - 05:00

When I was at Drupal Europe 2018, I had the opportunity to see the new Drupal core profile Umami being demonstrated. Umami is available in Drupal core since version 8.6 and it aims at demonstrating Drupal’s features.

Umami is an installation profile that shows anyone who is considering using Drupal (so called “evaluators”) what it can do out of the box.

It provides the content (recipes), configuration and the theme (including all resources like javascript, css, images and fonts) for a fictional Food magazine called “Umami”.

Umami has been developed by several members of the Drupal community over the last one and a half years and the result is quite impressive. It makes a huge difference from the out of the box experiences that we have become accustomed to in the past. We were used to be presented an empty screen in the layout of default themes Bartik, Garland or even Bluemarine.

It is important to note that Umami only uses Drupal core. So that means that no contributed modules (not even Paragraphs!!), no custom code and no experimental core modules (like the Layout builder) are included.

Besides that restriction, there were many other challenges such as the licensing of web fonts and whether to use British or American standards and wording in the recipes. This makes the end result even more impressive.

Umami is really meant as a demonstration and cannot be used as a starter kit for new sites. Future updates will not guarantee any backwards compatibility.

As soon as they are stable features of Drupal core will be expanded with, among others:

  • media library for easy organizing and adding images, videos and such;
  • layout builder for easy adding block content to a page;
  • content migration for importing the demo content. This feature depends on a CSV migration plugin to become available in core;

The developers did a great job in providing Drupal core for the first time in its history with tasty demo content out of the box!

Drupal Association blog: Drupal.org Digital Advertising Update

September 22, 2018 - 04:28

The Drupal Association is 4 years into our initiative to diversify revenue streams to make the Association more sustainable and less reliant on DrupalCon to fund all of our programs.  Monetization on Drupal.org itself is an important revenue stream that helps fund various Drupal.org initiatives and improvements

We’ve focused much of our effort creating new content that both serves new audiences and provides revenue opportunities, however, we’re still only monetizing roughly 20% of our total site traffic.  When we began, we outlined a few important guidelines for our efforts, including:

  • When possible, only monetize users who are logged out and not contributing to the Project.
  • Address the industry-wide shift to Programmatic Advertising, which is the automated buying and selling of digital advertising.

We’re piloting a new ad program to help us better achieve our monetization goals, while still respecting those users who actively contribute to the project.  We want to experiment with more traditional, high visibility banner ads that you typically see on other websites, such as 970 x 90 Leaderboard ads.  We also want to better leverage 3rd party ad networks and exchanges.  These new advertising placements will automatically check for two things before they display:  1) is the user an active contributor(based on contribution credits) and/or 2) is the user a Drupal Association Member.  If either of those are true, the ad won’t display.

New Ad Network Partner:  Carbon Ads
In addition to the pilot program above, we are also piloting a relationship with a new ad network sponsor, that is tailored to the audiences we serve. When we first launched advertising on Drupal.org, the community asked that ads remain relevant to the Drupal ecosystem. We agree that this is important, however, this makes it extremely difficult to leverage 3rd party ad exchanges like Google. While they offer category filters, it’s impossible to guarantee that every ad served will be relevant to Drupal.

Vertical-focused ad networks exist, although they’re becoming less common. We’re excited to announce that we’ve recently started working with Carbon Ads, a closed ad exchange that limits its advertisers to tech and developer focused advertising. They have a sales team of about 12 people working directly with companies like Microsoft, Slack, and Digital Ocean, and an advertising operations team that manages and uploads all ad creative themselves. This removes a lot of the risk that other self-serving ad platforms pose.

Why we love Carbon Ads:

  • They are a closed ad network (there’s far less risk of malicious, offensive, or unrelated ad content appearing on Drupal.org).
  • They are GDPR compliant.
  • They don’t track site visitors with cookies, nor collect their personal data for ad targeting. You can learn more about their data policy here.   The most sensitive data they collect is the IP address which they use to decide whether to show ads in a specific regions.  Furthermore, none of the data collected are stored permanently.
  • They come highly recommended from partner sites like Vue.js, Laravel, and Bootstrap.

It’s important that we fund Drupal.org improvements, and that we do so in a responsible way that respects the community. Thanks for taking the time to read about our initiatives, and please tell us your thoughts! 

We will be listening, identifying common themes and responding to feedback in about a week.
 

Hook 42: Hook 42 is off to the BADCamp Circus!

September 22, 2018 - 03:12

The BADCamp Circus is coming to town for 4 whole days! From cities near and far, Drupalists are converging in Berkeley very soon for this year’s circus-themed BADCamp!

Join Hook 42 under the bigtop for 3 unique sessions. We’ll be sharing our thoughts on redesigning the Stanford Cantor Arts Center website, accessibility tooling, and creating custom Drupal 8 modules. Of course, the whole team will be there too, collaborating with new and old friends alike.

Join us as we flex our Drupal muscles, perform daring acts of development, and add to the general merriment of the Drupal community. BADCamp 2018 is sure to not disappoint!

Evolving Web: Highlights of Drupal Europe

September 22, 2018 - 01:10

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

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

September 21, 2018 - 23:27

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!

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

September 21, 2018 - 21:32
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

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

September 21, 2018 - 20:31
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.

OpenSense Labs: CMS Comparison 2018: Drupal vs Umbraco

September 21, 2018 - 20:31
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

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

September 21, 2018 - 18:05
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:
 

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

September 21, 2018 - 16:56
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.

Agiledrop.com Blog: Our blog post from August 2018

September 21, 2018 - 15:52
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

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

September 21, 2018 - 01:29

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.

Mediacurrent: The State of Drupal in 2019

September 21, 2018 - 00:27

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/

Palantir: Workbench Tabs in Drupal 8

September 20, 2018 - 23:04
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