Your suggestion seems to be very Debian-centric. How should that be done for other platforms (e.g. macOS and Windows) where users install the Python packages from
PyPI? I doubt there is any precedence in the Python community for doing N parallel releases of the same package based on the major version.
Anyway the infrastructure we use to release Python packages doesn’t support such a workflow. If you would like to see a drastic change like this that would probably require a thorough design ticket / REP to motivate the change, describe how each and every piece in the pipeline should change as well as coming up with patches to realize that proposal.
Imo such a drastic change is neither needed nor warranted by this case. As mentioned already before if this problem would have been catched during review it would not have been merged and released in the first place. So the main area of improvement I see is that such changes should be reviewed more carefully - which also implies by more people which have to volunteer to do so.
On a side note: following semver when the major version if zero breaks can happen even on a minor version bump.
That being said: the change was introduced in a patch release. Again: this only happened because we were not aware of that significant regression. Otherwise we would have not only bumped the minor version but actually revised the PR before it got merged and release.
A tick-tock cycle is certainly desired.
One problem is that deprecations as they are done in Python are by default not visible. So commonly nobody notices them during the “tick” cycle and only gets hit when stuff breaks during “tock”.
colcon-core#232 introduces an option to change that. The goal would be to recommend to everyone (e.g. CI) who wants to catch deprecations / warnings early to set the flag so something other than the default. Similar to what the Python
warnings module recommends to test framework developers 1.
For this specific case the PR colcon-ros#79 reverts the change and adds warnings in the case where
colcon-ros installs the files implicitly for the package. Please feel free to provide feedback on that ticket (and its open questions).