Rudxain (talk | contribs)
add core guidelines/principles
Rudxain (talk | contribs)
suggest systems
Line 20: Line 20:
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 ==
==Guidelines==
This is not a [[Portal:User Guides|guide]], this is a set of "universal" principles.
This is not a [[Portal:User Guides|guide]], this is a set of "universal" principles.


=== Ease of re-creation ===
===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).
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).


Line 30: Line 30:
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>
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 ===
===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.
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 ===
===Interoperability===
{{Main|wikipedia: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.
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.
Line 58: Line 58:
*[[wikipedia:Erlang_(programming_language)|Erlang]] and [[wikipedia:Elixir_(programming_language)|Elixir]]
*[[wikipedia:Erlang_(programming_language)|Erlang]] and [[wikipedia:Elixir_(programming_language)|Elixir]]
*[[wikipedia:Ada_(programming_language)|Ada]]
*[[wikipedia:Ada_(programming_language)|Ada]]
=== Systems ===
If you have them available, choose Unix-like systems and/or [[wikipedia:MS-DOS|MS-DOS]]. Avoid [[Microsoft Windows|Windows]] and [[Apple macOS|Mac]]!
If you don't have [[wikipedia:Operating_system|OSes]] available, you'll have to make one from scratch. While this seems hard (and it is), it's actually ''much'' easier when you focus on basic features of an OS, and avoid all the "nice" features and complex optimizations. There was a time when [[wikipedia:Boot_disk|bootable programs]] where the norm, and each program needed a basic "kernel" to manage resources.<ref>{{Cite web |last=Muratori |first=Casey |date=2018-05-12 |title=The Thirty Million Line Problem |url=https://youtu.be/kZRE7HIO3vk |url-status=live |access-date=2026-03-15 |website=Molly Rocket |via=YouTube}}</ref>


==External links==
==External links==