

Hardware can’t really have “tech debt” in the same way as software. Hardware is a physical entity, each computer is a different computer, they’re the same model, the same design, but they’re different computers. Each installation of software is a direct copy. If we’re on the same architecture and the same version, we’re running the same Firefox unless something is wrong with Mozilla.
I think hardware that’s outdated is bound to happen. As a hobbyist I have my own share of “outdated hardware”. In reality that shit still works. I can pull an old laptop and put Fedora Silverblue on it today and it will work just fine for surfing the web, writing on forums, doing a good amount of hobbyist software stuff, etc.
And there in lies the problem, that much of the lifecycle of hardware is directly tied to software support and typically very strongly to bad commercial software. We can give people reasons to not upgrade and we’ll write better software for it. Some of the best software is effectively eternal, for example I have used vim my entire professional career even when I was writing Java.
I think the biggest problems is that there’s too much hardware and proprietary hardware being made now a days, and not enough hobbyists to get it basic support. For example unless the landscape changes in 6 years I will likely have no way to revive full functionality for my M1 Apple silicon.
But that’s PC’s, the more egregious things are smaller form factor devices. Android has been the biggest disappointment for me to be honest. What was sold as a “Linux Phone” gave you none of the technical benefits of Linux. So much small form factor stuff essentially becomes ewaste. The small amount of platforms that gain hobbyist support are extremely rare and limited. This is exacerbated by tight integration between physical devices to server side software as a service platforms.
If the libre movement was not a hollowed out husk of it’s former self and the economic conditions were able to create a new set of leaders for it we would have
-
GPLv4 that requires you to license as GPLv4 if you use any remote procedure call regardless of medium that executes GPLv4 code.
-
GPLv4.1 that requires any device where GPLv4.1 code comes factory installed must have a fully documented and unlocked bootloader and/or user serviceable firmware flash functionality
-
GPLv5 that requires you to license as GPLv5 if you have any use of GPLv5 code in the tool/supply chain of a software for examle if FoxConn is using gnutls and you use a MacBook you’re licensing as GPLv5, if you are a GPLv5 compiler, you’re licensing as GPLv5
-
GPLv6 that makes legal to execute your landlord if they charge you rent and any GPLv6 code is used by them directly or indirectly
That would really fix some things regarding ewaste and frankly housing. TBH I think we’re gonna see general computing calm the fuck down in the next 10-20 years compared to the onslaught of release cycles in the late 2000’s and 2010’s. The only real possible driver is going to be if games really glom on to ray tracing bullshit beyond the AAA contractually obligated messes.
This is only really useful in low expressiveness languages where there is not a huge set of language enhancements possible through libraries. Think Java exception handling for example.
In essence it works if you “best practices” are things like don’t use switch statements.
It doesn’t work if you best practices are things like use
Result<T, E>
from this functional result library.Essentially LLMs don’t really work “at scale” if you need anything more complicated than what the average internet tutorial code is in your language.
Same with perf.
Also this only works 60% of all the time though if that, so the more requirements you pile on the less likely it will hit all of them properly.