Today’s trendy development practices are shockingly ephemeral and fragile. Very little of today’s projects would survive one decade left fallow, let alone four.
A few years ago we tried to rebuild some safety critical code from sometime back and were unable to because the certificates had expired and so the machine that can build the source code refused to connect to our version control system.
It takes a lot more effort to package stuff, since you can't just download your dependencies from the internet. But you also create something that isn't as ephemeral.
My fellow human, you have just nailed what is wrong with today's software.
go makes this extremely easy to do
https://go.dev/ref/mod#go-mod-vendor
rust tool chain also includes a vendor dependency process
But maybe it’s worth going through and actively and explicitly downloading all those dependencies too. Who knows when npm will get hacked again, or old package versions will get yanked. Disk space is cheap. I’ve written a lot of code over the years. It would be nice to know it all still runs.
> Very little of today’s projects would survive one decade left fallow, let alone four.
I hate to break it to you. 2040 is less than half as distant as you think it is.Thinking about the "dependency tree" for any modern convenience is truly staggering. I can't even start to think about how you can make a factory without first having a factory.
They already are, if something has been hijacked and is now malicious.
They already are, if you need to install something offline somewhere.
They already are.
But languages like go and rust have had the ability to “vendor dependencies” for awhile now.
Don’t need an active internet connection. Just need to have the toolchain.