From September 10 to 14, 2018, Drupal Europe took place. The community-organized European Drupal event, replacing DrupalCon this year.
There were around 1,000 participants over 5 days.
Sprints
Entity share
I was able to dedicate time to updating the issues for the Entity share module:
- answering questions,
- updating pending and resolved issues against Drupal core 8.6.x,
- creating a POC-level patch for the 2.x branch to be compatible with the 2.x branch of JSON API.
Commerce licence
Together with Joachim, maintainer of the Commerce License module, we made progress on a feature to renew a licence before its expiry date.
Tests still need to be written before the patch is ready.
Day 1
Day dedicated to sprints.
Day 2
CMI 2.0 updates and the best of config management today
A status update on the CMI 2.0 initiative.
Now that several years have passed since the release of Drupal 8.0, we can step back and look at what Drupal users actually need in terms of configuration management. This initiative aims to address the gaps that exist in Drupal core. Some gaps are covered by contributed modules, but not all needs currently have a solution.
CMI 2.0 is primarily focused on the following goals:
- Documentation:
- how it works for users
- the tools available to developers
- Enabling per-environment configuration overrides
- Facilitating the creation and management of distributions
Per-environment configuration overrides can currently be managed with the Config Split and Config Filter modules, but the goal is to bring this functionality into core.
For distributions, the Config Distro module is currently under development, the question is whether its approach will resolve all or most of the configuration management problems with distributions.
Code with style! Prettier + ESLint
The presentation focused on the importance of code formatting conventions, how to apply them to JavaScript, and to PHP code as well.
For JavaScript, the tools that have succeeded one another are:
- JS Lint: impossible to configure,
- JS Hint: configurable,
- ESLint: more configurable, with an extension system for overriding existing configurations.
For PHP, there is PHP CodeSniffer, but it only performs code analysis.
Prettier, on the other hand, is a code formatting tool, not a code analysis tool. It allows code to be formatted directly in the IDE following a few simple rules.
Commerce 2.x for the business-specific - Feedback on a 2k person days project
Feedback on an e-commerce project of 2,500 person-days in the parking space rental sector, including associated services.
Thanks to the Commerce 2.x architecture, it was possible to adapt the Drupal Commerce solution to the client's needs:
- web services to provide data to other applications,
- complex pricing and parking availability calculation,
- 2 checkout funnels,
- new payment solutions,
- ...
This feedback demonstrates that Drupal Commerce is not necessarily only suited to small sites or sites with simple e-commerce needs, such as "simple" product catalogues.
Day 3
Driesnote
Presentation by Dries Buytaert on the state of Drupal.
Overview of initiative progress:
- content editor experience: use of the Umami demo profile to showcase advances in media, Layout Builder, and Workspaces.
- developer experience: strengthening Drupal's web services, with a new administration interface as a practical use case.
- documentation: comparison of the time and number of clicks needed to install a Drupal site versus Symfony, WordPress, and Laravel. A major step forward with work on Drupal.org documentation pages and the ability to install a Drupal site in 3 clicks.
- extended security support period for Drupal versions. Drupal 8 releases will now have a one-year support window, making it easier to plan version upgrades.
- marketing: early results from the Drupal 8 promotion initiative.
Alongside the extended support lifetime for Drupal 8 releases, the other major announcement enabling better long-term planning was the target release year for Drupal 9.
Since Drupal 8 relies on Symfony, the end-of-life dates for Symfony versions must be followed. With Symfony 3 security support ending in 2021, Drupal must be compatible with Symfony 4 (at minimum) by then. A major version change introduces breaking changes, which necessitates the release of Drupal 9.
This is not necessarily a bad thing, it will allow all deprecated code to be removed.
To give users time to upgrade, Drupal 9 will be released in 2020. Additionally, with Drupal 9 released, Drupal 7 will no longer be maintained from that date, only the two most recent major versions are supported. However, Drupal 7 support will be extended to 2021 to align with the end of Drupal 8's life, since with the end of Symfony 3 security support in 2021, Drupal 8 will no longer be maintained either.
This means that in 2021, theoretically all Drupal sites will be on Drupal 9, allowing the community to refocus its efforts on a single Drupal version.
A few years ago, with the adoption of a minor release every 6 months and the constant addition of new features, it was impossible to predict a Drupal 9 release date. At one point it was considered that adding media management to core might trigger the jump to Drupal 9 ultimately, that will not be the case.
But now, it is more reliably possible to predict a Drupal 10 release, which will almost certainly be planned around the end of support for the Symfony version that Drupal 9 relies on.
Furthermore, this would mean that Drupal 9 would eventually be running on an unsupported Symfony version, rendering Drupal 9 unsupported as well leading to a cycle where only one major version of Drupal would be supported at a time.
Another important piece of news is that the Git portion of Drupal.org will soon migrate to GitLab, with features being migrated and added progressively.
This will streamline contributors' work by making code reviews, merges, and so on easier to manage.
Sell it again: licenses and subscriptions on Drupal Commerce
Presentation of the Drupal Commerce module ecosystem around licences and subscriptions.
These modules introduce the concept of a licence, enabling the sale of:
- access via a role: standard or OG,
- modifications to entity field values: for example, it is possible to sell the publication of a piece of content.
A licence can be permanent or have an expiry date. For renewals, it is possible to configure renewal modes (on the first day of every month, 3 months from the order date, etc.).
For fixed-date renewals, it is possible to set up price deduction rules to avoid, for example, paying 6 months of subscription at the full annual price.
Internally, the module ecosystem relies on the ability introduced by Drupal Commerce 2.x to create bundles via plugins.
Enrich your Paragraphs workflow with features you didn't know about
Presentation of interesting Paragraphs module features that require custom development. Some features had already been presented at the Drupal Developer Days 2017, but were experimental at the time.
- Behavior: metadata on each paragraph that allows altering its behavior.
- Library: a sub-module enabling paragraph reuse. Here is how it works:
- the content has a paragraph of type "library paragraph"
- the library paragraph references a new entity type: "library item".
- the library item entity has a paragraph field that holds the reusable paragraph
- this adds 2 intermediate entities in order to have reusable paragraphs, which may discourage the use of this paragraph library.
- Drag & Drop: a new interface that, when a paragraph field contains a hierarchy, allows easy manipulation of that hierarchy and moving paragraphs between levels. Also worth testing when an entity has multiple paragraph fields, to see if paragraphs can be moved between fields.
- Paragraph type grouping to improve the UI.
- Declaring new actions: for example, one action provided by the library is to detach a paragraph from the library in order to modify it on a specific piece of content.
- Translations: paragraph fields are not translatable, but paragraphs themselves are.
- Content moderation: do not enable content moderation on paragraphs, but on the parent entity.
Breaking the double digit, no wait, double digit millions, barrier for products.
Feedback on a Drupal Commerce 2.x project for a site selling books to students.
As with the parking space rental site, Commerce 2.x proved adaptable to the client's needs.
On the technical side, the recurring theme was the use of Drupal's Queue API to continuously process product data updates and other operations required for the site to function.
Migrate was not used as it did not suit the project's requirements. For some queues, the Advanced Queue module was used, which provides a richer API than core's, particularly for managing retries of failed processing jobs.
Day 4
Improving the Editor Experience: Paragraphs FTW
Presentation of the Paragraphs module and how to use it.
Advanced Solr - Build Data Driven Features
Presentation of features for Solr integration via the Search API Solr Search module.
The demos were built on the Umami profile, to which a voting system was added, incidentally demonstrating that Drupal 8 voting modules work (at least for demos).
The features that stood out to me were:
- streaming expressions: allowing the search index to be updated on the fly via Solr when a vote is cast. Providing fresher data than waiting for a full entity re-index, and without a performance drop if re-indexing were configured to run immediately.
- ability to add custom index querying logic for example, a recommendation system based on the current user's vote scores relative to other users' vote scores.
- LTR (learn to rank): for defining specific relevance rules.
These features rely primarily on custom code, and for some of them, a degree of configuration as well.
The presentation code is available at: https://github.com/mkalkbrenner/search_api_solr_drupaleurope
Day 5
Day dedicated to sprints.
Conclusion
A very good event that allowed progress on sprint topics and the chance to meet or reconnect with people from the French and international community.
Community evenings held close to the venue, for those I attended at least. With, for once, a "pre-party" featuring board games, which made a nice change from the usual. That would be an interesting format to propose at French events.
Thanks to the organizers, sponsors, participants, and to Smile for sending me there.