Lennard Westerveld 10 redenen waarom wij begin dit jaar overgestapt zijn naar Drupal 8

In het begin van 2017 werd al een tijd aan de nieuwste versie van Drupal (Drupal 8) gewerkt. Ondanks dat Drupal 8 toen nog niet productie-klaar was, besloten wij toen al om over te stappen en Drupal 7 niet meer in te zetten. In dit blog leg ik je uit wat hiervoor de belangrijkste afwegingen waren, waarom we erg enthousiast zijn over deze nieuwste versie, en wat de aandachtspunten zijn.

Allereerst: waarom wij met Drupal werken

Voordat ik toelicht waarom we naar Drupal 8 overgestapt zijn, licht ik graag toe waarom we überhaupt graag met Drupal werken. Drupal is een van de populairste open source CMS systemen, waar een grote community achter zit die er voor zorgt dat er continue doorontwikkeling en verbetering plaatsvindt. Drupal developers maken niet alleen gebruik van de core en vele duizenden modules die er beschikbaar zijn, maar dragen hier ook actief aan bij. Wordt er iets toegevoegd aan Drupal waar anderen wat aan kunnen hebben, dan wordt dit ‘teruggegeven aan de community’. Na een uitgebreide inspectie wordt dit toegevoegd, zodat Drupal steeds uitgebreider en beter wordt. Zo hebben wij de afgelopen jaren ook ons steentje bijgedragen, en maken we dus onderdeel uit van de in totaal 107.278 ontwikkelaars die actief bijdragen aan Drupal. Het resultaat is dat je met Drupal zo’n beetje alles kan, door gebruik te maken van de diverse modules, en deze in te zetten en aan te passen. Het is daarbij erg flexibel, schaalbaar en stabiel, en wordt door ons voor zowel grote als kleine projecten ingezet. Toen in 2009 het Witte Huis besloot voortaan Drupal in te zetten voor haar website, waren wij ook definitief om 😉

 

Verbeteringen in Drupal 8

Aan Drupal 8 wordt al sinds eind 2012 gewerkt, en de eerste release verscheen in 2015. De belangrijkste verbeteringen t.o.v. Drupal 7 zijn:

#1. Objectgeoriënteerd en standaarden

Doordat Drupal 8 objectgeoriënteerd opgebouwd is, gelden er  bepaalde regels voor de structuur en opbouw van de code. Dit heeft veel voordelen ten opzichte van niet objectgeoriënteerde code namelijk:

  • De code is erg goed herbruikbaar voor verschillende gelegenheden. Je schrijft één keer een object en die kun je meerdere malen instantiëren met verschillende parameters
  • De opbouw van code is structureel en beter te begrijpen voor programmeurs
  • Objecten zijn makkelijk met nieuwe functionaliteit uit te breiden en te gebruiken dankzij overerving van objecten en dit zonder één regel code van het originele object aan te passen.
  • Daarnaast komt Drupal 8 overeen met de nieuwste PHP 7-standaarden zoals PSR-4, namespaces en kenmerken, en traits. Ook maakt Drupal 8 gebruik van uitstekende externe bibliotheken zoals Symfony, Composer, PHPUnit, Guzzle, Zend Feed Component, Assetic om er een ​​paar te noemen.

#2. Gebruik van Symfony bundles

Het Symfony framework bestaat uit verschillende componenten. Sommige componenten zijn essentieel voor het systeem, maar er zijn ook componenten die alleen data valideren (is het een valide e-mailadres/url/nummer etc.). Een programmeur heeft de mogelijkheid om deze componenten uit te breiden met eigen functionaliteit. Dit lijkt dus erg veel op de modules die je in Drupal hebt. Drupal is niet gebouwd op Symfony 2, maar gebruikt slechts een aantal Symfony componenten.

#3. Caching Systeem

In Drupal 8 wordt niet meer een hele pagina gecached, maar werkt de caching per component. Dit kan een grote verbetering zijn van de snelheid complexe websites. Heb je bijvoorbeeld een grote product overzichtspagina waar één product gewijzigd wordt, dan zou ik Drupal 7 die hele pagina opnieuw worden opgebouwd, terwijl in Drupal 8 alleen het nieuwe product opnieuw wordt opgebouwd en de rest uit de cache wordt gehaald. Zo zijn wij momenteel bezig met een grote website voor internationaal bedrijf, waarbij er met taalversies en een verschillend productassortiment per land wordt gewerkt. Als we dit in Drupal 7 hadden opgezet, hadden we de caching uitgezet. Nu kunnen we handig gebruik maken van deze nieuwe mogelijkheid. Waardoor je op verschillende variabelen de caching kan opbouwen zoals taal en land code in de url.

#4. REST API

Doordat er out of the box met een REST API gewerkt kan worden, is het op termijn makkelijk om de frontend en backend los te koppelen van elkaar. Hierdoor is je website meer toekomst proof, vanwegen de mogelijkheid om de datastructuur de behouden maar er een nieuwe voorkant voor te zetten omdat deze lostaand zijn. Maar de REST API / Drupal kan ook dienen als databron voor bijvoorbeeld een app waarin je de zelfde informatie nodig heb die je wellicht op je website heb staan.

#5. Nieuwe theme engine

Drupal 8 bevat een gloednieuwe theming engine genaamd Twig, die op PHP gebaseerd is. Deze is erg flexibel, snel en veilig. Het is veel makkelijker om mooie en functionele Drupal websites te maken met Twig, omdat de templates zijn geschreven in een syntax die minder complex is dan een PHP template.

#6. Mobile first

Drupal 8 is mobile first in zijn aanpak. Alle ingebouwde thema’s die bij Drupal 8 komen, zijn responsief, samen met een admin-thema dat past bij verschillende schermgroottes en een ‘Terug naar site’-knop om terug te gaan naar de voorpagina. Tabellen passen in elke schermgrootte, en de nieuwe admin toolbar werkt goed op mobiele apparaten.

#7. HTML 5

HTML5 is nu min of meer de standaard wanneer het gaat om het schrijven van webmarkup. Hetzelfde is nu beschikbaar in Drupal 8, waardoor je toegang kunt krijgen tot invoervelden zoals datum, e-mail, telefoon, enz., En nog meer functionaliteit en compatibiliteit met mobiele en handheld apparaten.

#8. Meertaligheid

Drupal 8 beschikt over uitgebreide meertalige functies. Deze zitten nu standaard in core. De admin interface heeft ook ingebouwde vertalingen.

#9. Configuratiemanagement

Drupal 8 heeft configuratiebeheer ingebouwd op het bestandssysteem niveau, zodat het overbrengen van configuratie-elementen (zoals inhoudstype, weergaven of velden, etc.) van lokale ontwikkeling naar de server een briesje is. Je kunt een versiebeheersysteem zoals git gebruiken om de configuratiewijzigingen bij te houden. Configuratiegegevens worden opgeslagen in bestanden, los van de site database.

#10. Meer veldtypes in core

Drupal 8 core heeft nu standaard nieuwe veldtypes, zoals referentie van een entiteit, link, datum, e-mail, telefoon, etc. Deze velden helpen bij het creëren van inhoud.

Waarom we begin 2017 zijn overgestapt

De afgelopen jaren was het nog niet stabiel genoeg om in te zetten voor complexe projecten. Momenteel is nog niet alles productieklaar. Het nadeel is dus dat er bepaalde zaken nog niet optimaal werken. Toch beginnen we nieuwe projecten in Drupal 8. De belangrijkste redenen daarvoor zijn:

  • Van bovengenoemde voordelen van Drupal 8 vinden we het feit dat het object georiënteerd is en de manier waarop met caching omgegaan wordt, een dusdanige verbetering, dat dit opweegt tegen de nadelen van het feit dat niet alle modules die we voorheen gebruikten productie klaar zijn voor Drupal 8.
  • Migreren van Drupal 7 naar Drupal 8 kan niet eenvoudig. Je moet dan een grote en kostbare migratie uitvoeren. Dit terwijl een upgrade van Drupal 8 naar een latere versie (aan Drupal 9 wordt inmiddels al gewerkt) wel eenvoudig is. Het is wat dat betreft dus een goede investering in de toekomst. Dit komt door de backwards compatibiliteit die is toegevoegd. Dit betekent dat elke nieuwe update compatibel is met eerdere releases. Bovendien, wanneer Drupal 9 uitkomt, is het backwards compatibel met Drupal 8. Dit zorgt voor snelle en eenvoudige upgrades, zowel tussen kleine versies als tussen grote versies, mits je de nieuwste API’s gebruikt en de verouderde code vermijdt.
  • Semantische versies. Het is niet een totaal nieuw concept, maar het is een oud idee dat iedereen in delen of op een of andere manier gebruikt. Doordat er gebruik wordt gemaakt van standaard regels voor het bijhouden van versienummers kun je meteen zien wat voor soort veranderingen er zijn doorgevoerd. De versies worden opgebouwd uit drie getallen, bijvoorbeeld: 8.2.1. Het laatste getal staat voor bugfixes, het tweede getal staat voor uitbreidingen, het eerste getal laat zien of het backwards compatible is. Hierdoor wordt het bijvoorbeeld makkelijker om alleen te upgraden naar een nieuwe versie als je alleen bugfixes wilt meenemen en geen uitbreidingen.
  • Vanwege de ingebouwde REST API is Drupal 8 ook meer toekomstbestendig vanwege de mogelijkheid om het decoupled neer te zetten en is hij ook beter inzetbaar voor bijvoorbeeld een app of dashboard.

 

Onderstaande platforms ontwikkelden we met Drupal 8

Bewaren

Bewaren

Bewaren

Bewaren

Bewaren

Bewaren

Bewaren

Bewaren

Bewaren

Bewaren

 

Heb je vragen naar aanleiding van dit blog? Je kunt me altijd een berichtje sturen via de chatfunctie rechtsonder op onze site.

Bedankt!

We hebben je emailadres ontvangen, we kunnen je nog beter van dienst zijn als we je nog wat beter leren kennen.
  • Dit veld is bedoeld voor validatiedoeleinden en moet niet worden gewijzigd.