ROOT version compatibily clarification

Dear ROOT team,

the versioning page of ROOT states for minor version changes that

Across minor versions ROOT guarantees source backward compatibility, i.e. “your source code will still compile”. You can expect that any breakage to existing code should be called out in the release notes, and it will most commonly be preceded by deprecation warnings.

But this seems contradicting in itself: does ROOT guarantee “source backward compatibility” across minor versions or not? The second sentence pretty clearly states that it does not (given a few conditions), while the first claims it does.

Should this be reformulated to something like “ROOT does not guarantee “source backward compatibility”, however, breaking changes to existing code should…”

Thanks for the clarification,

P.S: as guessed, this doesn’t come out of the blue and I do have examples that ROOT does indeed not keep “source backward compatibility” accross minor versions

Welcome to the ROOT Forum!
I’ll let @Axel comment on this.

Thanks! Can you let us know where we failed, please?

I’ll update the wording - the intent is to say that for user code incompatible changes (which, as explained, should not be happening between patch releases) these changes will me called out in release notes.


Thanks for the clarification!

which, as explained, should not be happening between patch releases

Yes, but the on the other hand

Across minor versions ROOT guarantees source backward compatibility , i.e

claims the same for minor versions, that’s the confusion

An example is the removal of tree.AsMatrix() that happened in 6.26. This was deprecated in 6.24 and removed, also announced in the analysis note.
But this means that it breaks backwards compatibility accross minor versions.

For the wording, I would then suggest to simply remove

Across minor versions ROOT guarantees source backward compatibility , i.e. “your source code will still compile”.

because its neither true nor the intent, if I understand things correctly?
Maybe it’s worth to write explicitly that “ROOT does not guarantee backwards compatibility accross minor version, but any breaking changes will be ”

Requirements are probably “deprecated at least one version before” and "explicitily listed in the changelog.

Ouch, thanks for pointing this out, that’s a bug: user code backward compatibility is guaranteed between patch releases, and for minor releases we call out breakage in the release notes. I.e. I think exactly as you worked out yourself. I’ll be back with a PR for the website!

Great, glad I could help, it’s too easy to overlook small typos in such a huge codebase.
Thanks for all the good work!

1 Like

I just proposed Fix incorrect wording of minor version backward compatibility by ferdymercury · Pull Request #940 · root-project/web · GitHub

1 Like