In Lisbon, steep slopes and sweeping vistas towering over placid waters and crowded ports characterize the topography of one of the most beautiful cities in Europe.
This year, the Portuguese capital played host to Drupal Developer Days, possibly the most important event for developers specializing in Drupal. Held at the University Institute of Lisbon, it was a conference not to be missed, with innumerable insights from Drupal core contributors and maintainers.
As the summer reaches its peak and beachgoers throng the seaside, the Experience Express stopped in this beach-filled city to sit and sprint with developers as they improve Drupal on many different fronts. In this blog post, we take a tour through some of the most compelling talks, covering topics like decoupled Drupal, progress in core initiatives, and dynamic migrations.
Should Drupal 9 be decoupled by design?
I joined forces with Lauri Eskola (Senior Front-end Developer at Acquia) to ask several questions about the future of Drupal that were intended to generate substantial discussion. We weren't disappointed, as many attendees expressed eloquent perspectives on who Drupal is meant for, how decoupled Drupal has impacted their own prospects, and where we see Drupal's specialties continuing to shine.
Most forcefully, Lauri and I argued that in the lead-up to Drupal 9, exploring a third standard installation profile to accompany Standard and Minimal — namely a Decoupled profile — would be key to attracting those who wish to use Drupal solely as an API-first back end. In the process, we cited examples from the community such as Contenta and Reservoir, and competitors from the wider market like Contentful.
We also summarized some of the vision behind the redoubled efforts to reinvent the Drupal administrative interface, which is seeing some incredible talent join the React-powered experimentation efforts. But Lauri and I also expressed our concern about editors and site builders who have come to expect improvement in administrative tools on the public-facing back end as well — contextual tools like in-place editing, contextual links, and preview.
A sneak peek into new features in Drupal 8.6
Another colleague of mine, Gábor Hojtsy (Initiative Coordinator Coordinator for Drupal), gave a stirring and inspirational keynote encouraging the audience to get involved in making Drupal 8.6 a success when it is released. While Gábor outlined the progress of far too many initiatives for the confines of this blog post, there were several that I wanted to emphasize here as well.
The API-first initiative has been making quick work of some of the most intractable issues in Drupal's web services, and with JSON API (see my blog post on the topic) slated to enter core as a stable module in Drupal 8.7, the importance of their efforts cannot be understated. Now with robust test coverage in the core REST API, developers can rest easier. Gábor provided several examples of how contributors can get involved, namely through the #contenta, #decoupled, #graphql, and #jsonapi channels on Drupal's Slack organization.
Gábor also shined a spotlight on the work of the initiative to Composer-ify core and provide automatic updates, which is important for Drupal's maintainer experience and user retention. Other software projects such as WordPress have long had automatic updates, but many in Drupal are working hard to address a uniquely challenging problem that has confounded contributors throughout Drupal's long history.
Finally, Gábor highlighted a few initiatives that I'm following as well, namely the Config 2.0 initiative which meets at 2pm UTC in the #config Slack channel and aims to reinvent the configuration management system for upcoming releases of Drupal. He also lauded the work of the Layout Initiative, led by my colleagues Tim Plunkett and Emilie Nouveau, whose Layout Builder is in beta and will be developed in the open in Drupal 8.6 with excited anticipation from all sectors of the Drupal community.
Dynamic migrations to accelerate moves to Drupal 8
Mohit Aghera (Drupal Developer at Axelerant) presented an informative and highly edifying session about dynamic migrations in Drupal and how to take advantage of them. In the process, Mohit offered a comprehensive introduction to Drupal 8's migration system and some of the unique ways developers can interact with it to facilitate complex migrations from version to version.
First, Mohit provided a summary of the migration system by highlighting the three types of migration plugins — source plugins, process plugins, and destination plugins (which specify where content should be migrated to). In a typical migration, every migration is defined as migration plugins, with source plugins responsible for extracting data, process plugins responsible for transforming data, and destination plugins responsible for loading data.
Next, Mohit explained derivatives, which are a useful yet underutilized new feature of Drupal 8's migration system. Simply put, derivatives allow us to generate multiple instances of certain migration plugins automatically, much like how creating a menu in Drupal 8 also automatically adds a block that houses the created menu.
Finally, Mohit discussed the differences between the two primary approaches to migration, namely migration as configuration entities and migration templates. In the former, migrations as configuration entities can benefit from their similarity to other configuration entities and are easy to write and run without custom logic. On the other hand, migrations using templates can be more flexible when there is a great deal of variation, due to the ability to generate dynamic migrations using dynamic templates.
Thanks to developer-focused events like Drupal Developer Days, we in the Drupal community can learn from the most respected minds that maintain our software. But more importantly, Drupal Developer Days' unparalleled emphasis on contribution and giving back distinguish it from others on the conference circuit. The Lisbon edition this year was no exception.
Our next event on the Experience Express won't be for a little while. In the meantime, I'll be resurfacing with more content on API-first implementations and how you can decouple Drupal successfully without losing your own head. All aboard!