A rant on project rot

I'm saddened by the state of many programming projects and the rot they accumulate over time.

Recently I tried to make some changes to the firmware of a certain USB device. This was a first for me; fortunately, the source code was readily available. In this particular case, the source was written in Rust, with which I have near-no experience. The only time I have touched Rust, I fixed a bug by removing a single line of code. This time around, I took effectively the same approach, and the bulk of my changes were removing code I didn't want or need.

Anyway, I don't have any problems with Rust as a language. The problems I ran into were tooling-related. Rust, if you've ever used it, comes with a package manager called cargo. And as it turned out, my system's cargo version was not compatible with the versions of the lockfiles that were generated for some specific dependencies. To fix this, I had to dig around in the failing dependencies to find the last version that still used lockfile version 3, and install those specific versions instead.

In general, even though this particular incident was straight-forward for me to resolve, I believe this type of setbacks are detrimental to people trying to get into new languages or programming in general. I remember very vividly that these problems were extremely prominent in my early days of web development; a constant stream of things that were preventing the building or running of certain software. Think of it like a very interesting book with an introduction that makes you want to pull your hair out. Who's going to read the book?

Now, I don't have any constructive feedback here. Projects that are well-maintained generally suffer from these issues less - although are not immune by any means - but many (if not most) open-source projects are one-offs that someone built to completion and is just sitting there for eternity. A decent portion of the time I'm looking for something very specific, this is the type of project I need, and getting it up and running is a nightmare. The main thing that I think helps remedy this project deterioration is to minimize the number of dependencies and tooling. This is something I already do to simplify maintenance and footprint, but now I have another reason; it makes projects more accessible.