The Joomla Production Department shares its thoughts, ideas, challenges and plans for Joomla! 5.0
Let’s be honest, every two years having a new, major release sounds scary. In the past, we have not always been up to the mark regarding migration and updates. The reasons were manifold. The long development phase led to a big gap between the current major and the upcoming version. And because technology constantly changes, any large period of time means a lot of technological changes have to be considered, which then entails a larger migration hurdle.
Decreasing time to completion has its benefits but also some downsides. On the one hand, we can more easily react to new technologies, so the changes will not be too large. If the new major release is left too long, the migration leads to a nearly complete rebuild.
On the other hand, the quicker technology updates bring challenges to extension and template developers. We’re fully aware that it is sometimes painful to keep up-to-date with the changes in the architecture of Joomla, it involved the regular refactoring of the code to get rid of deprecated functions and classes.
There is no perfect time frame. No Goldilocks release period to help all, there are always winners and losers, and the pain will always lie with one part of the build process or another.
Some changes also seem a bit questionable at first glance. For example, why are most of the Joomla\Cms\Factory class deprecated and should they be removed with Joomla 5? It has worked like a charm for 11 years; why should it become bad practice now?
Such are the thoughts we have had in the different teams responsible for shipping our great, extendable, future-proofed and maintainable product. But let's tackle the challenges one by one.
Before we start talking about the future, let’s look back at where we are with Joomla 4. After around seven long years of development, we finally launched a new major version of Joomla!. And Joomla 4 is really a great piece of software, hands down. Building a component the Joomla 4 way needs much less code compared to Joomla 3. The security has been increased by many changes, including prepared statements to protect against SQL injections.
Accessibility has come on leaps and bounds, and the cool features grow all the time, workflows, scheduler, child templates, and the list grows.
We are also in a much better state community-wise, with many people stepping up to fill empty slots. Teams are growing, and there has been a positive vibe in GitHub as well as in the community channels. There are always things we could do better, but it's not for lack of trying, and our market share decline has slowed, stopped, and as of the time of writing, is showing a very slight growth in W3Tech graph and other sources have shown a more marked increase.
We have a clear strategy for success, we just need to build on it.
The most important “feature” of Joomla 5.0 is removing deprecated code. This makes Joomla future-proof. We will heavily reduce the maintenance effort by consolidating different areas of the code. Additionally, writing tests will be much easier and more reliable in the future.
We want to have a code structure that gives us the possibility to support 3rd party developers increasing their code quality and security. Imagine getting your code automatically test-covered just because you’re following the Joomla core standard; that is the vision for the future.Most importantly, we know the challenge of deprecated Joomla\Cms\Factory methods, which are widely used over the whole ecosystem. We’re currently in the process of ensuring that we’ll have a solution, so extensions using this will not be unusable in Joomla 5.0.
With Joomla 5.0, we will increase the minimum PHP version to 8.1. Making that change will bring us many benefits and help us to stay competitive in the market.
PHP 8.1 brings an enormous performance improvement for Joomla. The side effect is: that we’re using a more recent PHP version, one that is not about to be end-of-life too soon. This allows us to make the next steps in later Joomla versions, such as using fibres, event loops and other performance-enhancing features.
We want to bring in some benefits function-wise. For Joomla 4 we planned the multi-domain functionality, but after evaluating the complete requirements, we decided to move this feature to a later version as other ideas came into focus and we didn’t want to rush as it needs to work well. Now with Joomla 5.0, the time could be right, and the code mature enough to bring this feature into the core.
We are also in an active discussion about the future of content editing. Block editors like Gutenberg are a new way to make content editing work. We want to test the waters and see if it's right for Joomla. This depends, of course, on the number of volunteers who are willing to help us.
Everything that relates to CSS/template in any way is planned to be moved from the core layouts to Cassiopeia. Cassiopeia (or perhaps a new template) serves as a Bootstrap-based parent template and can then be customised via child templates. This makes it possible to build additional parent templates based on other frameworks like Tailwind or UIKit. We would like to integrate such an alternative template into Joomla 5 if someone can be found to implement it.
As is typical for a new major version, most of the improvements are not visible on the surface but are rather found under the bonnet.
This includes separating the database drivers for MySQL and MariaDB, which are becoming increasingly divergent. Separate drivers allow us to support the respective Database Management Systems (DBMS) in the best possible way. In addition, we want to realise the database connections preferably via sockets, which brings a speed increase.
So-called common table expressions - a feature now offered by all databases supported by Joomla - allow us to make access rights, categories and menus more performant because we can do without the complicated nested set implementation. Read accesses are not accelerated by this, but we expect a significant improvement in write access.
Currently, we’re working on two major things: developer documentation and the evaluation of all deprecated classes and functions in the Joomla CMS. So with the release of Joomla 4.3, we want to have all deprecated code in Joomla reviewed. This review will lead to one of two things:Either the deprecation is removed or A description and full code examples are provided as a code comment on how to migrate the usage of this code.
Additionally, the complete developer migration documentation should be ready, explaining how a Joomla 3 extension can be migrated and made fully compatible with Joomla 4, which is then compatible with Joomla 5.
We plan to remove the usage of all deprecated code in the Joomla CMS for the release of 4.4. So the Joomla CMS can then be seen as the best practice of how code should be written.
Last but not least, we plan to create for the Joomla 5.0 RC1 release a full set of rector rules to support the automated rewriting of deprecated code. To achieve this, we will not manually adjust the places where deprecated code is still used in the CMS but write corresponding Rector rules to make the changes. These rules are then available to extensions' developers to adapt their components, modules and plugins to Joomla 5 with one command line call, including automated refactoring for the Joomla\Cms\Factory deprecations. We hope to enhance the JED checker in a way that can give feedback about deprecated code in third-party extensions.
Meanwhile, we’re in full development mode for the new features like multi-domain. If you think you can contribute a valuable feature, feel free to reach out to us via the usual channels and we will see if it is possible to integrate for the benefit of all.
To answer the question raised at the beginning: we're very positive about getting 5.0 ready in time with many important changes for the future of Joomla, but we're dependent on YOU. We need your coding power, testing skills, writing and graphic artistry, and all the help you can offer. Then we will all get a great Joomla 5.0!