build_on_solid_ground.mdwn (2741B)
1 Consider when to build on solid ground and when to design for disappearance. 2 Longevity requires some considerations. 3 4 Many computing systems are based on platforms, frameworks or even languages 5 that change very rapidly, may become obsolete at any time, and are too complex 6 to be easily reimplemented. This principle exists to minimize [[obsolescence]] 7 and superfluous maintenance work in systems intended to last. 8 9 It is good to experiment with new ideas, concepts and languages, but forming 10 hard dependencies on them is usually a bad idea. Appreciate mature 11 technologies, clear ideas and well-understood theories when building something 12 that is intended to last. Software that uses open, well-documented standards 13 will be more useful in communicating with the wider technological world. It 14 also means that data can survive and still be readable even if the software is 15 no longer functioning. 16 17 18 What can YOU do 19 --------------- 20 21 **With or without a computer** 22 23 * Consider using software that runs locally, is open-sourced, and has a thriving user community, or is well-documented 24 * Try to pick software that favours slow release cycles and thorough testing over rolling updates. 25 * Try to use smaller, more general-purpose tools instead of complex, prescriptive all-in-one solutions 26 * You may also read this as "grow roots to a solid ground". Learn things that last. Learn the history of the technology you use. 27 28 29 **When creating and maintaining software, digital tools or infrastructure** 30 31 * Avoid unreliable dependencies, especially those hard (non-optional) dependencies. If you can't work around them (in case of software), you can’t avoid using such dependencies, you should bundle them directly with your software keep local copies, instead of relying on downloading them from external servers every time. This way, your software won’t break if those external resources disappear. 32 * It is possible to support several target platforms. In case of lasting programs, one of these should be a bedrock platform, or instruction set, that does not change too much and therefore increases accessibility, portability, and fallback scenarios. 33 * Imagine some of your users will never be able to get an update or find support - think about how they might solve their problems. 34 * Try to use standard file and data exchange formats, ideally formats that are human-readable. 35 * Don't take anything for granted. Especially don't expect the infrastructure, such as the power grid and global networking, to continue working indefinitely. 36 37 38 Principle in action 39 ------------------- 40 41 * [UXN](https://wiki.xxiivv.com/site/uxn.html) 42 * [DuskOS](https://duskos.org/) 43 * [Actually Portable Executable](https://justine.lol/ape.html) 44 * [[static site generator]]