commit ba76085b0867ccf63842a9c13a3f37109b3a00ac
parent 22b965773b2632ca66dc234345828c3ce62c1fe8
Author: Ville-Matias Heikkila <viznut@low.fi>
Date: Sun, 24 Jul 2022 13:34:13 +0300
add pages
Diffstat:
2 files changed, 46 insertions(+), 0 deletions(-)
diff --git a/redo_from_scratch.mdwn b/redo_from_scratch.mdwn
@@ -0,0 +1,15 @@
+**Redo from scratch** is an idea that is antithetical to [[reuse]]. Instead
+of modifying an existing program to fit a new purpose, a completely new
+program is written from scratch.
+
+The philosophy of Chuck Moore, the author of [[Forth]], has very strong RFS
+elements. Instead of deciding a set of standard pieces to build software
+from, Moore was ready to rethink just about any previous decision. What came
+to be the time-tested core of the Forth language was based on constant and
+obsessive rethinking, experimentation and redoing-from-scratch.
+
+In practical purposes, RFS often has huge risks and problems, starting from
+the bugginess typical of new programs. However, it can be heartily
+recommended as an artistic or educational practice, as a way to exercise
+one's programming skills, or as a research method for experimenting with
+completely new ideas.
diff --git a/reuse.mdwn b/reuse.mdwn
@@ -0,0 +1,31 @@
+**Reuse** means the use of a piece of technology for new purposes, often
+ones that were never envisioned by the original designers. **Reusability**
+refers to design that makes reuse possible.
+
+In **[[hardware]]**, reusability is of utmost importance. In order to
+maximize component longevity, it should be possible to reappropriate them to
+different purposes.
+
+In **software**, the question of reuse and reusability is more complicated.
+Software can be constructed and discarded without waste (it's just patterns
+of electrons), so it can't be compared to hardware in this case. You don't
+need to feel sorry for programming something
+[[from scratch|redo from scratch], because the replaceability of software is
+what computers are all about.
+
+Excessive reuse easily leads to [[bloat]] and multiple layers of legacy, as
+in case of [[Unix]]. [[Monoculture]] may also appear if a lot of programming
+is framed as the reuse of a single [[silver bullet]]. Too much concern for
+reusability may also make the piece of software unnecessarily big and
+complex.
+
+Minimal reuse, on the other hand, may easily lead to "[[Not Invented Here]]"
+kinds of problems.
+
+The reuse of **ideas** is less problematic than the reuse of software.
+Wisdom and ideas can be accumulated and refined without the risk of bloat or
+sedimentation.
+
+Keeping ideas simple makes it easier to implement and reuse them. Having a
+rich layer of different ideas at the bottom of the dependency pyramid may
+also help with creating [[technological diversity]].