Het dode spoor van Wordpress

Door StephanVierkant op vrijdag 4 december 2015 14:58 - Reacties (19)
Categorie: php, Views: 6.480

Ik ben begonnen met programmeren zoals veel programmeurs. Eerst een standaard HTML-template (met animated gifjes, Flash hover buttons, <marquee>, etc.) aanpassen in FrontPage, overstappen naar DreamWeaver en PHP 4 op een site Tripod (van Lycos Inc.). Later stapte ik over naar een shared hosting provider, waar ik het extra dataverkeer dat mijn phpBB-forum trok betaalde per gigabyte. In guldens. Naast het hobbymatige gepuzzel kwamen steeds meer kennissen met de vraag of ik ook een site voor hen wilde maken. Samen met enkele vrienden deden we dat met veel plezier en zo werden mijn kroegbezoeken gefinancierd.

Onder programmeurs werd PHP echter niet als volwaardig gezien. Het blog ‘PHP: a fractal of bad design’ is een klassieker die elke programmeur zou moeten lezen. Inmiddels is er veel veranderd. Veel van de genoemde punten zijn inmiddels opgelost of niet meer relevant. Met de komst van PHP versie 7 worden nog meer zaken verbeterd.

Met de komst van WordPress 3.0 ontwikkelde de blogsoftware zich steeds meer als CMS. Zaken zoals de ‘custom post types’ zorgden voor veel flexibiliteit en de hoeveelheid thema’s, plugins en tutorials groeide razendsnel. Ik stapte af van een eigen gebouwd CMS en de vele statische websites werden steeds dynamischer.

Gemaakt door en voor luie programmeurs

WordPress is langzaam gegroeid van weblog-software naar een CMS met focus op nieuwe functionaliteiten en vlakke leercurve. Dat heeft veel nieuwe functies en veel nieuwe ontwikkelaars gebracht, maar heeft er ook voor gezorgd dat WordPress technisch behoorlijk rammelt. Een (heel) kleine bloemlezing:
  • Er wordt gebruik gemaakt van Global variables. Dit wordt breed gezien als een bad practise: zo maakt het de uitkomst van functies erg onberekenbaar. Voor mij als programmeur is dat echt verschrikkelijk.
  • Ook functienaamgeving is ondoorgrondelijk. Zo heb je ‘the_title()’, dat niets anders doet dan ‘echo get_the_title()’. In combinatie met de global variables die door The Loop worden gebruikt, maakt dit de code slecht leesbaar. Of een functie iets echo’t of returnt is compleet willekeurig. En waarom is er überhaupt een functie nodig? Wat is er mis met ‘$post->title’ of ‘$post->getTitle()’?
  • De afhandeling van fouten is nauwelijks mogelijk door de onbegrijpelijke implementatie van WP_Error. Wat is er mis met Exceptions? Eigenlijk is er geen fouthandeling in WordPress: dit moet je zelf inbouwen door functies af te vangen als ze ‘false’ returnen. Het zal niet verbazen dat dit vaak mis gaat: WordPress is gemaakt voor luie programmeurs (die de fouten dus niet goed afvangen) en omdat je bij ‘false’ niet weet of je verzoek mislukt is of het gewoon geen resultaten heeft gevonden.
  • Last but not least: de grote hoeveelheid plugins en thema’s is een sterkte en een zwakte tegelijkertijd. Het aanbod is gigantisch, maar de lage leercurve heeft ook luie programmeurs aangetrokken. De meeste plugins zijn slecht onderhouden en de kwaliteit ervan is soms schandalig laag. De levendige handel in thema’s is een walhalla voor hackers.

PHP als ecosysteem: composer en namespaces

PHP heeft zich de afgelopen jaren flink ontwikkeld. Niet alleen door beetje bij beetje de eerder genoemde ‘designfouten’ te verbeteren, maar de grootste ontwikkeling kwam misschien wel van buitenaf: Composer. Sinds PHP 5.3 namespaces ondersteunt is het uitwisselen van componenten eenvoudiger en de ‘Dependency Manager for PHP’ heeft er voor gezorgd dat programmeurs bibliotheken eenvoudig kunnen binnenhalen. Hiermee is PHP uitgegroeid van scripttaal naar ecosysteem.

Ontwikkelaars hebben dit massaal omarmd. Iedereen snapt dat ‘het wiel opnieuw uitvinden’ geen goed idee is en veel grote softwarepakketten gebruiken composer. Zo worden de componenten uit Symfony in veel grote projecten gebruikt. Met Drupal 8 hebben de ontwikkelaars naar eigen zeggen afscheid genomen van het ‘Not Invented Here’ syndroom.

Helaas staat WordPress op dit vlak compleet stil. WordPress ondersteunt PHP 5.2 nog steeds, terwijl deze versie al lang verouderd is. Er komen al bijna 5 jaar geen security fixes meer voor uit en het gebruik ervan wordt door iedereen sterk ontraden. Dat is ongeveer de Middeleeuwen in ICT-tijd. Deze onnavolgbare focus op het verleden remt de vooruitgang van WordPress.

De toekomst van WordPress

De plugins van WordPress zijn alleen te gebruiken binnen WordPress, terwijl de wereld om WordPress heen steeds meer bezig is met uitwisselbaarheid tussen systemen. Systemen die vroeger concurrenten leken, dragen nu samen bij aan de verbetering van het ecosysteem. Het is maar de vraag of WordPress kan concurreren tegen de rest van de PHP-wereld. Het lijkt er niet op dat WordPress de keuze om composer te gebruiken (op korte termijn) gaat maken. Mijn voorspelling (en ook hoop) is dat steeds meer ontwikkelaars WordPress de rug zullen toekeren en kiezen voor andere pakketten, waarbij templates en ‘business logic’ meer worden gescheiden van de gekozen software. Nu een klantspecifieke plugin ontwikkelen is immers kiezen voor een ‘vendor lock-in’. Daarbij komt dat alle krachtige nieuwe technieken (sass, twig, etc.) lastig zijn te implementeren in WordPress. Een CMS zonder enige vorm van scheiden tussen Model, View en Controller is anno 2015 niet meer serieus te nemen.

Ik ben nogal teleurgesteld in de ontwikkeling van WordPress en mede-oprichter Matt Mullenweg zegt het zelf ook: “We realized that the tech wasn’t going to take us to the next decade.” Het team ontwikkelde een nieuwe interface voor Wordpress.com en bracht deze open source uit. Maar pas na de lancering en bovendien alleen de client side code: de backend draait d.m.v. de plugin Jetpack op de server van Wordpress, waarmee een belangrijk deel van WordPress dus niet meer open source is. Of de backend überhaupt open source wordt, is nog maar de vraag: “Asked whether the new interface, dubbed Calypso, would become part of the main open source WordPress project, Mullenweg says he hopes so, but that will depend on what the community wants. There could be some technical challenges involved in integrating the new interface because Calypso isn’t just a visual redesign but a complete technical overhaul.”

De eigenaar van WordPress lijkt ook het geloof in de ontwikkeling van WordPress opgegeven te hebben. “It’s up to the community” is mijn inziens een eufemisme voor ‘zoek het allemaal lekker zelf uit’. Het doet me denken aan wat Google nu met Android doet: steeds meer onderdelen worden uit AOSP gehaald en verdwijnen (closed source) in de Play Store.

Mijn conclusie: Het open source CMS WordPress is op sterven na dood. Gezien het marktaandeel zal het een zeer langzame dood sterven, maar lijkt mij momenteel onvermijdelijk. De eigenaar legt de focus op de (closed source) Wordpress.com, de focus op het verleden (PHP 5.2) remt de ontwikkeling, terwijl de wereld om WordPress heen juist een enorme sprong voorwaarts maakt. Ik ben benieuwd of de ontwikkelaars nog een verrassing uit hun hoge hoed toveren of dat het begin van het einde is ingezet.