Tijdens DrupalCon Lille heb ik enige tijd gewerkt aan en gesproken over het configuratievalidatie-initiatief dat momenteel in Drupal plaatsvindt. In dit artikel geef ik een update van waar we de afgelopen week aan hebben gewerkt.

Slides from WIm Leers about config validation

Wat is configuratievalidatie in Drupal?

Wim Leers heeft een goed artikel geschreven bij zijn slides en YouTube-video van DrupalCon Pittsburgh eerder dit jaar.

Kortom: door de jaren heen hebben we de neiging gehad om meer structuur aan te brengen in de manier waarop configuratie en variabelen in Drupal zijn opgeslagen. We willen daar meer aan toevoegen, zodat verschillende nieuwe onderdelen van Drupal veiliger kunnen werken. Door configuratieschemavalidatie kan Drupal testen of de waarden in een schema correct overeenkomen met het schema dat het definieert.

Dit werk maakt het mogelijk om meerdere spannende dingen te verbeteren, zoals: Recepties kunnen valideren dat ze de configuratie niet verbreken, config split kan configuratie met meer vertrouwen samenvoegen, config import kan mogelijke breuk van een site detecteren voordat deze wordt geïmporteerd, JSON:API/GraphQL/ Rest kan configuratie bijwerken.

Voortgangsrapportage

Er is een metaprobleem op drupal.org, waar we veel informatie hebben bijgehouden over alle verschillende dingen die gebeuren met configuratievalidatie en alle gerelateerde updates daarvan. Wim heeft dat nummer up-to-date gehouden en in de laatste opmerking staat meestal een lijst met tickets waar aan gewerkt kan worden.

Tijdens Drupalcon in Lille kregen we de tijd om enkele van de open harde blokkers te bespreken die we momenteel hebben:

  • Vereiste waarden
  • Vereiste sleutels

Beide problemen stellen ons in staat een correctere structuur van sleutels in een mapping in schema's tot uitdrukking te brengen.

De moeilijkste van deze twee zijn de vereiste sleutels. Dit komt omdat sleutels vereist kunnen worden op basis van de configuratie van een andere sleutel. We hebben dit onderwerp grondig besproken met @Alex Pott, @Wim Leers en @Bircher.

Er waren nog steeds veel problemen in dit nummer waarbij de test mislukte, omdat de tests nu feitelijk de configuratiegegevens valideren op basis van het schema en we soms met onvolledige gegevens werken in tests. We hebben deze voorlopig toegevoegd aan een lijst met bekende fouten en zullen later speciale vervolgproblemen creëren om ervoor te zorgen dat deze later in kleine, specifieke problemen worden opgelost.

Dit is nu bij alle tests bijna weer groen (nadat we op het laatste moment enkele wijzigingen hebben aangebracht in de formulering van de foutmeldingen), dus ik heb goede hoop dat we dit in de nabije toekomst kunnen realiseren.

Drupalcon Lille sprint room

Sprint day

Een van de geweldige dingen van Drupalcon zijn de sprintruimtes, en meer specifiek de bijdrage vrijdag.

We zagen mensen die wilden helpen tijdens de algemene bijdragedag op vrijdag. We hebben problemen gemaakt om validatiebeperkingen toe te voegen aan enkele van de eenvoudige configuratieschema's die moesten worden bijgewerkt.

We gebruikten de nieuwe opdracht drush config:inspect --todo om laaghangende vruchten van configuratieschema's te vinden die moesten worden bijgewerkt.

Aan deze tien nieuwe problemen is door verschillende mensen in de wachtrij gewerkt. De meeste hiervan hebben nog steeds beoordelingen nodig, zodat we deze binnen kunnen krijgen, maar het geeft ons meer configuratie die 100% valideerbaar is.

Config inspect
Wim & Joris at drupalcon sprint room

Wat is het volgende?

We moeten nog meer van het hooghangende fruit doornemen om enkele van de meer gecompliceerde gebruiksscenario's te valideren, waardoor drupal core (en sommige contrib/custom) beter valideerbaar zullen worden, waarbij de 16% van de valideerbare eigenschapspaden zich in 5 eigenschappen bevinden.

  1. 10%: views.field.field                   affects 751 property paths, 10% of @todos or  5% of total
  2.  7%: core.entity_form_display.*.*.*      affects 543 property paths,  7% of @todos or  3% of total
  3.  6%: views.filter.boolean                affects 422 property paths,  6% of @todos or  3% of total
  4.  6%: views.view.*                        affects 420 property paths,  6% of @todos or  3% of total
  5.  5%: config_dependencies                 affects 390 property paths,  5% of @todos or  2% of total

We zullen ook een heleboel nieuwe problemen maken op basis van de negeerlijst in zowel Vereiste sleutels als Vereiste waarden. Deze nieuwe uitgaven moeten een nauwkeurig overzicht hebben en gemakkelijk op te pikken zijn, zelfs zonder veel achtergrondinformatie over wat we in de eerdere uitgaven hebben gedaan.

Volg deze problemen om op de hoogte te blijven:

https://www.drupal.org/project/issues/search/drupal?project_issue_followers=&status%5B%5D=1&status%5B%5D=13&status%5B%5D=8&status%5B%5D=14&version%5B%5D=any_11.&version%5B%5D=any_10.&version%5B%5D=any_9.&version%5B%5D=any_8.&issue_tags_op=%3D&issue_tags=Configuration+schema%2C+Distributions+and+Recipes#content

Foto's door Gábor Hojtsy en Bram Driesen van de Flickr-groep https://www.flickr.com/groups/drupalconlille2023/pool/with/53282709101/