Evolving Web: Drupal’s Roadmap for the Future: How it Benefits from Open Source Contribution
The value of open source isn’t simply free software. Open source brings the benefit of diverse perspectives. Contributors around the world offer their time and skill to make Drupal better, improving the end-product for everyone because it takes into account use cases and innovations that you might not have considered yet.
In the past year alone 7,800+ people contributed to launching Drupal 10, improving core features, and improving the library of contributed add-ons available.
The Drupal Association and the Drupal community work hard to foster this culture of contribution:
- Drupal’s Open Web Manifesto and Values and Principles uphold a strong culture of collaboration, experimentation, and iterative improvement.
- Drupal strategic initiatives encourage and empower contributors to channel their efforts into priority projects that drive the most meaningful, inclusive growth. You can find open Slack channels for each initiative on the Drupal Slack.
- Ease of contribution is improving thanks to ongoing efforts such as the Gitlab Acceleration initiative, which aims to streamline the code contribution process.
- Support for contributors is available in the form of the contributor guide, getting started page, contribution events, and DrupalCon contributor workshops.
As the Promote Drupal initiative lead, I’m privileged to work alongside a fantastic group of contributors—including designers, writers, marketers, and strategists—to enhance the Drupal brand and expand its reach. We aim to increase Drupal adoption, creating an even bigger community that achieves ever-better things.
There are many more Drupal initiatives, each with its own dedicated team. In October, I had the pleasure of presenting alongside several core initiative leads at the 2023 DrupalCon Lille in France.
In this article, I’ve shared key updates from the other core initiative leads. Read on to explore what they’re working towards, their challenges and progress, and how you (yes, you!) can get involved.
How are Drupal Initiatives Created?
Before we dive into updates from each initiative, let’s take a quick look at how Drupal initiatives are formed.
People within the Drupal community come together to work on various projects including Drupal core, contributed modules, themes, and distributions. Some of this work is organized as initiatives, where a group of people focus on a particular area of concern.
A Drupal initiative has three main stages:
- Proposed – the initiative is proposed by Dries or the Drupal community members
- Planned – detailed plans, goals, and a team are put together for the initiative
- Active – the initiative team begins the real work of delivering on its goals
Most initiatives are community initiatives, but a few become strategic initiatives. Strategic initiatives are chosen by Dries Buytaert, Drupal’s founder and Project Lead, according to the following criteria:
- The initiative will result in a breakthrough for Drupal
- It’s clearly linked with solid data, market research, and Drupal’s vision
- It’s high priority work that requires focused resources
- It involves collaboration among many stakeholders
Now let’s take a look at the great things being achieved by some of Drupal’s active initiatives, as well as the hard work that’s being done behind the scenes.
Admin UI Initiative
Drupal is well-known for empowering users to create complex solutions. But historically, this power has come hand-in-hand with a steep learning curve. As a result, Drupal has higher barriers for entry and many users aren’t leveraging its full potential.
The Admin UI initiative aims to make Drupal the tool of choice for ambitious site builders by creating a simpler, more intuitive user experience. Specific goals include:
- Improving fields functionality
- Building a better navigation experience
- Modernizing the UI design and information architecture
- Implementing features that are successful in Gin (an experimental admin theme)
- Providing more customizations such as accent colour and darkmode
- Developing the Project Browser module
- Implementing same-page preview for content editors
The work will be underpinned by thorough user research, including user interviews and personas. Could you help? Check out the following Drupal Slack channels for more information: #admin-ui, #dashboard, #field-ux, #gin, #layout, #preview, and #project-browser.
Drupal core initiative leads: (From left to right) Suzanne Dergacheva, Chris Wells, Fran-Garcia Linares, Mike Herchel, Sasha Eggenberger, Felip Manyer i Ballester, and Wim Leers.
Admin Toolbar Initiative
Drupal's administration menu, known as "the toolbar”, has remained largely unchanged over the years with only minor adjustments to its look and feel. The Admin Toolbar initiative aims to offer a better experience for content editors and site builders and streamline how they use Drupal.
Specific features of the new toolbar will include:
- New information architecture
- Smooth animations
- Consistent spacing
- Modern design
- Accessibility beyond WCAG standards
The Admin Toolbar team has already completed a considerable amount of design, testing, iteration, and prototyping work. As a result, the new toolbar features a collapsible and vertical layout that has received positive feedback from users.
There’s still plenty of work to be done and the team is looking for contributors who can help redo the content creation menu, conduct further UX and accessibility testing, manage the alpha release, and fix bugs. Check out the navigation project and join the #admin-ui channel in Drupal Slack to get involved.
Config Validation Initiative
Configuration management was introduced in Drupal 8, making it easier to deploy and track changes to configuration in a controlled way, along with changes to code. It separated content and configuration management. For example, you can move improvements to a blog content type from a development environment to the live environment, without touching the blog posts on the live website.
Drupal 8 also introduced validation constraints and an API-first approach. But there was a missing link: it wasn’t possible to modify configuration through Drupal's REST or JSON:API, because only content entities had validation constraints.
The Config Validation initiative aims to close this gap, with the ultimate goal of making 100% of Drupal core configurations validatable and making configuration management more robust. This will make it possible to ensure that configuration changes can be made cleanly through an API, and give more visibility to conflicts when developers are collaborating on related configuration.
These improvements lay essential groundwork for smoother deployments, automated updates, and headless applications. While it isn’t a strategic initiative itself, it will bolster several strategic initiatives like Recipes and Automatic Updates.
As recently as December 2022, only 4.5% of all config types were fully validatable. Today, that figure has increased to an impressive 8.8%. What’s more, the percentage of partially validatable config types has gone up from 27% to 53%!
Interested in contributing to the Config Validation initiative? Follow issues tagged with configuration schema and validation, and check out tools like the Config Inspector module.
Localize Port Initiative
Localize.drupal.org is a platform where people can help translate Drupal’s interface into more than a hundred different languages. This is really useful for ensuring that the admin UI is translated to the language of your content authors. It plays a central role in making Drupal accessible to people across the globe, leading to greater inclusivity and diversity of users. It means that you can install Drupal in the language of your choice and immediately see the interface in your language.
The Localize Port initiative is overhauling the Drupal Translations website with the aim of uniting translation communities and streamlining the contribution process. It’s also working to give translators more recognition, ensuring they’ll have contribution credits added to their drupal.org profiles for translation activity.
The initiative is currently in the first phase: migrating the site from Drupal 7 to Drupal 10. The second phase will bring new improvements to the platform such as an enhanced UI, statistics, and a multilingual glossary tool. There are also plans to bring back the Localization Client module, which enables users to submit translations from the local instance.
Could you help progress the Localize Port Initiative? The team is welcoming contributors to work on the initial port phase and the improvements phase. Documentation is available, including onboarding instructions and a roadmap. Check out the #localize channel on Drupal Slack to learn more.
Wim Leers, Senior Principal Software Engineer on the Drupal Acceleration Team at Acquia, presents an update on the Config Validation initiative.
GitLab CI Initiative
Along with improvements to Drupal itself, this initiative aims to create a better developer experience for contributing to Drupal. By making it easier to write, test, and deploy code, we encourage developers to get involved and make their work more efficient. One tool that modern developers expect is CI/CD (continuous integration and continuous delivery). GitLab CI is a popular tool for enabling CI/CD pipelines that enables automated testing to validate changes to code and ensure code quality. This includes compatibility tests for different versions of Drupal core, different environments, and merge requests on contribution projects.
GitLab CI replaces DrupalCI—which is now deprecated in Drupal core—offering better maintainability, extendibility, and detailed reporting. It’s already available for all contributed modules and implementing it couldn’t be easier. Simply add a predefined template through the UI with a few clicks. There’s no need to write even a single line of code.
Lots of hard work has gone into optimizing GitLab CI’s performance. The contributors improved run times so they are twice as fast as before, with some runs below 10 minutes—barely enough time for a coffee break!
The initiative is calling for contributors to help follow up on improvements and bugs, test PHP and database versions combinations, add CitLab CI to contrib modules, and move from patches to merge requests. Check out the #gitlab channel on Drupal Slack for details and meetings.
Project Browser Initiative
The Project Browser module empowers users to easily search, filter, review, and download the right modules for their needs without ever having to leave the Drupal admin UI. The idea for it has been in Drupal’s issue queue as far back as 2018, and was formally announced as an strategic initiative in 2021.
Its team operates as two groups: one is responsible for developing the product, and the other is responsible for advocating for the target audience.
The second team noticed that the source data on drupal.org was not ideally geared towards making information about projects easily findable and digestible in a project browser. So they identified three main touchpoints— icons, quick descriptions, and categorization—and implemented them for the top 100 modules. Contributors to this second team can add value by writing descriptions for a handful of modules without a huge time commitment.
The road ahead includes inclusion of the Project Browser in Drupal 10.3 core and a finalized UI for the beta version. Interested in helping out? The Project Browser team is on the lookout for contributors to help with things like usability, accessibility, maintenance, and logo design.
Joining Drupal on its Journey to Innovation
I hope that by now you can see how strategic initiatives empower the open source community to be a driving force behind innovation. Drupal is deliberately moving towards radical transformation—the kind that it has experienced only a handful of times before. Discover how this will impact your digital presence and how you can play a part in it. Read our article: Drupal is Giving You a Licence to Innovate. Here’s How to Use It.
//--> //--> + more awesome articles by Evolving Web
LN Webworks: How to use Ultimenu in Drupal
What is Ultimenu?
Ultimenu is the UltimatelyDeadSimple megamenu ever with dynamic region creation. An Ultimenu block is based on a menu. mainly we used Ultimenu to create the mobile menus. Ultimenu regions are based on the menu items. The result is a block contains regions containing blocks, as opposed to a region contains blocks.
How do we install Ultimenu?
Install the module with composer:
run command:
composer require 'drupal/ultimenu:^2.11'
After downloading, click extend and enable the module. No further dependencies are required.
BRAINSUM: How AI Raised Our Efficiency by 27%
We’ve been using multiple AI tools since their inception. We subscribed to ChatGPT and Midjourney and found them extremely useful in many scenarios. While ChatGPT proved its capabilities as a general writing assistant it wasn’t that accurate and up-to-date in coding. Midjourney turned out to be the best generator of illustration images - just check the one generated for this post. Now I’m writing about Github Copilot, the "AI pair programmer". Our initial goal was to experiment and evaluate to learn what’s the real value behind the hype.
Symphony Blog: Compress images before uploading in Drupal using DropzoneJS
When we was implementing a customer relationship management for a local client using Drupal, we faced this challege:
- The client wanted to manage records of his patients with many treatment images captured by his iPhone
- Each iPhone images can be large, 5 to 10MB depending on resolutions
- While we can't hold so many large images to the web server, the disk space will soon run out
So we have to find a way to resize and compress images quality on the client side before uploading so they won't place burdens to the web server.
LostCarPark Drupal Blog: Drupal Advent Calendar day 21 - PHP Attributes
It’s day 21, and our stockings are warming over the fireplace. Joe Shindelar (eojthebrave) joins us to open today’s door, and for the PHP developers among us, it will make a nice little stocking filler.
As of PHP 8.1, the PHP language has native support for attributes that are compatible with Drupal’s plugin system use case. As a result, Drupal will transition from the use of annotations to PHP attributes, to supply metadata and configuration for plugins. This will require developers to learn the new PHP attributes syntax, and update their existing code to use it. For now Drupal will continue…
Tags
LN Webworks: How to Migrate From WebSphere to Drupal 10
With the evolution of technology, businesses are actively transitioning to more efficient, reliable, and flexible solutions for their web platforms. Migrating from WebSphere to a cutting-edge CMS like Drupal 10 is a new trend stirred by the urge to adopt advanced technologies. If you wonder what makes Drupal 10 development a popular choice today, the answer lies in the CMS’s incredible features, flexibility, and scalability. Its top-notch cyber-security tools and supportive community also set the platform apart from the crowd. If you also aspire to ride the wave of technological advancement by migrating to Drupal 10, you’ll need to know the steps involved in the process.
LostCarPark Drupal Blog: Drupal Advent Calendar day 20 - Event Organizers Working Group (EOWG)
Once again, welcome back to the Drupal Advent Calendar. It’s day 20, and time to open our next door. Today Leslie Glynn (leslieg) joins us to talk about the Event Organizers Working Group (EOWG).
I bet a lot of you learned about Drupal and the awesome Drupal Community at a local Drupal event. I went to the Western Massachusetts Drupal Camp back in 2011 after I was assigned a Drupal website to support at work and had no idea what Drupal even was. I attended many great sessions, met a lot of folks in the local Drupal community and even purchased the “Definitive Guide to Drupal 7” (remember all…
Tags
SeanB: Introducing YAML Bundles: The easiest way to maintain your content types!
Let’s face it — manually creating and maintaining a lot of content types in Drupal can be a real pain. The repetitive nature of tasks, inconsistencies in field creation, and the time-consuming process of updating settings across multiple content types are familiar struggles for developers working in teams.
At TwelveBricks, we maintain sites with very different content models. Too much time was spent setting up and maintaining those models, so we finally decided to do something about it!
Enter YAML Bundles: A Developer’s new best friend
YAML Bundles is a pragmatic approach to streamlining content type management through YAML-based Drupal plugins. It allows developers to define fields and content types from custom modules, making it a lot easier to add or update fields and content types.
The module defines 3 important plugin types:
- Field types
By defining common field types and their form/display settings (like widgets and formatters), you can remove repetitive configuration from the bundle definitions. - Entity types
You can define common settings for entity types to remove even more repetitive configurations from the bundle definitions. We have also integrated support for a bunch of other contrib modules we often use, to save even more time. - Entity bundles
You can use the defined fields in entity bundles, complete with customizable form and display settings that can be overridden on a field-by-field basis. The default settings of the entity types can also be overridden if you need to.
The module ships with defaults for the most common field and entity types, but you can easily override them. We have tests, which we also used to document all the available plugin settings and options. You can check out the documentation in the plugin definitions of the yaml_bundles_test module.
YAML Bundles’ Drush Tools
To use the power of YAML bundles, we’ve added a couple of helpful Drush commands that will revolutionize your content type management.
drush yaml-bundles:create-bundles
This command uses the defined plugins to (re)create all the specified bundles, fields, and settings. Whether you’re starting from scratch or optimizing an existing configuration, this command ensures the seamless generation of all your content types with a single command.
drush yaml-bundles:create-bundle
You don’t have to use the bundle plugins if you don’t want to. For those who prefer a more hands-on approach, this command offers the flexibility to create a new content type directly through Drush.
drush yaml-bundles:create-field
This command simplifies the process of adding new fields to existing content types using default plugin configurations. With the ability to customize form and view displays, this command makes adding fields to different content types much easier.
Integrating the modules we all love
YAML Bundles comes with out-of-the-box support for several popular Drupal modules, including:
- Pathauto: Define path aliases for entities and bundles effortlessly.
- Content Translation: Translate fields, labels, and settings into multiple languages.
- Content Moderation: Integrate content types into existing workflows.
- Field Group: Group fields for your content type directly from the YAML plugins.
- Simple Sitemap: Ensure your entity/bundle is included in the sitemap.
- Maxlength: Define maximum lengths for text fields if needed.
- Layout Builder: Utilize layout builder for your entity/bundle.
- Search API: Index entities/bundles and defined fields using the powerful Search API.
Let’s define a content type
To define default settings and fields for an entity type in your custom module, create a [mymodule].yaml_bundles.entity_type.yml file. In this file, you can create all the defaults you need for the entity type.
# Add the default settings and fields for node types.node:
description: ''
langcode: en
# Make sure our plugin gets preference over the yaml_bundle plugin.
weight: 1
# Default content type settings.
new_revision: true
preview_mode: 0
display_submitted: false
# Enable content translation.
content_translation:
enabled: true
bundle_settings:
untranslatable_fields_hide: '1'
language_alterable: true
default_langcode: current_interface
# Add the content to the sitemap by default.
sitemap:
index: true
priority: 0.5
changefreq: 'weekly'
include_images: false
# Enable layout builder.
layout_builder: true
# Enable content moderation.
workflow: content
# Add the content to the default search index.
search_indexes:
- default
# Create the full and teaser view displays.
view_displays:
- teaser
# Add the default fields.
fields:
langcode:
label: Language
weight: -100
form_displays:
- default
title:
label: Title
search: true
search_boost: 20
weight: -98
form_displays:
- default
field_meta_description:
label: Meta description
type: text_plain
search: true
search_boost: 20
maxlength: 160
maxlength_label: 'The content is limited to @limit characters, remaining: <strong>@remaining</strong>'
weight: -25
form_displays:
- default
# Translate the default fields.
translations:
nl:
fields:
langcode:
label: Taal
title:
label: Titel
field_meta_description:
label: Metabeschrijving
maxlength_label: 'De inhoud is beperkt tot @limit tekens, resterend: <strong>@remaining</strong>'
de:
fields:
langcode:
label: Sprache
title:
label: Titel
field_meta_description:
label: Meta-Beschreibung
maxlength_label: 'Der Inhalt ist auf @limit-Zeichen beschränkt, verbleibend: <strong>@remaining</strong>'
To define a content type in your custom module, create a [mymodule].yaml_bundles.bundle.yml file. In this file, you can create all the bundle definitions you need for the bundle.
node.news:label: News
description: A description for the news type.
langcode: en
# Add generic node type settings.
help: Help text for the news bundle.
# Enable a custom path alias for the bundle. Requires the pathauto module to
# be enabled.
path: 'news/[node:title]'
# Configure the simple_sitemap settings for the bundle. Requires the
# simple_sitemap module to be enabled.
sitemap:
priority: 0.5
# Configure the search API index boost for the bundle. Requires the
# search_indexes to be configured and the search_api module to be enabled.
boost: 1.5
# Configure the fields for the bundle. For base fields, the field only needs
# a label. For custom fields, the type needs to be specified. The type
# configuration from the yaml_bundles.field_type plugins will be merged with
# the field configuration to allow the definition to be relatively simple.
# Generic defaults for a field type can be configured in the
# yaml_bundles.field_type plugins.
#
# See yaml_bundles.yaml_bundles.field_type.yml for the list of supported
# field types and their configuration properties.
fields:
field_date:
type: datetime
label: Date
required: false
search: true
search_boost: 1
cardinality: 1
field_default_value:
-
default_date_type: now
default_date: now
form_displays:
- default
view_displays:
- full
- teaser
field_body:
type: text_long
label: Text
required: true
search: true
search_boost: 1
form_displays:
- default
view_displays:
- full
field_image:
type: image
label: Image
required: true
search: true
form_displays:
- default
view_displays:
- full
- teaser
field_category:
type: list_string
label: Category
required: false
search: true
options:
category_1: Category 1
category_2: Category 2
form_displays:
- default
view_displays:
- full
- teaser
field_link:
type: link
label: Link
required: true
search: true
cardinality: 2
form_displays:
- default
view_displays:
- full
- teaser
That’s all folks!
We’re excited about the potential YAML Bundles brings to the Drupal ecosystem, and we can’t wait for you to experience the difference it makes in your projects. Please check it out and let us know what you think!
Download YAML Bundles | Documentation | Example plugins
Sponsored by TwelveBricks — The easiest CMS for your business
Building a new website can be a time-consuming and expensive process, but it doesn’t have to be. TwelveBricks offers an affordable and easy-to-use (Award-winning!) Content Management System (CMS) for a fixed monthly price.
We’ve optimized the workflow for editors so they can fully focus on their content without worrying about the appearance. With built-in analytics and extensive SEO tools, optimizing content becomes even easier. Each website can be delivered in just 2 days!
If you’re looking for a new website and don’t want to wait for months, spend a fortune, or compromise on quality, check out our website at https://www.twelvebricks.com/en.