6 minutes reading time (1253 words)

Interview with the all-rounder Tuan Pham Ngoc!

Interview with the all-rounder Tuan Pham Ngoc!

There have been many people involved in Joomla over the past 20 years; some build websites for clients, some help for a time by promoting Joomla, some others contribute their time to a Joomla! Team, some build an extension, and others write code to fix, or improve a functionality in Joomla!... and then, some are all-rounders: they do most if not all of the above...

One such person is Tuan Pham Ngoc - a super extension developer, volunteer and contributor to the Joomla core.

Now to learn a bit more about him...

How did you find out about Joomla, and why start developing for it?

During my fourth year as a university student, I was looking for a part-time job for the PHP programming language. Luckily, the company I worked for was receiving Joomla outsourcing projects, so they asked me to learn Joomla, and that was when the journey began - it changed my life. When I graduated, together with my two friends, we formed a team called Ossolution. We worked on all kinds of Joomla outsourcing projects on a famous freelancer website for Joomla called Joomlancers.com. We started with a small team, we grew to be one of the best freelancer teams on that platform, and we gathered lots of experience with Joomla during that time. My first Joomla extension was Documents Seller. I developed it because at that time, I saw the need for having an extension to allow selling digital download products for Joomla (eBooks, even Joomla extensions, Joomla templates, etc.), and I had experience working with a PayPal payment gateway extension. It gave me some income while I still had time to work on other outsourcing projects, so I was very happy. With the success of that extension, I continued developing other extensions, as you can see on our website, https://www.joomdonation.com, today.

When did you start developing Joomla Extensions? 

I started developing Joomla extensions around 2008, when I published my first extension, Documents Seller, on the Joomla Extensions Directory (JED). At that time, I was working with Joomla 1.5. However, my journey with Joomla began earlier, around 2006, when I was still a student and working part-time. Back then, I was using Joomla version 1.0.8, if I recall correctly. Mambo was still available during that period - so it has indeed been quite some time ago. Time flies!

Which is your largest, most complex Joomla extension?

Today, that would probably be Events Booking. Before developing Events Booking, I developed some other smaller extensions like Documents Seller, Joom Donation, Payment Form… Honestly, I had more success than I expected, and it allowed me to work full time on extensions development. During my freelancer days, I received many projects working on events/events registration extension like Events List, JCalPro, JEvents, DT Register, so I saw the need for a good extension to allow managing events, and handle registration, integrate with payment gateways (which I had good experience with). That was the reason I started developing Events Booking. I started with basic features, listened for feedback from customers, step by step improving it based on customer feedback making the extension one of the best of its kind today. Working hard, listening to customers feedback, providing good support for customers have been the key for success in my extension development career.

How much of your time is spent % wise on that extension compared to the others?

Events Booking being my biggest extension, I spent roughly 40% of my development time to maintain and support customers. The other extensions, like Membership Pro, Payment Form, Helpdesk Pro, Documents Seller, which I also maintain, take less time. We have other extensions on our website, but these extensions are maintained by the other two co-founders.

What was/is the toughest part of coding this extension for Joomla?

Backward compatibility. My extension supports not only overriding layouts like any other Joomla extension, but I also support overriding controller/model/view/static helper classes. I care very much about backward compatibility; it makes upgrading extensions smooth, even on new major releases. But sometimes, it also prevents me from modernizing the code base. I try my best to have clean code, but I know I still have a bit of ugly code there due to my backward-compatibility promise.

How much time did it take you to convert your largest extension to be compatible with Joomla 5 coding standards (from J3!)?

For a standard extension like Weblinks or Contacts, I estimate it would take up to two days to complete the conversion. However, for my largest extension, Events Booking, the conversion process began much earlier—back when Joomla 4 alphas were released. Since then, I’ve continuously tested and modified it to ensure it works seamlessly by the time Joomla 4 reached its stable release. Honestly, I can’t say exactly how much time I’ve spent on the conversion because it has been an ongoing effort. I always strive to keep my extensions up to date with Joomla’s changes. For instance, whenever a Joomla API is deprecated, I promptly update my extension code to stop using the deprecated API. This proactive approach makes the transition process smoother and significantly reduces the time required for major conversions.

What do you like best about Joomla? 

As a developer, I like Joomla for its clean codebase, well-structured architecture, and highly extensible system. It offers built-in support for features like categories, custom fields, tags, and version history... And it is incredibly easy for third-party extension developers like me to integrate these functionalities with minimal effort.

However, what I like most is the amazing, friendly community behind Joomla. Many dedicated volunteers contribute countless hours to various aspects of the project, bring success to it, and, believe it or not, many of them have their paid jobs unrelated to Joomla.

What piece of advice would you have for anyone thinking about developing an extension for Joomla 5?

  • Whenever possible, develop using a modern IDE like PHPStorm or equivalent. It will enhance your productivity, provide robust debugging tools, and help you write cleaner, more efficient code.

  • Try to use the features offered by Joomla out of the box for your extensions instead of building things your own way. For example, Joomla provides support for categories, custom fields, tags, and version history, which you can easily integrate into your extensions with minimal effort.

  • Keep your extensions aligned with Joomla’s development. For instance, when Joomla deprecates certain APIs, update your extensions to use the recommended alternatives. This proactive approach ensures your extensions remain compatible with future Joomla versions. By staying up-to-date, you’ll significantly reduce the time and effort required to adapt your extensions when new major versions are released.

  • Regularly monitor the Joomla CMS repository. This will keep you informed about ongoing development, new features, and upcoming changes. It’s also an excellent way to learn from discussions and the core development process.

  • Connect with the community - not only on GitHub, but also on Mattermost...

  • Consider contributing to Joomla’s codebase, particularly the CMS repository. Not only is this a great way to give back to the platform you love, but it also helps sharpen your programming skills. By contributing, you’ll gain a deeper understanding of Joomla’s inner workings, enabling you to build extensions that align with Joomla’s best practices.

Thank you for the time spent, Tuan, not just in this interview but in your countless hours volunteering, giving advice, giving back to the Joomla core codebase, helping the community, serving your customers well, and creating really smooth-running extensions!

We look forward to what you will do next...

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

0
The February Issue
 

Comments

Already Registered? Login Here
No comments made yet. Be the first to submit a comment

By accepting you will be accessing a service provided by a third-party external to https://magazine.joomla.org/