Supported Python versions - adopt NEP29?

30 views
Skip to first unread message

Michael Ekstrand

unread,
Feb 20, 2021, 2:03:32 PM2/20/21
to LensKit Recommender Toolkit Development and Support
Hi all,

Hope you are enjoying LensKit! I am reviewing our Python version support policies. Right now, we support the version of Python 3 shipped in the most recent stable release of major distributions for new releases of LensKit: RHEL (3.6 in RHEL8), Debian (3.7 in Buster), and Ubuntu LTS (3.8 in Focal). This means we currently continue to support Python 3.6, CI tests on Python 3.6, and we fix bugs on 3.6 when possible (and I just learned that one previously only known to affect Mac affects Linux as well: https://github.com/lenskit/lkpy/issues/166).

The goal of this is to make it easy to use LensKit on your system Python, although I generally recommend people use Anaconda instead of pip to install LensKit if practical.

However, the NumPy folks produced an informational guidance doc, NEP 29, that recommends support schedules across the scientific Python ecosystem: https://numpy.org/neps/nep-0029-deprecation_policy.html. Several projects, including Dask, Matplotlib, and Pandas (I think), have adopted this schedule. According to NEP29, we could have dropped Python 3.6 support in LensKit 0.12 (along with NumPy 1.16 support, which would simplify our random number generation support code - we've got some kludges around to support 1.16's RNG).

Adopting NEP 29 would synchronize our support practices with much of the rest of the Scientific Python ecosystem. If we do not adopt NEP 29, using LensKit with older versions of Python would also require older versions of its dependencies. We currently only support Python itself from stable Linux distros - I do not invest any time in tracking other dependencies (with the occasional exception of NumPy) to make sure LensKit works with distro-packaged Python dependencies, we assume that you're using virtualenv with your system Python.

The only downside I see to adopting NEP 29 is that it means people working on Linux systems that only provide Python 3.6 (RHEL8, old Ubuntu) will need to obtain a Python from elsewhere (Anaconda, pyenv, or something like that) in order to use the latest release of LensKit.

Thoughts? If there is not significant objection, I am inclined to adopt NEP29 beginning in LensKit 0.13, but want to get input first :).

- Michael

--
Michael D. Ekstrand — michael...@boisestate.edu https://md.ekstrandom.net
Assistant Professor, Dept. of Computer Science, Boise State University
People and Information Research Team (PIReT)  http://coen.boisestate.edu/piret/
I may send mail outside of working hours; I do not expect you to. He/him.

Daniel Kluver

unread,
Feb 25, 2021, 3:39:17 PM2/25/21
to Michael Ekstrand, LensKit Recommender Toolkit Development and Support
I think it's reasonable to adopt this. If we're going to adopt a not-python-driven schedule for this I think "NumPy" is a big enough piece of the ecosystem to get onboard with.

~Kluver

--
You received this message because you are subscribed to the Google Groups "LensKit Recommender Toolkit Development and Support" group.
To unsubscribe from this group and stop receiving emails from it, send an email to lenskit-recsy...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/lenskit-recsys/CABSXaUteuyKJEGSQwSqo7ZbVnNSepYgbXKeveqTH-MgA3qdAHw%40mail.gmail.com.
Reply all
Reply to author
Forward
0 new messages