Designing Low Upkeep Software
People think if a project on github hasn't been updated since 3 months then it has been abandoned!!Like, why don't we just let projects be "done"? Things don't need to be maintained and updated for eternity.In my mind, the best software engineering is where you solve a problem once and your solution just works and needs no configuration or maintenance or updates.This of course has a very low chance of happening if your system has to exist as a part of "ecosystem" where you expect/assume the presence of some external service that can change its API on a whim (or just disappear).Yes, to a certain degree it's impossible to design software that does not exist as a part of an ecosystem, which is why I put it in quotes.Some APIs are stable and are guaranteed to continue to exist for a very long time: CPU instruction sets, networking protocols (IP/UDP/TCP), operating systems (AFAICT: Linux (the kernel) works hard to not break user programs, and Windows is kind of known for bending over backwards to maintain compatibility with old programs), file systems, etc.What I'm advocating for here requires that your program be compiled into a native executable binary file, and it must embed all its library dependencies (aka static linking).