The past year for Joomla! Framework

No readers like this yet.
open source button on keyboard

Joomla! has been known for Joomla! Platform and Joomla! Content Managment System (CMS). The newest addition to the mix late last year was Joomla! Framework. Many say it's an exciting project with innovative development, so we interviewed our own Don Gilbert, who has been coordinating the project's efforts, to find out how it's going and what's new with the project.

About Don

28 years-old and lives in a suburb of Chicago

Became active in the Joomla! community around 2011, asking and answering questions on the mailing lists

Contributed to the Joomla! Platform,  (CMS), and now the Framework—plus, he's been a part of the Bug Squad and Security Strike Team

What motivates you about being a part of Joomla?

Don GilbertOne of the most motivating factors for me is the community. Everything about it is fun and amazing. I love being able to contribute code and knowledge that actually helps people. That is inspiring in and of itself.

Another motivating factor for me is that we use Joomla! as our platform of choice for client projects at my work. While the architecture of the Joomla! CMS allows for rapid development of applications and custom sites, it’s lacking a bit in architectural quality. Don’t take this in the wrong way though; such issues are to be expected for software that was started in 2005. Because of that, I became heavily involved in the project about two years ago to put my hand to the plow and do what I can to make it better for all developers, not just myself.

View the complete collection of Open Hardware Week articles

Today, Joomla! is eight years old and still following some of the same design patterns for back then. And we all know what was good a few years ago is laughed at today. By the way, there’s nothing that we are working on today that we won’t look back on in 5-8 years and say, "What were we thinking when we implemented that?" This is due to many factors, but mostly due to the evolution of the language Joomla! is written in: PHP. The past few years have brought about somewhat of a "PHP Renaissance." The language has had more releases and features added in the past four years than it had in the four years previous. This means the first half of Joomla’s life was built using legacy software and legacy "best practices." Being that we are an open source project, and have a very large user base, we can’t simply adopt new language features as soon we would like.

However, it’s been long enough now that we are able to begin adopting the current "best practices" and take advantage of current language features. Making this happen is what inspires me.

How did you get started with Joomla?

I got started in Joomla! while working for a non-profit company in Rockford, Illinois. I started in the art department but soon realized I would be much better suited in the IT department. After I made that switch, we were in the middle of migrating all of our Joomla! websites from 1.0 to 1.5, and I got to be a part of that. I learned a lot in that setting, and after a few years was pretty good at it. I began doing freelance Joomla! work for a company in Chicago, and they liked it so much that they hired me on full time. I’ve been working there for the past four years and don’t regret any of it. I’m very happy here and get to work with Joomla! every day.

Many are familiar with the Joomla! CMS, can you explain what the Joomla! Framework is and how it has evolved so quickly?

The Framework was born out of the need of core developers to have a more flexible platform on which to build different types of apps using the same development paradigms they utilized while coding for the CMS, but without all the additional overhead that the CMS environment brings along with it.

The code in the Framework is a modernized and cleaned up version of the /libraries/joomla folder in the Joomla! CMS. This is the same code that powers the CMS and what our 3rd party developers utilize while building extensions. Most of this code has existed for quite some time, and we were able to take it, modernize, and refactor it to follow current best practices such as Dependency Injection, Unit Testing better Object Oriented Design. Because we had a large code base to start with, it was simply a matter of cleaning up and implementing a few missing features and packages before we had a full-fledged framework on the same level as Symfony, Zend, or CakePHP. It’s really been quite the roller coaster ride.

Who is the team behind the Joomla! Framework?

Andrew Eddie, Ian Maclennan, Michael Babker, David Hurley, Rouven Wessling, and myself. In addition to the "core maintainers," we have a large community of developers that contribute to the project on an ongoing basis. Over 110 developers have contributed code, tests, and documentation to the project.

How can you start contributing to the Framework?

When we first started developing the Framework, we had all the code in a single repository. This aided us in handling issues that affected a lot of the code together such as composer updates and style issues. It has been set up this way for the past year. During that time, we’ve discovered some issues with that approach. Mainly, what to do when you have a code update that affects a single package that you would like to release, but isn’t significant enough to warrant a new version of the whole Framework.

So, this past weekend we made changes to the structure of the Framework repository. Instead of having all the code in a single repo which handled all the pull requests and issues, we’ve moved all the individual packages into their own repos and they now handle their own. This also allows each package to follow it’s own Semantic Versioning release schedule. If we have a bugfix for a single package, or we want to completely rewrite a package (which we’re doing with the Router), we can do that now and release the update when it’s ready.

You can find the Joomla! Framework packages on GitHub.

What resources would you recommend to other developers who are or want to work with open source?

Get involved. Create a GitHub account and start following your favorite projects. There is no contribution too small. Even something as seemingly little as fixing a typo is appreciated and welcome. Don’t forget that everyone starts somewhere. I started making a name for myself in the Joomla! Community by getting on the mailing lists and answering questions where I could. I also got involved in writing unit tests for the CMS code and doing the grunt work that the others didn’t want to do. If you have a vision for what you would like to see happen for a project, then the sky is the limit. Don’t let anyone tell you it can’t be done.

View the complete collection of Open Hardware Week articles.

User profile image.
Joomla! is an award-winning content management system (CMS), which enables you to build Web sites and powerful online applications. Many aspects, including its ease-of-use and extensibility, have made Joomla! the most popular Web site software available. Best of all, Joomla! is an open source solution that is freely available to everyone.


The Joomla Framework is a good idea, but it's not perfect. Two of the main issues that the Joomla Framework caused are:

- Inefficient ACL that can cause catastrophic problems on the site with the slightest user error.
- The fact that every single content item must have an entry in the assets table, which means that copying the content from one Joomla site to another isn't only about copying the #__content table.
- Many performance issues.

Yes, Joomla 1.5 was less organized, but it was a much more performing CMS than then later versions of Joomla.

Thanks for the support! I think the Framework is a good idea as well. :D

In regards to your concerns, I think you're confusing the Joomla Framework with the Joomla CMS. The Framework certainly does have a long way to go, but it has neither of the two issues you described. The functionality you referred to is in the CMS.

Creative Commons LicenseThis work is licensed under a Creative Commons Attribution-Share Alike 4.0 International License.