Proposed Email to the release team about XS/B-P-V
Subj: Future requirements for specifying supported Python versions and
transition support
In Debian Python we are currently discussing how best to specify version
information for Python 3. There is a strong (but not unanimous) view among
the participants in debian-python@l.d.o and #debian-python that Python(2) and
Python 3 are sufficiently different that they should be treated as essentially
separate run time systems. If a package expresses support for Python versions
greater than (for example) 2.4, this should never include any Python 3
versions.
This discussion has caused us to take a look as the current methods for
expressing support for different python versions. AIUI the approach of
embedding this information in the source and binary control files was intended
to support the release team for Python transitions, e.g. if the source
expressed support for Python 2.4 and later:
XS-Python-Version: >= 2.4
and the binary was only built for python2.5:
XB-Python-Version: 2.5
Then this would be a package that needed either binNMU or sourceful changes
for the python2.6 transition.
I have consulted with Luca Falavigna (DktrKranz) and Jakub Wilk (jwilk), who
did most of the analysis for the last two Python transitions (Adding 2.6 to
supported versions and the current transition to 2.6 as default) and neither
of them found this embedded information useful in their analysis. They did
their work based on package dependencies. While I'm sure XS/B-P-V was a good
idea at the time, it does not seem to have, in practice met it's goal.
Among the group discussing the question of how to represent Python 3 versions,
there is some reasonable consensus around the idea of a separate field in
debian/control, but there is concern about further bloating Packages.{gz,bz2}
and adding more to the binary control file.
Since support to the release team was an important use case for the current
design, we are consulting with you before any decisions are made.
The first question is: Does the release team still consider it a requirement
for supported Python{3} versions to be externally exposed in some way other
than through package dependencies? In our review of the recent transitions,
we don't see a case for it.
We have discussed a number of options (and I've added more for completeness):
1. Use XS/B-P-V for Python and Python3 versions, but Python tools must never
return any versions 3 or higher and Python 3 tools must never return versions
lower than 3. This is implemented in pyversions and py3versions in Sid. It
has the advantage of not introducing any new fields, but it does depend on
implementation correctness to avoid mixing versions. It also leads to warts
like:
XS-Python-Version: >= 2.4, >= 3.0
2. Create a new set of fields, XS/B-Python3-Version. This would obtain a
clearer separation and conditions like XS-Python-Version: 2.5, 2.5, 3.1 can be
treated as an error so that maintainers are aware of a problem. It does add
to the information exposed in Packages.{gz,bz2} for no clear gain.
3. Create a new field, X-Python-Version: for Python3 versions. This avoids
concerns about control file bloat, but may be a bit confusing in combination
with the existing XS/B-P-V.
4. Create a new field, X-Python3-Version: for Python3 versions and in Squueze
+1 migrate the existing XS/B-P-V to X-Python-Version. This avoids confusion,
but does require lots of packages to be changed and tools to be updated to
recognize X-Python-Version. In the long run, it does stop Python packages
from exposing information externally that has turned out not to be very
useful.
Please CC me on any replies as I am not subscribed. Anyone with an interest
in the topic is encouraged to join the discussion on debian-python@l.d.o and
in #debian-python.
Scott K
Reply to: