The Joomla Production Department shares the outcome of the discussions that the last Joomla 5 article generated.
We’ve heard the feedback from the community and made some decisions regarding the Joomla 5 release and the release cycle in general.
If you don’t read anything else, here’s what you need to know:
- Joomla 5 will not include breaking changes for templates and third-party extensions.
- Will not remove any code that was marked as deprecated in Joomla 4.
- Joomla 5 will have a minimum PHP version of PHP 8.1.
- Components that work in Joomla 4 should also work in Joomla 5, as long as they support PHP 8.1.
- Joomla 5 will be released in October 2023. Because of the above points, it will not be a big, painful update like past releases.
- Minor releases will remain on a 6-month schedule but all releases will be shifted to the months of April and October, starting with the 4.3 release in (April 2023).
If you want to know more about the reasoning and details of these decisions, keep reading.
There has been a lot of discussion in the past few weeks following the Joomla 5 announcement Joomla! 5.0 Bold in one year - But can WE do it?
asking if it is possible to release Joomla 5 in one year. The article was designed to stimulate interest and feedback and the Production Department appreciates this living exchange of ideas, requests and feedback. Members of the Production Department participated in the discussion through several channels to get personal opinions and to better understand how people see Joomla 5 affecting their world.
Based on this feedback we have had several motions and have made many decisions over the last few days regarding the future of Joomla 5.
We identified the two biggest concerns to overcome, both costing time and money:
- An update to Joomla 5 will be a painful migration again (and then to 6 again etc)
- Extensions running on Joomla 4 are again not compatible with Joomla 5
There were also other concerns, such as:
- Code marked as deprecated did not have documentation showing developers what to do instead.
- The current release schedule is disruptive for our volunteers and community, especially during the summer for both hemispheres.
- A major release needs to have something to make the upgrade “worth it”
- Using core (e.g. template overrides) should not punish the developers when moving to new versions, forcing them to rebuild.
- The time frames are too tight
As a result of these discussions, the Production Department has made several decisions.
- We will remain on a 6-month release cycle for minor releases. The reason is to protect Release Managers from burnout as a release is a lot of work, they start 6 months before the release and then work another 6-months when the release is out. Having fixed months which are reliable helps everyone plan.
- We will also stay with two-year releases for major versions. So Joomla 5 will be released in 2023, Joomla 6 in 2025 and so on. The reason is, to keep the steps as small as possible, in order to avoid painful, major upgrades like in the past.
New major versions will focus on cleaning up deprecations, maintaining dependencies and making the upgrade steps as smooth as possible.
The fourth minor version of each life cycle (e.g. 4.4, 5.4, 6.4) is a “caretaker version”, where the focus is on refining the Update Checker, ironing out leftover bugs and producing a stable product as a base for the upcoming major.
We are working towards a smooth, seamless upgrade path. Many involved in the decision-making are website developers themselves so understand the pain that is involved. Longer time frames mean bigger steps, and shorter time frames lead to smoother steps. The Production Department’s aim is to create a smooth process and provide developers and web agencies more control over when they make the changes.
New release months
- Major versions will be released on a two-year cycle - Joomla 5 in 2023, Joomla 6 in 2025 etc. This will reduce the steps required when upgrading to a new major version.
- Minor versions will continue to be released on a six-month cycle. This prevents release manager “burnout” and provides a reliable release date.
- The months for the release will be moved to April & October to avoid the summer holidays in both hemispheres. (a direct result of feedback received)
To make it short:
We will not remove the “legacy MVC framework”, the “legacy plugin framework”, the “legacy module framework” and the “Factory” class. That means components running in Joomla 4 should also work with Joomla 5 (with the requirement that they support PHP 8.1).
The long story is:
Production passed a motion that all deprecations may be removed, at the earliest, +2 major versions after they’re declared deprecated. That means if code is declared as deprecated in version 4.x, the earliest it can be removed is Joomla 6. This motion covers (beside others):
- Legacy MVC Framework
- Legacy Plugin Framework
- Legacy Module Framework
and allows the earliest removal of deprecated code in the year 2025.
Instead of extending the release cycle to 3 years for Joomla 5, we give 3rd party developers at least a total of 4 years to upgrade their extension. This also mitigates the need to support three versions of the extension.
Remember, “earliest” doesn’t mean the deprecated code will be removed at that time, it just opens up the possibility.
We started commenting and clarifying deprecations with this pull request, which will be updated in the next couple of days.
Joomla 5 will require a minimum PHP version of 8.1.
When Joomla 5 is released, PHP 7.4 will be end-of-life (EOL) without security updates or bug fixes (see PHP versions).
Joomla 5 will require PHP 8.1. If your host does not support 8.1 at the time of Joomla 5, you can either change hosts or continue with Joomla 4 for two more years.
PHP 8.1 brings, amongst other new features, the possibility of “parallel” execution of parts of the code, which can result in an immense increase in performance. Moving to PHP 8.1 for Joomla 5 allows us to write code that makes use of this feature and even if we don't have the time to use this in 5.0, this requirement leaves the door open for us to use it in a minor version further down the line speeding up the CMS and allowing extension developers to also reap the benefits.
Joomla 5 will support MySQL 8.0.11+, MariaDB 10.4+ and PostgreSQL 12+.
We will separate the database drivers for MySQL and MariaDB, as the two systems are becoming more and more distant from each other. Separate drivers allow us to support the respective database management systems (DBMS) in the best possible way.
As developers, you can continue shipping a MySQL file as long as you only use functions supported by both drivers. If you need MariaDB-specific functions, you can provide a MariaDB file.
PHP 8.1 allows us to make I/O (read and write) operations asynchronous, i.e. to run in the background. This possibility will be made available for Joomla 5 extensions.
Modern database systems provide recursive queries. This will make it possible to replace nested sets. Nested sets are used for access control, categories, etc., but, while they are very fast when reading, they are very time-consuming to write. For sites with thousands of articles in categories or users and user groups, this sometimes leads to performance problems. Therefore, in Joomla 5, the nested sets will be replaced by recursive queries.
Compatibility plugin (Early adopters)
Deprecated code is deprecated for a reason; most of the time there is better, faster, more usable code which gives your website a boost. Supporting deprecated code for a long time period is a negative thing for website owners wishing to use only state-of-the-art code (or core only). For them, deprecated code is a burden. How can we help them?
The aim is to move as much of the deprecated code as possible to a system plugin which is enabled by default on upgrade. This idea was first used as far back as Joomla 1.0 and worked. With advances such as namespacing, the idea can be made even more powerful to help give power back to the owner of a site. Site owners who know they’re not relying on that code can switch off the plugin and benefit from improved performance and cleaner code. For example, we will move the class aliases like JDatabase (which only exists virtually) to this system plugin.
This plugin has some rules as to when it can be changed:
- The plugin holds only the deprecated code from the previous major version
- It can only be updated when a new major version is released
So with Joomla 5, the plugin would contain all (possible) deprecations from Joomla 4, but no deprecations from Joomla 5.
When we release Joomla 6, we will remove all deprecations coming from Joomla 4 from the plugin (and if leftover) from the core. We could then also move all possible deprecations from Joomla 5 core to the plugin. When updating to Joomla 6, the plugin will be activated again, to ensure a smooth upgrade.
New installations will be shipped with the plugin disabled and extension developers can, if needed, activate the plugin on the installation of their extension. When the plugin is activated, a message in the backend dashboard will be displayed to the user to inform them.
We listened to the fears of many that upgrades affect the uptake of Joomla and make the life of web agencies and developers hard, and we heard others saying that we needed to keep on the curve of speed and security. We hope this solution will provide a smoother upgrade path, more time when it's needed and allow us to also offer the latest, fastest and most secure build package for those that need it.
One important issue for Joomla is the documentation. We need solid documentation. Production cannot manage it alone. Here we can lead and provide resources but we’re absolutely depending on the help of the community to see it through.
- We started a new project: manual.joomla.org which we plan to fill with detailed hands-on developer documentation for developing extensions. This year we plan to have community sprints where everyone can participate to learn about the new documentation and help fill it with content. We will keep you posted.
- Production has passed a motion that from now on new features can only be merged, when there is written documentation for developers (manual.joomla.org) and end users (docs.joomla.org).
- Code can only be deprecated when a migration guide is written for manual.joomla.org. This will allow anyone interested to track these deprecations by subscribing to the documentation repository. One can provide feedback before the deprecation is finally carried out.
With these new motions passed that documentation is required when new features are added and code deprecated with migration guides, support is also being given to help developers write their documentation. Even if English isn’t your native language, or if writing isn’t your strong suit, you can still contribute code and get help writing docs from a “Documentation Buddy”. A Documentation Buddy will guide you to resources to write your docs, or hand-hold to assist you to write your docs.
Both the developer, documentation buddy, and the community will benefit from more and better documentation throughout the development process. It will help everyone understand, appreciate, and use new features and migrate away from using deprecated code.
The following gets more technical and for those who are not developers the summary is that we are tidying things up so that core changes have less impact on template developers.
In the discussions about the new version, fears were being voiced that all templates may have to be adapted at great expense to the developers. This results from the experience with earlier major versions, which had to break templates in order to improve the internal structure.
Fortunately, in Joomla 4 we have the WebAsset Manager, which allows us to keep such breaks small in future versions. We also plan to take great advantage of the new Joomla 4 feature “Child templates” to reduce the pain even further.
The long-term goal is that the core layouts and Cassiopeia will be decoupled (self-contained and no longer reliant on each other).
Decoupling would allow us to plan to have a “bootstrap template” as a baseline where all bootstrap-dependent code is included as an override. Everything that is template-specific in any way is moved from the core layouts to Cassiopeia. Cassiopeia either then becomes a child template of this new “bootstrap 5” template or stays as a standalone with all the overrides included. This makes it possible to build additional parent templates based on other frameworks such as Tailwind or UIKit.
For template designers, this means that their layout customisations and overrides become less sensitive to changes in the CMS and that overrides do not have to be rebuilt with every new major version.
The backend template will stay on bootstrap 5 and should only receive minor changes to improve usability.
A Renewed Commitment to UX
We are all aware that both core templates still have their flaws and have a lot of room for improvement. Therefore we’re very happy to announce that a new team is in formation: The Joomla Experience Team (JXT).
The goal of the team is to increase the overall user experience in Joomla, which also includes the templates and much more. We all have great hopes that this team will give us, in cooperation with the Joomla Accessibility Team (JAT), a big push in the right direction.
We need your help! We plan to create some Pizza, Bugs & Fun events very soon, but please reach out to the teams and get involved now! To get better, we need many minds and fingers working together
The essential task of a major release is to provide new features that were not feasible with the existing code base.
In the short time that we have to get Joomla 5 out the door, we probably won't get all the nice new features we'd like to include (multi-domain) completed. However, Joomla 5 will bring everything that is needed to implement them in a later version, if desired.
This should not hold you back from contributing new features yourself. We will also, once again, benefit from features developed during the Google Summer of Code, and that are nearly ready, like improved Search Engine Optimization (SEO).
And who knows, perhaps we get more features done…it’s up to you, the Joomla community.
Support for extension developers
We will provide a (complete) set of Rector rules in time for the first release candidate of Joomla 5 to support the automatic rewriting of deprecated code. (Rector is a relatively new development tool that can rewrite code based on sets of rules). These rules will be available to extension developers to adapt their components, modules and plugins to Joomla 5 with a command line call. It will probably not be possible to eliminate all manual changes but, with Rector, it can be kept to a minimum.
It can only happen with your help
We are a large community. It's worth remembering the achievements of this project, the businesses it supports, and the employment it provides. For many in teams, it's their evenings and free time that they give to the project week in and week out. They, as much as anyone, want to get it right.
The articles we posted asked for feedback and then highlighted a possible pathway.
There was a lot of feedback, sometimes contradictory and on more than one platform so we have had to take time to distil, refine and make further enquiries to gather more facts, then talk through solutions to the ideas put forward.
This is a really worthwhile process, not everyone will get what they in particular wanted but Production hopes that with hard work and the community pulling together, we can all benefit from this open and worthwhile dialogue, that the product we pass on will evolve into a better, more crafted product capable of supporting future generations of websites and website builders.
Joomla is entirely volunteer and community-based. Without the people who were so passionate about the various ideas coming on board to turn ideas into code, it will not happen. Several have already stepped up and agreed to form teams and work together which is brilliant and inspiring, but there is always room for more.
Please, if you are a coder, document writer, marketeer, or a user willing to test and report back what you find, do reach out via the volunteer portal and the contribute to joomla page, get involved and take Joomla to the next level!