I am arguing about this on FreeBSD forums - from an end user perspective. I think the benefits of saving disk space by sharing libraries do not justify the inconveniences we, desktop BSD and Linux users, obtain from being forced to disrupt and upgrade hundreds of installed software packages, just because one single desired upgrade requires to pull its dependencies. The whole ecosystem falls down like a card house - once in a while I have to say "screw it" and auto-update more than a thousand packages, praying my Python and other projects survive, just because I want a browser update or a security fix.

I wonder if there are others who support this opinion that desktop Unix has very complicated future unless complex apps will begin to bundle their own libraries.

> praying my Python and other projects survive, just because I want a browser update or a security fix.

You mean you aren't familiar with Python's virtual environment system exactly intended for isolating development dependencies from system ones but you're blaming the distribution. Please.

None of my virtualenvs (on Linux or on OS X) survived the 3.7 -> 3.8 upgrade. Are you saying they shouldn't have broken?

Virtualenv lets you use only a Python interpreter that's already installed on your system. Usually the choice is between the latest v2 and v3 interpreter, at least on Debian derivatives. Every virtualenv is autoupgraded each time the OS upgrades its Pythons.

If you want to use multiple versions of Python and pin them, you should use something like asdf [1] and its Python plugin [2]. It's a version manager with support for many languages and more. I used it for Elixir, Node, PHP, Ruby and even PostgreSQL (I need different database versions in different projects.) I never used it for Python because I'm OK with being on the latest version so far.

With asdf I would expect to do something like this

  asdf install python 3.7.5
  mkdir my375project
  cd my375project
  asdf local python 3.7.5 # pick the version to use here
  python3 -m venv py375 --python=~/.asdf/installs/python/3.7.5/bin/python
  ~/.virtualenvs/py375/bin/activate
This virtualenv is going to stay on 3.7.5 forever.

[1] https://github.com/asdf-vm/asdf

[2] https://github.com/danhper/asdf-python