10 dingen die we geleerd hebben van DrupalCon

Nieuws
Publicatiedatum:

Tien ontwikkelingen die ons op DrupalCon 2017 zijn opgevallen

DrupalCon 2017 in Wenen is er weer één voor de boeken. Met een team van 10 waren we weer afgereisd om te leren, te inspireren, bij te dragen én cultuur op te snuiven. DrupalCon, het grootste Drupal evenement ter wereld, gaat volgend jaar in Europa door in een andere vorm. De Drupal 8.4 release zit in de pipeline en Drupal groeit nog altijd, zowel in functionaliteiten als in gebruikers. Naast deze ontwikkelingen waren er weer genoeg interessante technische verdiepingssessies. We hebben 10 opvallende ontwikkelingen die ons op DrupalCon zijn opgevallen op een rijtje gezet.

1. Grote veranderingen voor Drupal

Waar het aantal  Drupal showcases blijft stijgen en Drupal wereldwijd succesvol wordt ingezet voor spraakmakende projecten voor primaire bedrijfsvoering, blijft ook Drupal zelf behoorlijk in ontwikkeling. De aankondiging van de Drupal Association (het beleidsorgaan wat Drupal steunt en begeleid in ontwikkelingen en uitingen) om DrupalCon in Europa in de huidige vorm niet opnieuw te organiseren, is wellicht de meest opvallende verandering die op  DrupalCon concreet werd. Dries Buytaert, bedenker en projectlead van Drupal stapt van zijn rol als Chair van de Drupal Association, waarmee hij plaatsmaakt voor nieuw bloed en inzicht. Hij blijft als projectlead betrokken in de koers en ontwikkelingen van Drupal. In zijn jaarlijkse State of Drupal presentatie laat Dries zien dat met Drupal steeds grotere online ambities voor bedrijven worden ingevuld.

 

2. Base fields voor velden op entities

Base fields kunnen gebruikt worden voor velden op entities zoals: “real author”, “first published date”, “taxonomy term: author”, “taxonomy term: status”, et cetera. Hierdoor is er geen specifiek extra veld nodig op de entity en wordt de data beschikbaar in de node_field_data tabel. Hierdoor zijn er geen joins nodig om de data op te halen.

Gebruik hook_entity_base_field_info_alter() om base fields van entities zichtbaar te maken in de “view” configuratie. Hierdoor is er geen “extra field” nodig, ($field->setDisplayConfigurable(‘view’, TRUE))). Denk bijvoorbeeld aan het tonen van de “updated date” van een node of het tonen van het bundle label.

3. Ontkoppel Twig van PHP met Fractal

Fractal is een open source UI component library (http://fractal.build/). Je gebruikt het om herbruikbare elementen voor een website, bijvoorbeeld een foto-slider of een blokje met een gebruikersprofiel, te bouwen en documenteren. Dit levert een “living styleguide” op met alle bouwstenen voor de user interface van een site. Geschreven in NodeJS, is Fractal onafhankelijk van Drupal, templating-taal en backend-taal. Een frontend developer die met Fractal werkt, hoeft dus geen kennis te hebben van PHP en/of Drupal.

Van elk component maakt Fractal een preview o.b.v. fake content of api; je kan het dus ook Drupal content voeren. En draait op lokale webserver of static HTML. Fractal kan goed samenwerken met Twig. Ook javascript kan in Fractal worden toegevoegd en binnen Drupal gebruikt.

Met de Component Library en Twig Field Value modules (gemaakt door onze eigen Erik Stielstra), in combinatie met de Twig-adapter van Wondrous, kun je binnen Drupal gebruik maken van Fractal componenten. Templates gebruiken een {%include} syntax om fractal components te importeren in Drupal templates. Daardoor kun je gemakkelijk vormgevingselementen hergebruiken, ook in verschillende contexten (bv. een node template en een view template).

Of je nou Fractal gebruikt of een andere component library zoals PatternLab, deze werkwijze is veelbelovend.

4. Drush 9

Drush heeft de eerste full (ground-up) rewrite gehad sinds 2008 . Via composer start je je Drupal 8 project inclusief drush dependency, daarna kan je drush-launcher installeren (gedistribueerd als .phar file) voor gemakkelijker gebruik van drush. Voor bestaande Drupal 8 projecten zonder composer gebruik je drush composer-generate, een contrib project die een composer.json genereert.

Er zijn een aantal “dearly departed” drush commando’s waaronder make, archive, qd, pmu en dl. ‘-n’ betekent vanaf drush 9 --non-interactive (en niet ‘no’). Er is ook geen support meer voor Drupal versie 7 en lager. Voor eerdere Drupal versies gebruik je gewoon nog Drush 8, die nog altijd wordt onderhouden. Drush 8 in combinatie met Drupal 8.4 kan werken, maar drush 8 is gebaseerd op symfony 2 en Drupal 8.4 op symfony 3. Support voor Drupal 8.4 door drush 8 is dus niet officieel.

Een aantal nieuwe commando’s zijn: run from project root, config split, yml config and aliases, drush generate (dit is een scaffolding tool: drush gen module-standard / drush gen content-entity). drushrc.php wordt drush.yml. aliases.drushrc.php wordt example.alias.yml en group.aliases.yml (geneste aliases per site). De generate functionaliteit is gebaseerd op Drupal Code Generator, een extern component dat niet wordt onderhouden door het drush team.

5. Twig & GraphQL (BOF)

Een BOF (afkorting van “Birds Of a Feather”) is niet een presentatie, maar een ad-hoc bijeenkomst waar DrupalCon-deelnemers samenkomen om te praten over een onderwerp dat nog in ontwikkeling is. Het is dé plek om vandaag te leren wat volgend jaar wellicht een hot topic is.

De ontwikkelaars van de GraphQL module hebben een submodule toegevoegd die twig templates en graphql combineert tot een systeem waarin render arrays en preprocessors tot het verleden behoren. In plaats van dat preprocessors de variabelen voorbereiden en die in een template injecteren, declareert een template d.m.v. annotations welke data het nodig heeft (zoals react templates dat ook doen). Vervolgens wordt alle data in een enkele graphql query opgehaald. Dit systeem is vriendelijker voor themers, zeker als die geen Drupal ervaring hebben, omdat er nauwelijks sitebuilding nodig is (exit view modes, manage display, field formatters, etc). Ook sluit deze manier van sitebuilding (vanuit de templates ipv. in de admin interface) meer aan bij wat men kent uit JS frameworks.

Kortom, een interessant concept dat in theorie een heel groot deel van de Drupal werkwijze overhoop zou kunnen halen. Daar worden we blij van!

LimoenGroen team met grote Drupal ballon op DrupalCon
Foto: Cafuego

6. Testen met Behat

Met de Behat Drupal extension kun je tests gebruiken die ook dienst kunnen doen als functionele beschrijving van het systeem. Het format ziet eruit als:

Feature: <title>
 In order to <business objective>
 As a <user role or persona>
 I need to <some action>

Scenario:
 Given <a precondition>
 When <some action>
 And <some other action>
 Then <a testable outcome>
 But <something else we can test>

Twee tags kunnen worden gebruikt in scenario’s: @api en @javascript. De eerste geeft toegang tot de Drupal API en de tweede draait de test in een echte browser. Wat je nodig hebt is:

  • composer

  • Behat Drupal Extension (composer require drupal/drupal-extension) (drupal.org/project/drupalextension)

  • behat.yml config file

Na het initialiseren van behat kun je je eigen features (tests) opbouwen. Voorbeelden zijn er te over: https://github.com/ec-europa/joinup-dev

7. Het gebruik van headers om je website veiliger te maken

Er zijn een veel HTTP headers die bijdragen aan security. Sommige zitten standaard in Drupal. Veel headers gaan over cross-domain communicatie, referring etc. Sommige dingen worden geleidelijk geïntroduceerd in browsers, dus we moeten up-to-date blijven. Sites die over HTTP gaan, worden steeds verder achteropgesteld t.o.v. HTTPS.

Met een “Content Security Policy” HTTP-header je extra veiligheid toevoegen aan je site. Zo kan het beschermen tegen cross site scripting (XSS) problemen: je kan bv. aangeven dat inline JavaScript niet toegestaan is, of aangeven vanaf welke domeinen iframes hun broncode mogen inladen. Er zijn ook headers die ervoor zorgen dat violations gerapporteerd worden, door een json object naar een bepaalde URL te sturen. Interessant om mee te nemen in Drupal projecten, aangezien beveiliging altijd op orde moet zijn.

8. Workflows in Drupal

Er wordt flink aan de weg getimmerd op het gebied van Content Workflow. In de komende updates krijgen content redacteurs en gebruikers de mogelijkheid om meerdere versies van pagina’s voor te bereiden voor publicatie en deze gelijktijdig te publiceren. Met de huidige versie kan van een individuele pagina een nieuwe versie worden voorbereid. In Drupal 8.5 (verwacht over ongeveer 6 maanden) worden de eerste onderdelen van Content Workflow verwacht waarna er zal verder worden gewerkt aan een stabiele versie van Content Workflow.

9. Google AMP en Facebook Instant Articles

Baris Wanschers, managing director bij LimoenGroen vertelde op DrupalCon over Google AMP waarmee pagina’s op een mobiele telefoon of tablet vrijwel direct worden geserveerd. Facebook Instant Articles zorgt ervoor dat dialoog met je bezoekers direct aan de website wordt gekoppeld en vice versa. Twee technologieën die we eerder dit jaar inzetten voor het nieuwsplatform van Eva Jinek, waarvoor we de Dutch Interactive Award wonnen.

10. Europa

Of je nu voor het eerst in Wenen bent of niet, het is een stad waar de rijkdom en diversiteit van de Europese cultuur in alle facetten tot uitdrukking komt. Wenen is een prachtige stad met veel musea, cultuur en bezienswaardigheden en als decor voor het grootste Drupal evenement ook voor goed gevulde avondprogramma’s een toffe plek. Terwijl Drupal een product is wat wereldwijd wordt gebruikt én wordt ontwikkeld, komt bijna de helft van alle open source contributies uit Europa. En met dat inzicht is het fijn om te weten dat de regionale open source vrijwilligers in Europa de handen alvast ineenslaan in ook in 2018 een Europees Drupal congres te realiseren. 

Meer foto’s van DrupalCon 2017 Vienna vind je hier. Masthead foto door Dominik Kiss

Naast DrupalCon zijn we ook op andere evenementen in Europa, waaronder CSS Days, DrupalCamp en Frontend United. We helpen met de organisatie, delen code en kennis en zijn er natuurlijk ook altijd om weer nieuwe dingen te leren. Want naast hard werken aan mooie projecten, hoort inspireren en leren er natuurlijk ook bij (en lol hebben). Lijkt jou dat ook leuk? Kom dan eens langs bij ons in Amsterdam voor een bak koffie of thee. Of Drupallager :-) ...Je kan ons bereiken op hallo@limoengroen of bel ons op +31 20 - 737 1880