What do we backport on a supported branch?

Hi devs,

Current Situation

I couldn’t find any written doc on xwiki.org about what we’re supposed to backport on supported branches (neither in https://dev.xwiki.org/xwiki/bin/view/Community/VersioningAndReleasePractices/, nor in https://dev.xwiki.org/xwiki/bin/view/Community/DevelopmentPractices, nor in https://www.xwiki.org/xwiki/bin/view/Main/Support#HCommunitySupport).

I’ve even asked chatgpt and the answer was:

It confirms that we don’t have a precise written doc on that, so here’s a proposal.

Proposal

Note that our supported branches are bugfix branches. I don’t think we have other types of branches.

  • Must: Backport only bug issues.
  • Must: Backport Blocker level bug issues. Note that this includes important security issues, since they’re mapped as blocker bugs as per our Security Policy.
  • May: Backport bugs with a priority < Blocker, at the discretion of the developers.
  • May: If a developer thinks a non-bug issue should be backported, a forum proposal or vote must be sent to make sure stability concerns are addressed and that other developers agree. Note that this point is especially important when a developer needs to finish a feature started in the current cycle and the N.10.0 version has already been released (i.e. he/she’s late) and without the proposed changes, the feature wouldn’t be considered as finished or usable-enough by the stakeholders of that feature.

WDYT? Have I missed anything?

When agreed, I’ll update the documentation on dev.xwiki.org.

Thanks

We currently also backport some dependencies which are related to the build (mainly test related dependencies like testcontainers and selenium, as well as their required transitive dependencies, but only in the current LTS) or the environment (database connectors). I don’t think it’s a good idea to stop doing that.

+1 but as Thomas mentioned I would also mention specific dependency upgrades (those solving security issues or needed for the build or to solve blocker bugs)

yes if it’s test-only and doesn’t go in the distribution, there’s no problem doing that. I’ll add it. Thx

Thomas only mentioned test deps.

Adding an explanation for the other deps (they were included for me but it’s better to be explicit).

Updated proposal:

  • Must: Backport only bug issues.
  • Must: Backport Blocker level bug issues. Note that this includes important security issues, since they’re mapped as blocker bugs as per our Security Policy.
  • May: Backport bugs with a priority < Blocker, at the discretion of the developers.
  • May: If a developer thinks a non-bug issue should be backported, a forum proposal or vote must be sent to make sure stability concerns are addressed and that other developers agree.
    • This is especially important when a developer needs to finish a feature started in the current cycle and the N.10.0 version has already been released (i.e. he/she’s late) and without the proposed changes, the feature wouldn’t be considered as finished or usable-enough by the stakeholders of that feature.
    • A forum proposal or vote is not needed in the following cases:
      • The issue is a dependency upgrade that doesn’t go in the distribution (test or build dependency)
      • The issue is an upgrade that is required to fix a bug that is being backported.
1 Like

As I mentioned, there is also transitive dependencies of those build tools, and those often go in the distribution (mainly Apache Commons stuff, but also docker which we are using at runtime too). And connectors do go in the distribution (at least postgres and mysql/mariadb), even if not in the WAR.

Then I disagree that they should be backported without asking. For me this goes in:

May: If a developer thinks a non-bug issue should be backported, a forum proposal or vote must be sent to make sure stability concerns are addressed and that other developers agree.

This is potentially dangerous. I’ve seen regular problems with JDBC driver upgrades (including a recent one). I don’t think they should be blindly backported in a bugfix branch and I believe they also require a discussion. The best for them would be to have enough feedback for their upgrade on the main branch first, before deciding to backport. In any case, I would put it in the “ask” category.

WDYT?

Thx

To me, it does not make much sense to require a forum post to upgrade an Apache Commons dependency. They have very strict retro compatibility rules.

It’s not the case of dockerJava, but at the same time I highly doubt a regression in dockerJava would go unnoticed by the build.

I don’t think so, no. Maybe a few times in the last 15 years. Not to mention that we recommend in the documentation to use the latest JDBC connector, for LTS too, in the case of manual installations.

That one was actually upgraded because of a CVE. So it would have been anyway according to the rules you proposed.

The recent one I had in mind was Loading...

And as I mentioned, this one was also upgraded because of a CVE (which might be linked to the regression, if they had to change some behavior to fix the security vulnerability).