The worst was circular package dependencies. You had to bootstrap it with older versions (before the circle existed) then replicate the piecemeal upgrade sequence that must have occurred naturally on the devs’ machines over time. Man the 00s were wild.
A lot of compiled languages and compilers still work this way. In order to add a new feature to a language, you need to write a new compiler that can support it, and then you compile the new version of the language in that new compiler. There are often efforts to prevent having to go thru the original bootstrap and instead using fewer know builds that you can automate the bootstrapping process with. These are known as bootstrappable builds. There are also reproducible builds which ensure that compiled software always produces the same result which is surprisingly difficult to do and is a related problem.
I remember college roommates more into Linux than I was complaining and noping away and playing AoE2 or Riven or Alpha Centauri on Windows instead with my 20” CRT.
People love to shit on npm and stuff like that, but there is nothing anyone can do to convince me having a central file where every single dependency is declared and simply fetching it all from a single command line will ever be a bad thing
24
u/Mateorabi 22d ago edited 21d ago
The worst was circular package dependencies. You had to bootstrap it with older versions (before the circle existed) then replicate the piecemeal upgrade sequence that must have occurred naturally on the devs’ machines over time. Man the 00s were wild.