Mijn reis van onzekerheid naar Joomla-ontwikkelaar
Wat gebeurt er wanneer één artikel eigenlijk in meer dan één categorie thuishoort? Dat is de uitdaging waaraan ik werk binnen mijn Google Summer of Code-project bij Joomla, het project dat mij heeft geïntroduceerd in de wereld van open source.
Mijn naam is Reda Mohamed en ik ben laatstejaarsstudent Informatica uit Egypte.
Reda Mohamed, GSoC 2026-contributor
Twee jaar lang vroeg een vriend mij om samen met hem deel te nemen aan Google Summer of Code. Elk jaar zei ik nee. Ik was aan het studeren, werkte parttime als boekhouder en geloofde eerlijk gezegd niet dat ik klaar was voor open source. Ik dacht dat open source bedoeld was voor mensen die al programmeerden sinds hun twaalfde.
Dit jaar, toen hij het opnieuw vroeg, voelde het anders. Ik besloot niet langer te wachten tot ik me er klaar voor voelde en het gewoon te proberen.
Ik bladerde door de deelnemende organisaties en vond er één die me aansprak. Toen zag ik dat er een sollicitatiegesprek voor nodig was en liep ik stilletjes verder. Daarna ontdekte ik Joomla.
De sollicitatie bestond uit een programmeeropdracht: het bouwen van een plugin die de titel van een artikel wijzigt. Voordat ik ook maar één regel code schreef, heb ik tijd besteed aan het bestuderen van bestaande plugins. Ik wilde begrijpen hoe Joomla ze structureerde en waarom. Dat was het moment waarop ik Joomla niet langer zag als een framework om een opdracht mee uit te voeren, maar als een platform dat ik echt wilde begrijpen.
Na het indienen van mijn opdracht kreeg ik te horen dat er toch een interview zou volgen. Ik had al een tijd geen Engels meer gesproken. Ik las het voortdurend, maar spreken was iets anders. Ik was nerveus.
Toen het gesprek begon, werd al snel duidelijk dat niemand zich druk maakte over perfect Engels. Ze wilden praten over wat ik had gebouwd en hoe ik over het probleem had nagedacht. Na ongeveer twee minuten verdwenen de zenuwen.
Het gesprek ging over mijn code, mijn ideeën en mijn aanpak. Die ontmoeting gaf me veel meer zelfvertrouwen dan ik had verwacht.
De eerste keer dat ik Herman, Christiane en Benjamin ontmoette, was ook de eerste keer dat ik een videogesprek had met mensen uit verschillende landen. Als ik eraan terugdenk moet ik lachen, maar ik was echt enthousiast en tegelijkertijd een beetje gespannen.
Kort daarna sloot Viviana zich aan als mentor, naast Christiane. Door met hen samen te werken ontdekte ik hoe gastvrij en ondersteunend de Joomla-community werkelijk is.
Het project-idee: ondersteuning voor meerdere categorieën per Joomla-item
Momenteel kan een Joomla-artikel slechts aan één categorie worden gekoppeld. In veel situaties werkt dat prima, maar soms hoort een artikel van nature thuis in meerdere categorieën.
Een artikel over een Joomla-extensie kan bijvoorbeeld interessant zijn voor bezoekers die de categorie Ontwikkeling bekijken, maar ook voor bezoekers die Nieuws lezen. Het hoort dus eigenlijk in beide categorieën thuis.
Tegenwoordig moeten websitebeheerders hiervoor een alternatieve oplossing bedenken. Ze kunnen tags gebruiken, maar tags integreren niet met alle Joomla-functionaliteiten zoals categorieën dat doen. Of ze kiezen noodgedwongen één categorie, terwijl de inhoud eigenlijk in meerdere categorieën thuishoort.
Mijn GSoC-project voegt native ondersteuning voor meerdere categorieën toe aan Joomla-contentitems.
Het ontwerp behoudt één primaire categorie. Deze bepaalt de routing, SEO, toegangsrechten en blijft volledig achterwaarts compatibel. Daarnaast kunnen één of meer secundaire categorieën worden toegevoegd. Hierdoor blijven bestaande websites, templates en extensies gewoon functioneren zonder aanpassingen.
Ik ben begonnen met artikelen, omdat die tot de meest complexe contenttypes binnen Joomla behoren, vooral vanwege het routersysteem. De architectuur is echter bewust generiek opgezet, zodat ondersteuning voor andere contenttypes later eenvoudig kan worden toegevoegd.
Wat ik heb gebouwd
Bij het aanmaken of bewerken van een artikel is er nu een veld Secundaire categorieën beschikbaar.
Dit gebruikt dezelfde zoek- en selecteerinterface die Joomla ook voor tags gebruikt, waardoor het eruitziet en werkt als een natuurlijke Joomla-functie.

Secundaire categorieën toewijzen tijdens het bewerken van een artikel.
De primaire categorie blijft in het oorspronkelijke veld staan.
Aan de voorkant van de website worden de secundaire categorieën onder de artikelinhoud weergegeven. Hierdoor krijgen bezoekers meer context en wordt navigatie eenvoudiger.

Secundaire categorieën weergegeven bij een artikel op de website.
Voor menu-items van het type Categorieblog en Categorielijst heb ik twee nieuwe opties toegevoegd:
-
Secundaire categorieën weergeven of verbergen
-
Secundaire categorieën als klikbare links tonen of niet
Beide opties volgen het vertrouwde Joomla-patroon Tonen / Verbergen / Algemeen gebruiken, waardoor ze naadloos passen binnen de bestaande menuconfiguratie.

Nieuwe opties beschikbaar voor Categorieblog- en Categorielijst-menu-items.
De interessantste functie om te bouwen was Inclusief secundaire categorieën.
Wanneer deze optie is ingeschakeld, toont een categoriepagina niet alleen artikelen waarvoor die categorie de primaire categorie is, maar ook artikelen waarin die categorie als secundaire categorie is toegewezen.

De optie “Inclusief secundaire categorieën” binnen de instellingen van het menu-item.
In de praktijk betekent dit dat een categoriepagina zoals Nieuws ook een artikel kan tonen waarvan Ontwikkeling de primaire categorie is, zolang Nieuws als secundaire categorie is gekoppeld.
Zo ontstaat een veel flexibelere contentstructuur zonder de routing aan te passen of bestaande functionaliteit te breken.
Meer dan alleen een programmeerproject
Voor deze ervaring dacht ik dat open source betekende dat je je aansloot bij een project waarin alles al was uitgedacht, een kleine bug oploste en daarna weer vertrok. Joomla bleek totaal anders te zijn.
Elke beslissing die ik tijdens dit project nam, werd besproken. Waarom deze databasestructuur en niet een andere? Wat gebeurt er met een uitzonderingssituatie in de routering wanneer een secundaire categorie wordt verwijderd? Is dit de juiste plek voor deze optie in de gebruikersinterface, of hoort die ergens anders thuis?
Die gesprekken waren vaak minstens zo leerzaam als het schrijven van de code zelf.
Ik leerde ook wat code review werkelijk inhoudt. Voor GSoC dacht ik dat code review simpelweg betekende dat iemand controleerde of mijn code werkte. Nu zie ik dat heel anders.
Het gaat om het bespreken van ideeën, begrijpen waarom iets op een bepaalde manier is gedaan en samen betere oplossingen vinden. Mijn mentoren wezen niet alleen aan wat er moest veranderen; ze legden ook uit waarom. Daardoor werd elke review een leermoment.
Joomla wordt wereldwijd gebruikt door een grote gemeenschap. Het besef dat iets wat ik bouw uiteindelijk echte gebruikers kan helpen, maakt dit project veel betekenisvoller.
Vooruitkijken
Er is nog genoeg werk te doen:
-
Ondersteuning voor meerdere categorieën uitbreiden naar andere Joomla-contenttypes
-
Batchtoewijzing van categorieën toevoegen
-
Diepere integratie met het filtersysteem realiseren
De basis is al met deze uitbreidingen in gedachten ontworpen. Ik wil hier ook na de zomer aan blijven werken.
Toen ik begon met de sollicitatieprocedure maakte ik me zorgen over een Engelstalig interview en wist ik niet zeker of ik wel klaar was voor open source.
Nu ik deel uitmaak van Joomla, realiseer ik me dat open source niet draait om alles weten voordat je begint. Het gaat om samen leren, vragen stellen en stap voor stap bijdragen.
De Joomla-community heeft mij laten zien dat je niet alles hoeft te weten voordat je begint. Het enige wat je nodig hebt, is de bereidheid om te leren en bij te dragen.