91 lines
9.8 KiB
Markdown
91 lines
9.8 KiB
Markdown
# Less Retarded Software
|
|
|
|
Less retarded software (LRS) is a specific kind of [software](software.md) aiming to be a truly good technology maximally benefiting and respecting its users, following the philosophy of extreme [minimalism](minimalism.md) ([Unix philosophy](unix_philosophy.md), [suckless](suckless.md), [KISS](kiss.md)), [anarcho pacifism](anpac.md) and [freedom](free_software.md). The term was invented by [drummyfish](drummyfish.md).
|
|
|
|
## Definition
|
|
|
|
The definition here is not strict but rather fuzzy, it is in a form of ideas, style and common practices that together help us subjectively identify software as less retarded.
|
|
|
|
[Software](software.md) is less retarded if it adheres, to a high-degree (not necessarily fully), to the following principles:
|
|
|
|
- Being made with a [**truly selfless**](selfless.md) goal of maximally helping all living beings who may use the software without any intent of taking advantage of them in any way.
|
|
- Trying to follow the [Unix philosophy](unix_philosophy.md) (do one thing well, use text interfaces, ...).
|
|
- Trying to follow the [suckless](suckless.md) philosophy (configs as source files, distributing in source form, ...).
|
|
- Being [minimalist](minimalism.md) ([single compilation unit](single_compilation_unit.md), [header-only](header_only.md) libraries, no build systems, no [OOP](oop.md) languages, ...), countercomplex, [KISS](kiss.md).
|
|
- Being [free software](free_software.md) legally but ALSO practically (well commented, not bloated and obscured etc., so as to truly and practically enable the freedoms to study, modify etc.).
|
|
- Being [free culture](free_culture.md), i.e. LRS programs are free as a whole, including art assets, data etc.
|
|
- Minimizing [dependencies](dependency.md), even those such as standard library or relying on OS concepts such as files or threads, even indirect ones such as build systems and even non-software ones (e.g. avoiding [floating point](float.md), GPU, 64bit etc.).
|
|
- Very portable, non-discriminating, i.e. being written in a portable language (C etc.), using as little resources as possible (RAM, CPU, ...) and so on.
|
|
- [Future-proof](future_proof.md), [self-contained](self_contained.md), not controlled by anyone (should follow from other points).
|
|
- [Hacking](hacking.md) friendly and inviting to improvements and customization.
|
|
- Built on top of other LRS technology such as the [C99](c.md) language, Unix OS, our own libraries etc.
|
|
- Simple permissive licensing (being suckless legally) with great preference of [public domain](public_domain.md), e.g. with [CC0](cc0.md) + patent [waivers](waiver.md).
|
|
- Elegant by its simple, well thought-through solutions. (This is to be contrasted with modern rapid development.)
|
|
- No [bullshit](bullshit.md) such as [codes of conduct](coc.md), tricky licensing conditions etc.
|
|
|
|
## Why
|
|
|
|
LRS exists for a number of reasons, one of the main ones is that we simply need better technology -- not better as in better performance but better in terms of design and ethics. Technology has to make us more free, not the other way around. Technology has to be a tool that serves us, not a device for our abuse. We believe [mainstream](capitalist_software.md) tech poses a serious, even existential threat for our civilization. We don't think we can prevent [collapse](collapse.md) or a dystopian scenario on our own, or even if these can be prevented at all, but we can help nudge the technology in a better direction, we can inspire others and perhaps make the future a little brighter, even if it's destined to be dark. Even if future seems hopeless, what better can we do than try our best to make it not so?
|
|
|
|
There are other reason for LRS as well, for example it can be very satisfying and can bring back joy of programming that's been lost in the modern toxic environment of the mainstream. Minimalist programming is pleasant on its own, and in many things we do we can really achieve something great because not many people are exploring this way of tech. For example there are nowadays very few programs or nice artworks that are completely [public domain](public_domain.md), which is pretty sad, but it's also an opportunity: you can be the first human to create a completely public domain software of certain kind. Software of all kind has already been written, but you can be the first one who creates a truly good version of such software so that it can e.g. be run on embedded devices. If you create something good that's public domain, you may even make some capitalist go out of business or at least lose a lot of money if he's been offering the same thing for money. You free people. That's a pretty nice feeling.
|
|
|
|
{ Here and there I get a nice email from someone who likes something I've created, someone who just needed a simple thing and found that I've made it, that alone is worth the effort I think. ~drummyfish. }
|
|
|
|
## Politics
|
|
|
|
LRS is connected to pretty specific political beliefs, but it's not a requirement to share those beliefs to create LRS or be part of its community. You may believe in whatever you want, as long as you create or support LRS, you are part of this. We just think that it doesn't make logical sense to support LRS and not the politics that justifies it and from which it is derived. This is up to your own reasoning though.
|
|
|
|
With that said, the politics behind LRS is [anarcho pacifist](anpac.md) [communism](communism.md), but NOT [pseudoleftism](pseudoleftism.md) (i.e. we do not support political correctness, [COC](coc.md)s, [cancel culture](cancel_culture.md), Marxism-Leninism etc.). We aim for true social (not necessarily physical) equality of everyone, our technology helps everyone equally. We reject anti-equality means such as violence, bullying, censorship, [governments](government.md) and [capitalism](capitalism.md). We support things such as [universal basic income](ubi.md) and [slow movement](slow_movement.md).
|
|
|
|
**We love all living beings**, even those we disagree with and whom we dislike.
|
|
|
|
## Specific Software
|
|
|
|
The "official" LRS programs and libraries have so far been solely developed by [drummyfish](drummyfish.md), the "founder" of LRS. These include:
|
|
|
|
- **[Anarch](anarch.md)**: Game similar to [Doom](doom.md).
|
|
- **[raycastlib](raycastlib.md)**: Advanced 2D [raycasting](raycasting.md) rendering library.
|
|
- **[SAF](saf.md)**: Tiny library for small portable games.
|
|
- **[small3dlib](small3dlib.md)**: Simple software rasterizer for 3D rendering.
|
|
- **[smallchesslib](smallchesslib.md)**: Simple [chess](chess.md) library and engine ([AI](ai.md)).
|
|
|
|
Apart from this software a lot of other software developed by other people and groups can be considered LRS, at least to a high degree (there is usually some minor inferiority e.g. in licensing). Especially [suckless](suckless.md) software mostly fits the LRS criteria. The following programs and libraries can be considered LRS at least to some degree:
|
|
|
|
- **[brainfuck](brainfuck.md)**: Extremely simple [programming language](programming_language.md).
|
|
- **[dwm](dwm.md)**: Official [suckless](suckless.md) [window manager](wm.md).
|
|
- **[OpenBSD](openbsd.md)**: Cool [operating system](os.md).
|
|
- **[LIL](lil.md)**: Tiny embeddable [scripting](script.md) programming language.
|
|
- **[lisp](lisp.md)**: Programming language with a pretty elegant design.
|
|
- **[st](st.md)**: Official [suckless](suckless.md) [terminal emulator](terminal.md).
|
|
- **[badwolf](badwolf.md)**: Very small yet very usable [web browser](browser.md).
|
|
- **[FORTH](forth.md)**: Small programming language with very nice design.
|
|
- **[surf](surf.md)**: Official [suckless](suckless.md) [web browser](browser.md).
|
|
- **[tcc](tcc.md)**: Small [C](c.md) [compiler](compiler.md) (alternative to [gcc](gcc.md)).
|
|
- **[musl](musl.md)**: Tiny [C](c.md) standard library (alternative to [glibc](glibc.md)).
|
|
- **[vim](vim.md)** (kind of): [TUI](tui.md) text/[programming](programming.md) [editor](editor.md). Vim is actually relatively big but there are smaller builds, flavors and alternatives.
|
|
- **[Simon Tatham's portable puzzle collection](stppc.md)**: Very portable collection of puzzle [games](game.md).
|
|
|
|
Other potentially LRS software to check out may include [TinyGL](tinygl.md), [scc](scc.md), [uClibc](uclibc.md), [miniz](miniz.md), [nuklear](nuklear.md), [dmenu](dmenu.md), [sbase](sbase.md), [sic](sic.md), [tabbed](tabbed.md), [svkbd](svkbd.md), [busybox](busybox.md) and others.
|
|
|
|
It is also possible to talk about LRS data formats, standards, designs and concepts as such etc. These might include:
|
|
|
|
- **[ASCII](ascii.md)**: Text encoding.
|
|
- **[RGB332](rgb332.md)**, **[RGB565](rgb565.md)**: Simple [RGB](rgb.md) formats/palettes.
|
|
- **[bytebeat](bytebeat.md)**: Simple and powerful [procedural](procedural.md) music technique.
|
|
- **[farbfeld](farbfeld.md)**: [Suckless](suckless.md) image format.
|
|
- **[json](json.md)**: Simple [data](data.md) text format.
|
|
- **[lambda calculus](lambda_calculus.md)**: Minimal [functional](functional.md) language.
|
|
- **[markdown](markdown.md)**: Very simple document format.
|
|
- **[ppm](ppm.md)**: Simple image format.
|
|
- **[qoi](qio.md)**: Lossless [compression](compression.md) image format in < 1000 LOC, practically as good as [png](png.md).
|
|
- **[reverse polish notation](rpn.md)** as opposed to traditional expression notation with brackets, operator precedence and other [bloat](bloat.md).
|
|
- **[set theory](set_theory.md)**: Basis of all [mathematics](math.md).
|
|
- **[textboards](textboard.md)**, **[imageboards](imageboard.md)** and pure [HTML](html.md) personal websites as opposed to [forums](forum.md) (no registration, no users, simple interface) or even [social networks](social_network.md)
|
|
- **[Turing machine](turing_machine.md)**: Minimal definition of a [computer](computer.md).
|
|
|
|
Other technology than software may also be aligned with LRS principles, e.g.:
|
|
|
|
- Simple cheap **[bicycle](bicycle.md)** without changing gears, as opposed to e.g. a [car](car.md).
|
|
- **[Knives](knife.md)** are pretty less retarded.
|
|
- [rocks](rock.md)
|
|
- TODO |