I’ll elaborate my earlier rule of thumb: anyone should be able to bring in a clean machine, check the sources out of the repository, issue a single command, and have a running system on their own environment.
https://martinfowler.com/articles/continuousIntegration.html
Sounds simple but so many miss this. Often through no fault of the project itself but through dependencies or version mismatches, things out of date or not installed.