Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

EasyBuild v4.0 #447

Closed
16 of 18 tasks
boegel opened this issue Aug 22, 2018 · 18 comments
Closed
16 of 18 tasks

EasyBuild v4.0 #447

boegel opened this issue Aug 22, 2018 · 18 comments
Labels
Milestone

Comments

@boegel
Copy link
Member

boegel commented Aug 22, 2018

This issue keeps track of what changed are planned for EasyBuild v4.0, in which backwards-incompatible changes will be made compared to EasyBuild v3.x.

ETA for EasyBuild v4.0: summer 2019 (subject to change!)


Codebase


Packaging & installation


Documentation


Features


Easyblocks

  • PythonPackage

    • switch to installing Python packages with pip by default (rather than setup.py install, i.e. setuptools) (not switching the default, but will keep requiring use_pip = True in contributed easyconfigs)
    • cfr. https://docs.python.org/2/installing/index.html
    • needs to be re-evaluated...
    • enable download_dep_fail by default, to ensure that no dependencies are automatically downloaded by whichever Python installation tool is being used (already done in PythonBundle)
  • custom easyblock for OpenMPI (done, see add custom easyblock for OpenMPI easybuild-easyblocks#1789)


Easyconfigs

@cclauss
Copy link
Contributor

cclauss commented May 10, 2019

You folks do know that https://snarky.ca/stop-using-python-2-6 was written 3 1/2 year ago?

@boegel
Copy link
Member Author

boegel commented May 11, 2019

We're fully aware that Python 2.6 is obsolete, and has been for a long time, yet we opt to keep supporting it for now.
The main reason is that a small (& shrinking) part of the EasyBuild user base (~16% early 2018, ~6% early 2019 according to our user survey) is still using an OS that has Python 2.6 as the default system Python (for example CentOS 6.x). Although upgrading that to Python 2.7 is definitely doable, many people opt out of that for the sake of maintaining system stability.

I re-evaluated whether or not to keep support for Python 2.6 while working on the port to Python 3.x (in the 4.x branches), and it turned out to be very little effort to do so (since we're definitely going to keep support for Python 2.7 for a while, despite it going EOL end of 2019, for very similar reasons).

The main benefit would be being able to remove small parts of code that are required to maintain Python 2.6 support, which we haven't touched in years (so they have very little impact on development), and being able to clean up the mess (a bit) in the requirements.txt for the EasyBuild framework component (cfr. your PR easybuilders/easybuild-framework#2874).

In my view, neither of those reasons are compelling enough to drop Python 2.6 support and annoy a minority of our user base along the way, especially since it has little impact on other users or ongoing development.

@cclauss
Copy link
Contributor

cclauss commented May 11, 2019

@hugovk Would you be willing to show us how to get the Python versions being used to pip install:

  • easybuilders/easybuild
  • easybuilders/easybuild-framework
  • easybuilders/easybuild-easyconfigs
  • easybuilders/easybuild-easyblocks

Each of these repos has a 4.x branch that will add Python 3 support. The current users should all be on legacy Python and Python 2.4 is still supported. It would be interesting to know which versions of Python are being used to install the EasyBuild tools. Thx.

@boegel
Copy link
Member Author

boegel commented May 11, 2019

@cclauss Are you looking for this? https://pypistats.org/packages/easybuild

The Python 2.4 is a mistake in the setup.py in https://github.com/easybuilders/easybuild, I'll get that fixed, since it's actually not supported anymore (Python 2.6 is current minimal required version).

@hugovk
Copy link

hugovk commented May 11, 2019

Yes, https://pypistats.org is the easiest way. And using the CLI client:

pip install pypistats
pypistats python_minor easybuild --last-month
pypistats python_minor easybuild-framework --last-month
# etc.

Here's the pip installs for easybuild from PyPI for April 2019:

category percent downloads
2.7 44.19% 1,076
null 30.39% 740
2.6 24.60% 599
3.6 0.41% 10
3.7 0.21% 5
3.4 0.16% 4
3.5 0.04% 1
Total 2,435

easybuild-framework:

category percent downloads
2.7 48.37% 1,305
null 29.21% 788
2.6 22.24% 600
3.6 0.11% 3
3.7 0.07% 2
Total 2,698

easybuild-easyconfigs:

category percent downloads
2.7 42.62% 1,123
null 34.57% 911
2.6 22.77% 600
3.6 0.04% 1
Total 2,635

easybuild-easyblocks:

category percent downloads
2.7 47.28% 1,193
null 28.89% 729
2.6 23.78% 600
3.6 0.04% 1
Total 2,523

@boegel
Copy link
Member Author

boegel commented May 11, 2019

Those stats aren't very useful though, since the easybuild-framework test suite involves re-testing our bootstrap script, which does a installation from PyPI on both Python 2.6 & 2.7. That definitely skews these stats, a lot. I'm quite sure that actual usage on Python 2.6 is a lot lower than ~23-24%...

@interrogator
Copy link

Hey easybuilders! I'm currently helping out on gc3pie, trying to get it to Python 2.7 + 3.x support. Our main motivation for maintaining 2.6 support is that you have us as a dependency. Truth be told though, the task of updating to Python 3 is made much more difficult when we have to support 2.6 (numerous backports, lack of dict comprehensions and so on).

Regarding the popularity of various Python versions, I also don't believe you can trust the above stats from pypi due to CI. Referring to https://www.jetbrains.com/research/python-developers-survey-2018/#python-3-adoption, we can see that for every 1000 Python users, 3 of them are still on 2.6. I think unless there are specific users with compelling reasons for it, supporting 2.6 is a bit of a waste of developer time at this point.

So I was wondering, if you decided not to drop 2.6 support, perhaps you would like to version lock to a stable, 2.6 supporting gc3pie for now?

@ocaisa
Copy link
Member

ocaisa commented Jul 18, 2019

@interrogator , @boegel is away on holiday so you might have to wait a bit for a response.

My 2c, I think EB should officially drop python2.6 support in v4.0 but keep it in the CI until it becomes too painful to maintain. For the purposes of the CI, locking to a gc3pie version is straightforward.

@interrogator
Copy link

OK. I'll wait to hear from @boegel . Feel free to do a version lock in any case, no harm in that I don't think!

@cclauss
Copy link
Contributor

cclauss commented Jul 18, 2019

Drop support for Python 2.6.

@interrogator
Copy link

@boegel any updates on this?

@boegel
Copy link
Member Author

boegel commented Aug 15, 2019

@interrogator We're working away the last hurdles for EasyBuild 4.0, still hoping to release it by the end of this month (Aug'19)...

There's an early pre-release available via easybuilders/easybuild-easyconfigs#8568, you can use eb --from-pr 8568 to install it with the latest EasyBuild v3.9.3 (older EasyBuild versions won't work to install the pre-release).

Running on top of Python 3 should work fine with that version (which is a bit behind the current 4.x branches, but that's mostly details), but if you see any problems don't hesitate to let us know!

Ignore the warnings you'll see popping up for local variables (something like WARNING: Use of ... unknown easyconfig parameters detected), they're harmless (safe to ignore), we're still working on cleaning things up so those don't pop up anymore; see WIP docs update at https://boegel-eb.readthedocs.io/en/local_vars/Easyconfig-files-local-variables.html for more information on that aspect.

@interrogator
Copy link

In particular, I'd like to know if you're willing/able to lock to a commit/release of gc3pie for any older Python versions you are keeping around. If you did that, I think we'd be more comfortable dropping 2.6 support...

@boegel
Copy link
Member Author

boegel commented Aug 15, 2019

@interrogator We only have a minimal required version for GC3Pie now, which is 2.5.0 (see https://github.com/easybuilders/easybuild-framework/blob/master/easybuild/tools/job/gc3pie.py#L90), and I don't see a need to change that.

If people are stuck to Python 2.6, they can keep using the latest GC3Pie 2.5.x?

@riccardomurri
Copy link

We'll release GC3Pie 2.6 in a few days. It's likely the 2.6.x releases will be the last ones to support Python 2.6.

@boegel
Copy link
Member Author

boegel commented Aug 23, 2019

Update: develop branches are compatible with Python 2.6, 2.7, 3.5, 3.6 and 3.7 (barring unknown bugs, of course).
Next EasyBuild release (sometime in the coming weeks) will be 4.0.0 and compatible with Python 2.6+ and 3.5+.

@interrogator
Copy link

I don't see a need to change that.

@boegel As @riccardomurri points out, anything after the forthcoming gc3pie may not support 2.6, so if you don't add a version lock shortly, a new version of gc3pie could cause problem on your side. So by specifying a maximum version, you'll avoid that problem. Make sense?

@boegel
Copy link
Member Author

boegel commented Sep 20, 2019

EasyBuild v4.0.0 has been released (see https://pypi.org/project/easybuild/4.0.0/), so closing this...

Last remaining TODO is updating the bootstrap script, which is tackled via easybuilders/easybuild-framework#3017

@boegel boegel closed this as completed Sep 20, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

6 participants