On 2023-09-04 17:38, James Browning via devel wrote:
On Sep 4, 2023 14:46, Matthew Selsky via devel <devel@ntpsec.org> wrote:
On Mon, Sep 04, 2023 at 02:25:46PM -0700, Gary E. Miller via devel
wrote:
> From RHEL:
>
> "The RHEL 8 AppStream Lifecycle Page puts the end date of RHEL 8's
> Python 2.7 package at June 2024."
>
> https://access.redhat.com/solutions/4455511
Hi Gary,
Is the implication that we can safely drop python2 support after
June 2024? Are there any other distributions that ship python2
that we want to maintain support for?
How much does it cost us to maintain python2 support in our own code?
By dropping 2.6 support we would eliminate the need to check for
argparse in a few place, glue to replace ordereddict?, be able to use
with for resource allocatoion, and the need to pretend to test on 2.6.
By dropping 2.7 we could probably assume secrets which simplifies
ntpkeygen, simplify ntp.poly, be able to drop the now oldoldstable?
runner testing for asciidoc on python 2 support, and also have the
option of adding type hinting.
Dropping support for Python 2 should allow for dropping most of the poly
infrastructure. That code (pylib/poly.py) involves some contortions (see
also [1]) to make it possible to run on both Python 2 and Python 3. The
downside is that it is most definitely not Python 3 idiomatic. In fact,
it's closer to Python 2 than Python 3. If you look at the code, you'll
see that there's very little that happens in the Python 2 case and a lot
more that happens in the Python 3 case. This was (presumably) a good
trade-off when trying to minimize the work for an existing codebase to
gain Python 3 support without dropping Python 2 support. But it does
leave technical debt to be cleaned up when going full Python 3.
If we dropped support for Python 2, that should come in a couple phases.
Phase 1 would be removing anything relating to Python 2 itself. It
should probably also include any changes relating to Python detection
with waf. Phase 2 would be /carefully/ removing usage of the poly
infrastructure, converting to idiomatic Python 3 approaches. Once that
is done, then we'd be rid of the 2 -> 3 conversion baggage. These phases
need not be separate releases, but should (IMHO) certainly be separate
commits and likely be separate PRs.
[1] http://www.catb.org/esr/faqs/practical-python-porting/
--
Richard
_______________________________________________
devel mailing list
devel@ntpsec.org
https://lists.ntpsec.org/mailman/listinfo/devel