Skip to content

Conversation

@muhme
Copy link
Contributor

@muhme muhme commented Oct 28, 2025

User description

Update is caused by joomla-cms/pull/46324 which links to migrations/54-60/compat-plugin.

  • Removed four times 'not been released yet' as Joomla 6.0 is released
  • Changes title from singular to plural, but not the file name, as it used as link in the PR above.
  • Rewritten the main content (the two b/c plugins) from Joomla 6 view.
  • Named exactly 'Behaviour - Backward Compatibility 6', as we have also 'Behaviour - Backward Compatibility' plugin.
  • Moved DEVELOPER NOTE to the end, as it is a secondary information.
  • Added list of PRs for the 'Behaviour - Backward Compatibility 6'.
    • Is this list complete?
    • Is the list useful?
  • Added a note for NEW INSTALLATION as we saw the question multiple times, even it is not direct related to the migration.
  • Merged the given infos from the three deleted and to b/c plugin moved functionality into 'Removed and Backward Incompatibility' and linked this page.
    • Is the merge correct?
  • Line breaks at 120 chars.

PR Type

Documentation


Description

  • Removed "not been released yet" notices from migration pages

  • Restructured compatibility plugins documentation with Joomla 6 focus

  • Added list of related PRs for Behaviour plugin implementation

  • Enhanced backward compatibility information with code examples

  • Added note for new installations regarding plugin defaults


Diagram Walkthrough

flowchart LR
  A["Migration Docs"] -->|Remove pre-release notices| B["Updated Pages"]
  C["Compat Plugin Info"] -->|Restructure & expand| D["Joomla 6 Focus"]
  E["Related PRs"] -->|Add list| F["Implementation Details"]
  G["Code Examples"] -->|Enhance| H["Migration Guidance"]
Loading

File Walkthrough

Relevant files
Documentation
compat-plugin.md
Restructure and expand Joomla 6 compatibility plugin documentation

migrations/54-60/compat-plugin.md

  • Changed title from singular to plural "Compatibility Plugins"
  • Removed pre-release developer notes as Joomla 6.0 is now released
  • Restructured content to prioritize Joomla 6 plugin over Joomla 5
  • Added detailed explanation of plugin behavior in upgrades vs new
    installations
  • Added list of 6 related PRs documenting plugin implementation
  • Moved developer warning about behaviour plugin type to end
  • Added code examples and migration guidance for removed functionality
+39/-42 
new-deprecations.md
Remove pre-release notice from deprecations page                 

migrations/54-60/new-deprecations.md

  • Removed "not been released yet" developer note
+0/-4     
new-features.md
Remove pre-release notice from features page                         

migrations/54-60/new-features.md

  • Removed "not been released yet" developer note
+0/-4     
removed-backward-incompatibility.md
Enhance backward incompatibility documentation with plugin references

migrations/54-60/removed-backward-incompatibility.md

  • Removed "not been released yet" developer note
  • Enhanced CMS Input removal description with backward compatibility
    plugin reference
  • Updated section titles to reference 'Behaviour - Backward
    Compatibility 6' plugin specifically
  • Added code examples for JPATH_PLATFORM constant migration
  • Expanded BaseApplication and CLI classes removal with detailed
    migration guidance
  • Added missing PR reference and improved formatting for consistency
+28/-13 

Update is caused by [joomla-cms/pull/46324](joomla/joomla-cms#46324) which links
to `migrations/54-60/compat-plugin`.

* Removed four times 'not been released yet' as Joomla 6.0 is released
* Changes title from singular to plural, but not the file name, as it used as link in the PR above.
* Rewritten the main content (the two b/c plugins) from Joomla 6 view.
* Named exactly 'Behaviour - Backward Compatibility 6', as we have also 'Behaviour - Backward Compatibility' plugin.
* Moved DEVELOPER NOTE to the end, as it is a secondary information.
* Added list of PRs for the 'Behaviour - Backward Compatibility 6'.
  * Is this list complete?
  * Is the list useful?
* Added a note for NEW INSTALLATION as we saw the question multiple times,
  even it is not direct related to the migration.
* Merged the given infos from the three deleted and to b/c plugin moved functionality into
  'Removed and Backward Incompatibility' and linked this page.
  * Is the merge correct?
* Line breaks at 120 chars.
@qodo-merge-pro
Copy link
Contributor

qodo-merge-pro bot commented Oct 28, 2025

PR Compliance Guide 🔍

(Compliance updated until commit 6f7c2b4)

Below is a summary of compliance checks for this PR:

Security Compliance
🟢
No security concerns identified No security vulnerabilities detected by AI analysis. Human verification advised for critical code.
Ticket Compliance
🎫 No ticket provided
  • Create ticket/issue
Codebase Duplication Compliance
Codebase context is not defined

Follow the guide to enable codebase context checks.

Custom Compliance
🟢
Generic: Meaningful Naming and Self-Documenting Code

Objective: Ensure all identifiers clearly express their purpose and intent, making code
self-documenting

Status: Passed

Learn more about managing compliance generic rules or creating your own custom rules

Generic: Secure Error Handling

Objective: To prevent the leakage of sensitive system information through error messages while
providing sufficient detail for internal debugging.

Status: Passed

Learn more about managing compliance generic rules or creating your own custom rules

Generic: Secure Logging Practices

Objective: To ensure logs are useful for debugging and auditing without exposing sensitive
information like PII, PHI, or cardholder data.

Status: Passed

Learn more about managing compliance generic rules or creating your own custom rules

Generic: Comprehensive Audit Trails

Objective: To create a detailed and reliable record of critical system actions for security analysis
and compliance.

Status:
No runtime logs: The PR only updates documentation content and adds no code paths that could log critical
actions, so audit trail compliance cannot be assessed from this diff.

Referred Code
The **‘Behaviour – Backward Compatibility 6’** plugin is essential for the migration from Joomla! 5.4 to 6.x.

In Joomla 5.4, this plugin is installed and enabled by default, but it does not perform any actions.
Its presence ensures that when the site is upgraded to Joomla 6, the updated code can run immediately,
and any third-party extensions requiring the plugin to be enabled in Joomla 6 will not cause the update to fail.

As a `behaviour`-type plugin, it loads before any other plugin —
a critical requirement for ensuring backward compatibility.

For upgrades from Joomla! 5.4 to Joomla! 6.x, it is mandatory that this plugin is both installed and enabled.
To review which backward compatibility cases have been removed, see
[Removed and Backward Incompatibility](../removed-backward-incompatibility).

:::tip NEW INSTALLATIONS
For new Joomla! 6.0 installations, the **‘Behaviour – Backward Compatibility 6’**
plugin is installed but disabled by default.
:::

Related PRs are:
* [45336](https://github.com/joomla/joomla-cms/pull/45336)
    Introduce Joomla 6.0 compatibility plugin


 ... (clipped 26 lines)

Learn more about managing compliance generic rules or creating your own custom rules

Generic: Robust Error Handling and Edge Case Management

Objective: Ensure comprehensive error handling that provides meaningful context and graceful
degradation

Status:
No error paths: The changes are documentation edits and do not introduce executable code or error handling
logic, so robustness cannot be evaluated from this diff.

Referred Code
- PR: https://github.com/joomla/joomla-cms/pull/43794
- Description: The classes `\Joomla\CMS\Adapter\Adapter` and `\Joomla\CMS\Adapter\AdapterInstance` have been removed without replacement.

## Remove CMS BaseApplication and CLI classes
- PRs
  - https://github.com/joomla/joomla-cms/pull/42884
  - https://github.com/joomla/joomla-cms/pull/44926
- Files: `libraries/src/Application/BaseApplication.php`, `libraries/src/Application/CLI.php`
- Description: These legacy classes have been removed.  
  Any reference to the class `\Joomla\CMS\Application\BaseApplication` and `\Joomla\CMS\Application\CliApplication`
  with the respective CLI input classes should be replaced with the namespace `\Joomla\Application`.
  Cli apps should be replaced by console plugins.
  Use `\Joomla\CMS\Application\ConsoleApplication` or framework equivalents instead.
  **(more detail needed: migration examples)**

## Remove JPATH_PLATFORM Constant
- PR: https://github.com/joomla/joomla-cms/pull/44638
- Files: All bootstrapping files
- Description: The `JPATH_PLATFORM` constant is no longer globally defined.  
  It is only available if the 'Behaviour - Backward Compatibility 6' plugin is enabled.
  Extensions should avoid using this constant.


 ... (clipped 8 lines)

Learn more about managing compliance generic rules or creating your own custom rules

Generic: Security-First Input Validation and Data Handling

Objective: Ensure all data inputs are validated, sanitized, and handled securely to prevent
vulnerabilities

Status:
No input handling: This PR modifies documentation only and adds no input processing code, so validation and
secure handling cannot be assessed from the provided diff.

Referred Code
Related PRs are:
* [45336](https://github.com/joomla/joomla-cms/pull/45336)
    Introduce Joomla 6.0 compatibility plugin
* [45371](https://github.com/joomla/joomla-cms/pull/45371)
    Add compat6 behaviour plugin to 5.4 so it is available and enabled when updating to 6.x.
* [45480](https://github.com/joomla/joomla-cms/pull/45480)
    Introduce Joomla 6.0 compatibility plugin
* [45493](https://github.com/joomla/joomla-cms/pull/45493)
    Add pre-update checks for backward compatibility plugins for update to Joomla 6
* [45525](https://github.com/joomla/joomla-cms/pull/45525)
    Add compat6 behaviour plugin to 5.4 with enabled options
* [45973](https://github.com/joomla/joomla-cms/pull/45973)
    Don't insert duplicate records in update SQL scripts when they are executed multiple times

:::warning DEVELOPER NOTE
Avoid creating your own plugin within the *Behaviour* group, as this group may be removed in a future release.
:::

Learn more about managing compliance generic rules or creating your own custom rules

Compliance status legend 🟢 - Fully Compliant
🟡 - Partial Compliant
🔴 - Not Compliant
⚪ - Requires Further Human Verification
🏷️ - Compliance label

Previous compliance checks

Compliance check up to commit 3c5304d
Security Compliance
🟢
No security concerns identified No security vulnerabilities detected by AI analysis. Human verification advised for critical code.
Ticket Compliance
🎫 No ticket provided
  • Create ticket/issue
Codebase Duplication Compliance
Codebase context is not defined

Follow the guide to enable codebase context checks.

Custom Compliance
🟢
Generic: Secure Logging Practices

Objective: To ensure logs are useful for debugging and auditing without exposing sensitive
information like PII, PHI, or cardholder data.

Status: Passed

Generic: Comprehensive Audit Trails

Objective: To create a detailed and reliable record of critical system actions for security analysis
and compliance.

Status:
Not Applicable: The PR only updates documentation (Markdown) without adding or modifying executable code
where audit logging would apply; no critical system actions are present to instrument.

Referred Code
Compatibility Plugins
=====================

## Joomla 6 Compatibility Plugin

The **‘Behaviour – Backward Compatibility 6’** plugin is essential for the migration from Joomla! 5.4 to 6.x.

In Joomla 5.4, this plugin is installed and enabled by default, but it does not perform any actions.
Its presence ensures that when the site is upgraded to Joomla 6, the updated code can run immediately,
and any third-party extensions requiring the plugin to be enabled in Joomla 6 will not cause the update to fail.

As a `behaviour`-type plugin, it loads before any other plugin —
a critical requirement for ensuring backward compatibility.

For upgrades from Joomla! 5.4 to Joomla! 6.x, it is mandatory that this plugin is both installed and enabled.
To review which backward compatibility cases have been removed, see
[Removed and Backward Incompatibility](removed-backward-incompatibility).

:::tip NEW INSTALLATIONS
For new Joomla! 6.0 installations, the **‘Behaviour – Backward Compatibility 6’**
plugin is installed but disabled by default.


 ... (clipped 29 lines)
Generic: Meaningful Naming and Self-Documenting Code

Objective: Ensure all identifiers clearly express their purpose and intent, making code
self-documenting

Status:
No Code Added: Changes are documentation text and example snippets, not application identifiers; there
are no new variables or functions to assess for naming.

Referred Code
- PR: https://github.com/joomla/joomla-cms/pull/43794
- Description: The classes `\Joomla\CMS\Adapter\Adapter` and `\Joomla\CMS\Adapter\AdapterInstance` have been removed without replacement.

## Remove CMS BaseApplication and CLI classes
- PRs
  - https://github.com/joomla/joomla-cms/pull/42884
  - https://github.com/joomla/joomla-cms/pull/44926
- Files: `libraries/src/Application/BaseApplication.php`, `libraries/src/Application/CLI.php`
- Description: These legacy classes have been removed.  
  Any reference to the class `\Joomla\CMS\Application\BaseApplication` and `\Joomla\CMS\Application\CliApplication`
  with the respective CLI input classes should be replaced with the namespace `\Joomla\Application`.
  Cli apps should be replaced by console plugins.
  Use `\Joomla\CMS\Application\ConsoleApplication` or framework equivalents instead.
  **(more detail needed: migration examples)**

## Remove JPATH_PLATFORM Constant
- PR: https://github.com/joomla/joomla-cms/pull/44638
- Files: All bootstrapping files
- Description: The `JPATH_PLATFORM` constant is no longer globally defined.  
  It is only available if the 'Behaviour - Backward Compatibility 6' plugin is enabled.
  Extensions should avoid using this constant.


 ... (clipped 8 lines)
Generic: Robust Error Handling and Edge Case Management

Objective: Ensure comprehensive error handling that provides meaningful context and graceful
degradation

Status:
No Runtime Code: The PR introduces documentation-only changes without runtime logic or failure points to
handle; error handling cannot be evaluated from these diffs.

Referred Code
Related PRs are:
* [45336](https://github.com/joomla/joomla-cms/pull/45336)
    Introduce Joomla 6.0 compatibility plugin
* [45371](https://github.com/joomla/joomla-cms/pull/45371)
    Add compat6 behaviour plugin to 5.4 so it is available and enabled when updating to 6.x.
* [45480](https://github.com/joomla/joomla-cms/pull/45480)
    Introduce Joomla 6.0 compatibility plugin
* [45493](https://github.com/joomla/joomla-cms/pull/45493)
    Add pre-update checks for backward compatibility plugins for update to Joomla 6
* [45525](https://github.com/joomla/joomla-cms/pull/45525)
    Add compat6 behaviour plugin to 5.4 with enabled options
* [45973](https://github.com/joomla/joomla-cms/pull/45973)
    Don't insert duplicate records in update SQL scripts when they are executed multiple times

:::warning DEVELOPER NOTE
Avoid creating your own plugin within the *Behaviour* group, as this group may be removed in a future release.
:::
Generic: Secure Error Handling

Objective: To prevent the leakage of sensitive system information through error messages while
providing sufficient detail for internal debugging.

Status:
Documentation Only: No user-facing error messages or handling paths are introduced in these documentation
updates; nothing to validate for sensitive detail leakage.

Referred Code
New Features
============

All the new features that have been added to this version.
Any changes in best practice.
Generic: Security-First Input Validation and Data Handling

Objective: Ensure all data inputs are validated, sanitized, and handled securely to prevent
vulnerabilities

Status:
No Inputs Present: The PR modifies migration docs and includes non-executable examples; there are no new
input paths or data handling changes to assess for validation or injection risks.

Referred Code
- PR's: 
  - https://github.com/joomla/joomla-cms/pull/42805
  - https://github.com/joomla/joomla-cms/pull/42890
  - https://github.com/joomla/joomla-cms/pull/44925
- Description: The CMS Input namespace `\Joomla\CMS\Input` has been removed.
  It is only available if the 'Behaviour - Backward Compatibility 6' plugin is enabled.
  The CMS core code has switched the code to the Framework Input
  [framework `Input`](https://github.com/joomla-framework/input) package with the namespace `\Joomla\Input`,
  which is very much a drop-in replacement. This is especially of relevance if you are using the MVC classes,
  which now use the framework class. Make sure that your code imports the correct class.

@muhme
Copy link
Contributor Author

muhme commented Oct 28, 2025

@richard67 @Bodge-IT @softforge Could you please check and if all three give ok, one of you merge?

@qodo-merge-pro
Copy link
Contributor

qodo-merge-pro bot commented Oct 28, 2025

PR Code Suggestions ✨

Explore these optional code suggestions:

CategorySuggestion                                                                                                                                    Impact
Possible issue
Clarify contradictory migration guidance

Rewrite the migration guidance for BaseApplication and CliApplication to provide
a single, clear path, recommending the use of
\Joomla\CMS\Application\ConsoleApplication to resolve the current contradictory
instructions.

migrations/54-60/removed-backward-incompatibility.md [285-294]

 - PRs
   - https://github.com/joomla/joomla-cms/pull/42884
   - https://github.com/joomla/joomla-cms/pull/44926
 - Files: `libraries/src/Application/BaseApplication.php`, `libraries/src/Application/CLI.php`
 - Description: These legacy classes have been removed.  
-  Any reference to the class `\Joomla\CMS\Application\BaseApplication` and `\Joomla\CMS\Application\CliApplication`
-  with the respective CLI input classes should be replaced with the namespace `\Joomla\Application`.
-  Cli apps should be replaced by console plugins.
-  Use `\Joomla\CMS\Application\ConsoleApplication` or framework equivalents instead.
-  **(more detail needed: migration examples)**
+  If your extension uses `\Joomla\CMS\Application\CliApplication`, you should migrate your code to use `\Joomla\CMS\Application\ConsoleApplication` and create a console plugin instead of a standalone CLI application.
  • Apply / Chat
Suggestion importance[1-10]: 7

__

Why: The suggestion correctly identifies that the migration guidance is contradictory and confusing, and it proposes a clearer, more direct path which significantly improves the documentation's quality and usability.

Medium
General
Clarify the upgrade recovery instructions

Clarify the upgrade recovery process by stating that the user should first
restore the site to its Joomla 5.4 state from a backup before re-enabling the
plugin.

migrations/54-60/compat-plugin.md [52-54]

-If a site crashes during the upgrade process, it can usually be recovered by temporarily re-enabling
-this plugin in Joomla 5.4. However, the underlying issues causing the errors must then be identified and
-resolved before proceeding with the upgrade.
+If a site crashes during the upgrade process, it can usually be recovered by restoring the site to its Joomla 5.4 state from a backup and temporarily re-enabling this plugin. However, the underlying issues causing the errors must then be identified and resolved before attempting the upgrade again.
  • Apply / Chat
Suggestion importance[1-10]: 6

__

Why: The suggestion correctly identifies confusing wording in a critical recovery procedure and proposes a much clearer, more accurate instruction by including the necessary step of restoring from a backup.

Low
  • Update

- https://github.com/joomla/joomla-cms/pull/44925
- Description: Any reference to the class `\Joomla\CMS\Input\Input` or the other classes in that namespace should be replaced with the [framework `Input`](https://github.com/joomla-framework/input) package and the namespace `\Joomla\Input`. The packages can be used nearly interchangeably.
When upgrading from Joomla! 5.4 to Joomla! 6.x, this plugin must be disabled.
If a site crashes during the upgrade process, it can usually be recovered by temporarily re-enabling
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"during the upgrade process" is not right here. We want people to disable it before the upgrade so that the site craches BEFORE the update so people can enable it again and fix it. If the site crashes DURING the upgrade, the result might be the new files being there and possibly also some but not all of the database updates being made, so the result is a broken site which cannot be fixed by only re-enabling the plugin. It would need more to repair.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, the paragraph is rewritten, thank you.

@richard67
Copy link
Member

Hmm, the build fails in Drone. Docusaurus complains about broken links. https://ci.joomla.org/joomla/Manual/2176/1/2 Is that normal?

@muhme
Copy link
Contributor Author

muhme commented Oct 29, 2025

Hmm, the build fails in Drone. Docusaurus complains about broken links. https://ci.joomla.org/joomla/Manual/2176/1/2 Is that normal?

There was indeed a broken link, thank you for the hint. This link has now been fixed.

@muhme
Copy link
Contributor Author

muhme commented Oct 29, 2025

@HLeithner Could you please take a look at this change, especially the merging of the tree paragraphs from compat-plugin into removed-backward-incompatibility page?

@softforge softforge merged commit 890d25e into joomla:main Nov 10, 2025
2 checks passed
@softforge
Copy link
Contributor

Thank you @muhme excellent work

@muhme muhme deleted the migrations-54-60-compat-plugins branch November 10, 2025 18:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants