Every action has his equal and opposite reaction

Plugins zijn fantastisch. Ze brengen nieuwe functionaliteit, en zonder plugins zou ik niet weten waar WordPress nu zou staan. Uitbreidbaarheid is mooi, maar heeft een keerzijde.

Modules/plugins/widgets, whatever, ze plakken allemaal een stukje code aan de core. En dat is nu juist het probleem. Gisteren bij het updaten van de redirection plugin liep het mis. De PHP parser spuwde een fatale error uit. Heel mijn blog lag eruit.

Nu, de vele plugins die op deze blog draaien worden regelmatig bijgewerkt. Niet verwonderlijk, want WordPress zelf komt ook om de haverklap met een nieuwe versie op de proppen. Plugins dus noodgedwongen ook. De administratie pagina’s van WordPress laten toe om die updates automatisch te verlopen. Heel handig, ik kreeg de melding dat het werkte. Nee: ik had de verstoring nog geeneens opgemerkt. Een tweede update heeft het probleem gelukkig wel verholpen.

Dit is duidelijk een probleem op ontwerp niveau. Door de plugins ontstaat er een hoge koppeling. Plugins zijn goed te onderhouden, code is begrijpbaar en ze kunnen zonder probleem getest worden. Maar niet als ze samen gebruikt worden met andere modules. Niettegenstaande een hoge cohesie (iedere module/plugin heeft zijn eigen taak en verantwoordelijkheid), neemt de afhankelijkheid wel toe.

De auteur van de kapotte plugin had wellicht iets over het hoofd gezien, zulke dingen gebeuren nu eenmaal. Maar dit toont duidelijk de kwetsbaarheid van modulair uitbreidbare systemen (zoals WordPress, Drupal en vele anderen) aan. En dan heb ik het niet alleen over parse errors, maar ook over zaken als XSS aanvallen en SQL injecties.

Een betere manier is om eerst de nieuwe plugin in een daarvoor bedoelde omgeving te testen. Laten we daarmee besluiten.

2 thoughts on “Every action has his equal and opposite reaction”

  1. Ik schakel automatische updates op de echte host uit, en draai lokaal een easyphp testserver. Die host dan een versie van de site met alle modules maar zonder alle content, en wordt enkel gebruikt om de modules (of eigen php-geknoei) te testen. Natuurlijk wel wat meer moeite, maar liever dat dan met een syntaxfout zitten op een site die online staat.

Leave a Reply

Your email address will not be published. Required fields are marked *