User:Rudxain/Permacomputing: Difference between revisions
m link self-hosting |
add core guidelines/principles |
||
| Line 19: | Line 19: | ||
This is more than just [[wikipedia:Link_rot|link rot]], it's the increasing complexity of keeping alive indie content on the web, leading to a reliance on platforms and time-sorted publication formats (blogs, feeds, tweets).</blockquote> | This is more than just [[wikipedia:Link_rot|link rot]], it's the increasing complexity of keeping alive indie content on the web, leading to a reliance on platforms and time-sorted publication formats (blogs, feeds, tweets).</blockquote> | ||
== Guidelines == | |||
This is not a [[Portal:User Guides|guide]], this is a set of "universal" principles. | |||
=== Ease of re-creation === | |||
Simple tools are easy to re-implement from scratch, so choose (and learn) simple tools whenever possible. If you ever find yourself in a situation where you have a computer with no software, or you don't even have a computer, you can rely on simple tools and skills to make what you need (or find someone else to do it). | |||
If the tool you need is hard to re-implement ''manually'', ensure it's easy to re-create ''automatically''. For example, ensure the tool is widely-available in a source-code form that can be built by a simple compiler (such as [[wikipedia:Tiny_C_Compiler|TCC]]) or executed by a simple interpreter/CPU (interpreters are just [[wikipedia:Virtual_machine|virtual]] CPUs); this is source-level [[wikipedia:Software_portability|portability]]. | |||
This principle is the basis of [[wikipedia:Bootstrapping_(compilers)|bootstrapping]]. Simple (and tedious) tools can be used to make useful (and complex) tools! This goes hand-in-hand with [[wikipedia:Reproducible_builds|reproducible builds]], which [[User:Rudxain/Object transparency movement|improves transparency]].<ref>https://bootstrappable.org/</ref> | |||
=== Ubiquity === | |||
If the tool is hard to recreate, ensure it's mostly [[wikipedia:Omnipresence|omnipresent]]. This is "[[wikipedia:Redundancy_(engineering)|useful redundancy]]", as I call it. This way, you can typically rely on it being available in almost any situation. | |||
=== Interoperability === | |||
{{Main|wikipedia:Interoperability}} | |||
Ensure the tool-set/tool-chain you use is like an orchestra: there must be some ''harmony''. That is, ensure many tools can communicate with each other using common formats and protocols. Ensure ''those'' formats and protocols follow the same guidelines as the tools (simple, [[wikipedia:Open_standard|open]], ubiquitous, etc...). In short, follow [[wikipedia:Unix_philosophy|the Unix Philosophy]]. Even a tiny set of simple tools can be orders-of-magnitude more useful than a single simple tool. | |||
==Suggestions== | ==Suggestions== | ||
Ideally, this should be a guide, but there is no one-size-fits-all guide to "achieve permacompute nirvana". So here's a list of my own suggestions | Ideally, this should be a guide, but there is no one-size-fits-all guide to "achieve permacompute nirvana". So here's a list of my own concrete suggestions and examples: | ||
===Programming languages=== | ===Programming languages=== | ||