Hello,
This emails serves to reopen a discussion on our stance w.r.t. the specificity of the build from scratch instructions.
My opinion is that over-specifying for instructions like that (for example, instructing the admin about how to install a specific version of Python) is a mistake. Some reasons are:
- It won't be portable to any but a very small set of systems (even between version of the same distro)
- In some distros (mine) the instructions can change even without updating the distro version
- It puts us in the position of maintaining things we have no control over (links to python tarballs, for example)
- For the intended audience of that installation method, over-specifying hinders their understanding of the actual requirements. For example, having `postgresql` hidden in a big `apt install` blob obscures what version they'll actually get, and also which versions are compatible.
- The intended audience of this method probably has specific requirements (e.g., they have a PostgreSQL server already running on their local machine). Any overspecification on our part then gives them questions about why we specified this-or-that command and whether the results will conflict with their setup (for Postgres, do we rely on the Debian pg_ctlcluster parts? It's hard to tell, but if we're specifying how you install PG on Debian, a cautious admin may assume we do)
My opinion is that the central difficulty experienced by Kriti during the build from scratch QA was due to 2 big problems (aside from a small bug that wouldn't be blocking, and an omission from the example environment variables, which are updated in the docs PR):
- The difficulty of getting a specific version of Python running on a given machine, and getting a virtual environment working with that version (this was most of the problem)
- Distraction from over-specification of how to install things. All the links to various pieces proved to be red herrings, making things more rather than less difficult. Using the standard package manager on Debian would have sufficed for all dependencies except python 3.9 (or 3.10).
I think if we make any changes to the docs, it should be to reduce the overspecification, and emphasize the absolutely crucial nature of making sure you are running the correct version of Python.
Brent