Development-iteratie #135 is opgeleverd. In deze sprint hebben we onder andere gewerkt aan de release van ons verbeterde weergaveframework, onze rml-parser en de verbetering van de Pricewatch-ervaring.
Weergave frameworkrefactor
Naast alle nieuwe features die we bij Tweakers bouwen, bugs die we oplossen en optimalisaties die we doorvoeren, zijn we achter de schermen druk in de weer om van een groot deel van onze technical debt af te komen. Ongeveer dertig procent van de developmentcapaciteit wordt dan ook gereserveerd om puur technische projecten af te ronden. Zo zijn we in het verleden druk aan de slag geweest met het correct toepassen van Dependency Injection, waarvoor we de standaard DI-module van Symfony gebruiken, met het omzetten van css naar scss en met het introduceren van Twig.
Naar aanleiding van die laatste toevoeging hebben we in de afgelopen sprints verdere verbeteringen uitgewerkt. Voordat we Twig gebruikten, genereerden we de html met php-code. Voor het 'framework' waarbinnen alle content, zoals header, footer, achtergrond enzovoort, wordt geladen, gebruikten we dan ook nog steeds php-code. Dat was bovendien door de jaren heen uitgegroeid tot een wat rommelige structuur.
We hebben er daarom werk van gemaakt om juist die belangrijke, centrale html via Twig te renderen, in plaats van via php. Daarbij is ook de manier vernieuwd waarop assets als JavaScript en style-sheets werden ingeladen. Als het goed is, heb je er als eindgebruiker weinig van gemerkt, maar intussen komt de basis van de html voor het leeuwendeel van Tweakers nu vanuit Twig-templates.
Waarom deze refactor als je er toch niets van merkt? Deze vernieuwde code is nu beter leesbaar, is makkelijker testbaar, is sneller aanpasbaar, heeft een betere scheiding in verantwoordelijkheden en is ook voor nieuwe en andere developers beter onderhoudbaar. Mocht je toch nog ergens een bug in de rendering van Tweakers tegenkomen, laat het ons vooral weten in het welbekende 'stoute bugs'-topic.
Nieuwe rml-parser
Enige tijd geleden hebben we de 'eigentijdprojecten' ingevoerd. Dit is een initiatief om projecten die door de developers zelf worden aangedragen, van ruimte te voorzien. Ruim een jaar geleden is crisp daarom in eigen- en werktijd begonnen aan het schrijven van een geheel nieuwe rml-parser voor het converteren van de ubb-stylemarkup naar html. Deze kan gebruikt worden bij onder andere reacties, productreviews en op het Forum. Rml staat voor 'react markup language', wat een referentie is naar de forumsoftware die we in 2002 in gebruik hebben genomen en die een parser bevatte die een uitgebreide variant van (u)bb-code ondersteunt.
Op andere plekken van de website gebruiken we een verzameling reguliere expressies om ubb-stylemarkup om te zetten, maar het bleek lastig om daarmee te blijven voorzien in nieuwe wensen waarbij ingewikkeldere constructies en geneste tags gebruikt moesten kunnen worden. Omdat de forumparser moeilijk te hergebruiken was buiten de context van het Forum, is destijds al een eigen parser gebouwd met vergelijkbare ondersteuning. Het was toen al de bedoeling ooit eens naar één enkele parser voor de hele site over te stappen, maar dat is er nooit van gekomen.
Na intensief onderzoek van de, inmiddels oude, rml-parsers, kon de conclusie worden getrokken dat deze monolitische monsters met vele duizenden regels veelal procedurele code niet heel geschikt meer waren om multifunctioneel inzetbaar te worden gemaakt. Opnieuw beginnen was dan ook beter. Nu, ruim een jaar later, is de nieuwe parser feature-complete en klaar om te worden ingezet. Aangezien een groot deel test-driven was ontwikkeld, hebben we ook meteen een nette testcoverage van zo'n 95 procent.
In deze iteratie hebben we voor de reacties en productreviews de huidige parser vervangen door deze nieuwe. In de komende tijd zullen we de nieuwe parser ook op alle andere plekken, inclusief het Forum, gaan inzetten.
Meer koptelefoons in de Pricewatch
Zoals we in eerdere iteraties al hebben meegedeeld, is onze productcontentafdeling druk met het automatiseren van productinformatie in de Pricewatch. Hier bundelen we de krachten van de kwantiteit van een dataleverancier met de kwaliteit en expertise van het contentteam. In deze iteratie heeft dit tot gevolg dat we in staat zijn om driehonderd koptelefoons toe te voegen.
Community pick
In de komende sprints hebben we weer ruimte om een door de community gekozen feature te ontwikkelen. Stem in de onderstaande poll op jouw favoriet.