@aeonofdiscord @technomancy having just gone through a weeks-long onboarding process for a new project (most of which just went out the window due to funding shifts lmao) I heartily agree.
On a previous project, I got things to the point where you just clone a build repo via git and invoke CMake in a standard way, and it clones the rest of the codebase for you and pulls down the dependencies from Artifactory via Conan. That's pretty much my ideal.
@HunterZ @technomancy @aeonofdiscord Not sure if it's a joke, but tools like Chaos Monkey kind of do that and it looks like the companies that use it have pretty reliably working services, especially given how complex they are.
I've also see Drew DeVault recommend something similar for testing backups. Pull the plug on a machine and see if the crew can restore it.
@HunterZ @technomancy @aeonofdiscord I have to do this when writing docs and tutorials (my main work things ATM) to make sure I get dependences listed correctly, and can be surprisingly hard to work out exactly which bits of toolchain from my 'has everything installed so stuff just builds' workstation is actually required in some cases.
A freshly installed Raspberry Pi 4 (if your software is buildable on ARM) is extremely useful to see what the dependency hell situation looks like IRL.
@HunterZ @ArneBab @technomancy @aeonofdiscord
It's amazing how useless / out of date most build sections of a readme are. For projects that have continuous deployment they should just point you to their build YAML file. They have to keep that up to date or their tests fall apart.
@aeonofdiscord That was one reason why in the Freenet project we switched to gradle *with the wrapper*: That’s annoying, but it is easy to build as a newcomer if you already run Freenet (because then you already have Java): git clone https://github.com/freenet/fred && cd fred && ./gradlew jar
I wish gradle did not enable that by sidestepping your whole distribution, but by working with it (i.e. on guix it could create a local environment, if docker is available, use that, …), but it works.
@aeonofdiscord That said: GNU autotools fixes that with ./configure && make && make install
but it lacks dependency-support.
@a @aeonofdiscord The hard part is keeping it up to date. At several jobs I've made that one of my duties. I try to watch for PRs that break the onboarding, blow away my setup and try to follow the Readme.
I suspect it doesn't make me very popular with my teams :) But it's the sort of janitorial duty I think senior engineers should take charge of. What are you without a sense of ownership?
Compare my http://akkartik.name/post/about-2022-01
@aeonofdiscord A good CI system can really help with this. The project I contribute to is arguably esoteric, but GitHub Actions builds it.
This means you both have a well-tested path to set it up on a clean GitHub Runner (pretty stock Ubuntu setup in our case), and the ability to even test and play via CI. (I don't build the project locally, but occasionally abuse the CI to build test versions for me, as I can download the builds from Actions as well.)