Joomla! World Conference 2026

What happens when one item naturally belongs to more than one category? That's the challenge I'm working on in my Google Summer of Code project with Joomla, the project that introduced me to open source.

My name is Reda Mohamed, and I'm a final-year Computer Science student from Egypt.

 

Reda Mohamed, GSoC 2026 contributor

Reda Mohamed, GSoC 2026 contributor.

 

For two years, a friend kept asking me to apply for Google Summer of Code with him. Every year I said no. I was studying, working part-time as an accountant, and I honestly didn't believe I was ready for open source. I thought it was for people who had been coding since they were twelve.

This year, when he asked again, something was different. I decided to stop waiting until I felt ready and just try.

I browsed through the organisations, found one I liked—then saw it required an interview and quietly moved on. Then I found Joomla.

The application involved a coding task: building a plugin that modifies an article title. Before I wrote a single line, I spent time reading through existing plugins, trying to understand how Joomla structured them and why. That was the moment I stopped seeing Joomla as a framework to complete a task in and started seeing it as something I wanted to understand properly.

After submitting, I was told there would be an interview after all. I hadn't really spoken English in a while—I read it constantly, but speaking was different. I was nervous. When the call started, though, it became clear pretty quickly that nobody cared whether my English was perfect. They wanted to talk about what I built and how I thought about the problem. The nervousness disappeared about two minutes in.

The discussion was about my code, my ideas, and the way I solved the problem. That meeting gave me more confidence than I expected.

The first time I met Herman, Christiane, and Benjamin was also the first time I'd ever had a video call with people from different countries. It's funny to think about now, but I was really excited and a little nervous.

Shortly after, Viviana joined as my mentor alongside Christiane. Working with them has shown me how welcoming and supportive the Joomla community really is.

The Project: Multi-Category Support for Joomla Items

Currently, a Joomla article can belong to only one category. This works well in many situations, but sometimes an article naturally belongs to more than one place. For example, a Joomla extension article could be useful for people reading Development as well as News, so it naturally belongs to both categories.

Today, website administrators usually have to find another way. They can use tags, but tags don't integrate with many Joomla features the same way categories do, or they simply choose one category even though the content belongs in several.

My GSoC project adds native multi-category support to Joomla content items. The design keeps one primary category—it controls routing, SEO, permissions, and remains fully backward compatible. Secondary categories are additive, so existing websites, templates, and extensions don't require any changes.

I started with articles because they're among the most complex content types in Joomla, largely because of the routing system. However, the architecture was designed to be generic, making future support for other content types straightforward.

What I Built

When creating or editing an article, there's now a Secondary Categories field. It uses the same search-and-chip interface Joomla already uses for tags, so it looks and behaves like a native Joomla feature.

 

secondary category field
Assigning secondary categories while editing an article. The primary category remains in its original field.

 

On the frontend, secondary categories appear below the article content, giving readers more context and making navigation easier.

 

secondary category view in the frontend
Secondary categories displayed on the article frontend.

 

For Category Blog and Category List menu items, I added two new options: whether to show secondary categories and whether to make them clickable links. Both follow Joomla's familiar Show / Hide / Use Global pattern, fitting naturally into the existing menu configuration.

 

the controller field to show secondary categories and whether to make them clickable links
New options available in Category Blog and Category List menu items.

 

The most interesting feature to build was Include Secondary Categories. When enabled, a category page also displays articles where that category is assigned as a secondary category—not only those where it is the primary one.

 

A field to control whether showing the articles that assign this category as a secondary category
The Include Secondary Categories option in the menu item settings.

 

In practice, a News category page can display an article whose primary category is Development, as long as News is one of its secondary categories. You get a much more flexible content organisation without touching routing or breaking anything that existed before.

More Than Just a Coding Project

Before this experience, I thought open source meant joining a project that already had everything figured out, finding a small bug, fixing it quietly, and leaving. Joomla was nothing like that.

Every decision I made on this project got discussed. Why structure the database this way and not that way? What happens to this edge case in the routing when a secondary category is deleted? Is this the right place in the UI for this option, or does it belong somewhere else? Those conversations were often more useful than the code itself.

I also learned what code review really means. Before GSoC, I thought it was just someone checking whether my code worked. Now I see it differently. It's about discussing ideas, understanding why something was done a certain way, and finding better solutions. My mentors didn't just point out what to change—they explained why, and that made every review a learning experience.

Joomla is used by a large community around the world. Knowing that something I'm building could eventually help real users makes this project feel far more meaningful.

There's still more to do: extending multi-category support to other Joomla content types, batch category assignment, deeper integration with the filtering system. The foundation is built with that in mind. I want to keep working on it after the summer ends.

When I started the application process, I was worried about having an interview in English, and I wasn't sure if I was ready for open source. Now, after joining Joomla, I realise that open source isn't about knowing everything before you start. It's about learning together, asking questions, and contributing one step at a time. The Joomla community showed me that you don't have to know everything before you start; you just need to be willing to learn and contribute.

About the author

I'm always curious to learn something new and enjoy solving problems through programming. Open source gives me the chance to learn from others while building something useful together.

Joining Google Summer of Code with Joomla has been one of the best learning experiences for me, and I look forward to contributing even more in the future.

Some articles published on the Joomla Community Magazine represent the personal opinion or experience of the Author on the specific topic and might not be aligned to the official position of the Joomla Project

Comments