Designing Low Upkeep Software
People think if a project on github hasn&#x27;t been updated since 3 months then it has been abandoned!!<p>Like, why don&#x27;t we just let projects be &quot;done&quot;? Things don&#x27;t need to be maintained and updated for eternity.<p>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.<p>This of course has a very low chance of happening if your system has to exist as a part of &quot;ecosystem&quot; where you expect&#x2F;assume the presence of some external service that can change its API on a whim (or just disappear).<p>Yes, to a certain degree it&#x27;s impossible to design software that does not exist as a part of an ecosystem, which is why I put it in quotes.<p>Some APIs are stable and are guaranteed to continue to exist for a very long time: CPU instruction sets, networking protocols (IP&#x2F;UDP&#x2F;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.<p>What I&#x27;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).