De afgelopen development-iteraties zijn we verder gegaan met onze vernieuwingsplannen voor de editors. Ook hebben we de site op het punt van digitale toegankelijkheid verbeterd. Hieronder lees je over deze vernieuwingen en wat er nog meer speelde de afgelopen tijd.
Voortgang wysiwyg
We zijn de afgelopen sprints verder gegaan met het uitwerken van de wysiwyg; een manier om reacties met opmaak te schrijven in een visuele editor. Omdat er veel verschillende library's zijn die we zouden kunnen gebruiken, zijn we eerst begonnen met het selecteren van goede kandidaten. Een belangrijk criterium waar de library aan moet voldoen, is het kunnen ondersteunen van onze eigen RML. Daarnaast keken we ook naar de licentie, hoe actief deze library onderhouden wordt, hoe eenvoudig deze te beheren is en of deze aansluit bij onze manier van werken.
Van de 50 kandidaten vielen er een hoop direct af. Bijvoorbeeld omdat zij niet actief onderhouden werden. Voor elk van de overgebleven 12 kandidaten hebben we vervolgens de documentatie en readme bestudeerd en een poging gedaan om in te schatten hoe eenvoudig het zou zijn om RML-ondersteuning in te bouwen. Na deze tweede schifting hielden we uiteindelijk drie kandidaten over: CKEditor5, ProseMirror en Slate.
Om een keuze te kunnen maken tussen deze drie hebben we voor elk een proefimplementatie gemaakt. We kwamen daarna tot de conclusie dat ProseMirror de beste lijkt te zijn voor onze situatie. We merkten echter ook dat ProseMirror tóch best veel boilerplate code nodig heeft. Daarom besloten we om ook weer Tiptap te bekijken.

Lezers die de vorige .plans hebben gelezen, zullen deze naam herkennen omdat we die library de vorige keer ook hadden gebruikt. Dat wil niet zeggen dat de afgelopen sprints voor niets zijn geweest. We hebben nu immers goed uitgezocht dát Tiptap de beste library voor onze situatie lijkt te zijn. En we gaan daar nu dus op door.
Verbeterde digitale toegankelijkheid
Bij Tweakers streven we ernaar om onze website toegankelijk te maken voor iedereen, inclusief mensen met bijvoorbeeld een visuele beperking. Met de komst van de European Accessibility Act (EAA) in juni van dit jaar worden digitale diensten verplicht om te voldoen aan strengere eisen op het gebied van digitale toegankelijkheid. Om hierop voorbereid te zijn, hebben we de afgelopen maanden een aantal verbeteringen doorgevoerd.
Denk hierbij aan beter gestructureerde HTML, verbeterde ondersteuning voor screenreaders en een meer intuïtieve navigatie. Concreet zijn dat bijvoorbeeld beschrijvende labels op diverse knoppen, een verbeterd contrast van de moderatiescores, grotere knoppen in de paginering (nog niet op het forum) en skiplinks naar filters in de Pricewatch. Deze aanpassingen zorgen ervoor dat onze content eenvoudiger te begrijpen en te gebruiken is voor mensen die met een screenreader werken.
Storing op 19 februari
Op woensdag 19 februari was de site laat in de avond offline. Dat is vervelend natuurlijk, en in het algemeen kunnen we dergelijke storingen snel oplossen. Ditmaal duurde het toch iets langer omdat we het probleem niet direct zagen. Achteraf kunnen we er natuurlijk wel wat over zeggen. Wat was er aan de hand?
Het probleem speelde in onze engine. Dit is een in Java geschreven applicatie die we gebruiken als een soort zoekmachine. Deze applicatie laadt een hele hoop data in het geheugen zodat we sneller een antwoord krijgen dan wanneer we via onze PHP-code de database zouden bevragen. Tweakers gebruikt de engine veelvuldig. Als de engine faalt, faalt de hele website en daarom draait deze engine zes keer op zes verschillende servers.
Nu was het vervelende dat we niet direct in de dagen voor de storing iets aangepast hadden wat dit zou kunnen verklaren. Wel hadden we onlangs iets aangepast aan de garbage collection van de engine. Ook hebben we wel wat databaseaanpassingen gedaan die invloed zouden kunnen hebben op het (niet) functioneren van de engine. Helaas bleek het terugdraaien van die aanpassingen het probleem niet op te lossen. Omdat de engines na een herstart vrij snel niet meer reageerden, maakte dit het onderzoeken van het probleem erg lastig.
Uiteindelijk bleek het te liggen aan iets heel anders. Er was recent een extra 'grootheid' toegevoegd die nu voor het eerst gebruikt werd in een specificatie van een product. Een grootheid krijgt bij ons een 'grondgetal', zodat wij de waarde van de specificatie kunnen weergeven met een 'mooi' getal, bijvoorbeeld 25GB in plaats van 26843545600B.
Doordat deze nieuwe grootheid het grondgetal '1' had gekregen, trad er een situatie op die we nog nooit eerder hadden gehad. Hierdoor kwamen we in een eeuwige loop te zitten waarbij de code de waarde van de specificatie probeerde te delen door het grondgetal tot de waarde kleiner was dan het grondgetal. Maar als je deelt door 1, dan kun je best lang wachten voordat dat gebeurt. De code zelf bestond al sinds 2012, maar omdat er niet heel vaak extra grootheden bijkomen, heeft het nog nooit eerder voor problemen gezorgd.
We hebben het grondgetal van de grootheid aangepast in de database, waardoor de engine in elk geval weer kon starten. Vervolgens zijn er aanpassingen gedaan aan de engine waardoor dit probleem niet meer kan voorkomen. Ook is er extra validatie toegevoegd zodat de waarde 1 (die hier eigenlijk helemaal niet logisch was) niet meer geaccepteerd wordt.
En verder
- Omdat we vorig jaar (deels) gestopt zijn met de Tweakers Awards, hebben we de code en bijhorende pagina's om te kunnen stemmen en de resultaten te bekijken, verwijderd. Alle historische uitslagen zijn nog steeds terug te vinden via het archief van artikelen.
- We hebben de socialmediakanalen in de footer aangepast naar Bluesky, YouTube en Instagram. Bij artikelen is daarnaast de deelknop voor X vervangen door Bluesky.
- Op mobiel is het eenvoudiger geworden om naar de laatste reactie van een forumtopic te navigeren, naar aanleiding van een featurerequest.
- Zoals gebruikelijk hebben we ook weer een aantal bugs geplet, voornamelijk bij diverse filters: het prijsfilter, de procentuele prijsdaling, het shopfilter en de melding van laatstgebruikte filters. Tot slot hebben we een fix uitgerold om bepaalde productreviews te kunnen modereren.