Is python2 dead?
Richard Laager
rlaager at wiktel.com
Tue Sep 5 00:24:22 UTC 2023
On 2023-09-04 17:38, James Browning via devel wrote:
> On Sep 4, 2023 14:46, Matthew Selsky via devel <devel at 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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.ntpsec.org/pipermail/devel/attachments/20230904/c9f4f357/attachment.htm>
More information about the devel
mailing list