From 58d560ffd4897826f4207a8fc1a88e5e0894a3e3 Mon Sep 17 00:00:00 2001 From: Miloslav Ciz Date: Sat, 12 Nov 2022 15:49:22 +0100 Subject: [PATCH] Update --- bloat.md | 1 + esolang.md | 2 +- faq.md | 6 ++++-- free_speech.md | 4 +++- geek.md | 3 +++ ioccc.md | 2 +- lrs.md | 2 +- main.md | 1 + programming_style.md | 1 + proprietary.md | 2 +- suckless.md | 4 +++- version_numbering.md | 45 ++++++++++++++++++++++++++++++++++++++++++++ 12 files changed, 65 insertions(+), 8 deletions(-) create mode 100644 geek.md create mode 100644 version_numbering.md diff --git a/bloat.md b/bloat.md index e73d8ba..b9cbf25 100644 --- a/bloat.md +++ b/bloat.md @@ -34,6 +34,7 @@ Besides the typical big programs that even normies admit are bloated there exist - [Unicode](unicode.md) (big specification requiring special libraries and big fonts, [ASCII](ascii.md) is better) - anything that's not strictly needed such as [antialiasing](antialiasing.md) or colors in text rendering - [linking](linking.md), build systems/scripts, directories and multiple source code files (single file, [header only](header_only.md) libraries and [single compilation unit](single_compilation_unit.md) programs are better) +- [infix notation](infix_notation.md) ([postfix notation](postfix_notation.md) is better) - any [GUI](gui.md) - [operating system](os.md) ([bare metal](bare_metal.md) is better) - [multithreading](multithreading.md), [parallelism](parallelism.md) diff --git a/esolang.md b/esolang.md index 2aabd4e..149195e 100644 --- a/esolang.md +++ b/esolang.md @@ -2,7 +2,7 @@ So called esoteric programming languages (esolangs) are highly experimental and [fun](fun.md) [programming languages](programming_language.md) that employ bizarre ideas. Popular languages of this kind include [Brainfuck](brainfuck.md), [Chef](chef.md) or [Omgrofl](omgrofl.md). -There is a wiki for esolangs, the [Esolang Wiki](https://esolangs.org). If you want to behold esolangs in all their beauty, see [hello world in different languages](https://esolangs.org/wiki/Hello_world_program_in_esoteric_languages_(nonalphabetic_and_A-M%29). The Wiki is published under [CC0](cc0.md)! +There is a wiki for esolangs, the [Esolang Wiki](https://esolangs.org). If you want to behold esolangs in all their beauty, see https://esolangs.org/wiki/Hello_world_program_in_esoteric_languages_(nonalphabetic_and_A-M). The Wiki is published under [CC0](cc0.md)! Some notable ideas employed by esolangs are: diff --git a/faq.md b/faq.md index 3fe1450..1d5b6f3 100644 --- a/faq.md +++ b/faq.md @@ -13,9 +13,11 @@ No. See [WTF](wtf.md). -### How does LRS differ from [suckless](suckless.md), [KISS](kiss.md) and similar types of software? +### How does LRS differ from [suckless](suckless.md), [KISS](kiss.md), [free software](free_software.md) and similar types of software? -Sometimes these sets may greatly overlap and LRS is sometimes just a slightly different angle of looking at the same things. I have invented LRS as my own take on suckless software and then expanded its scope to encompass not just technology but the whole society -- as I cannot speak on behalf of the whole suckless community, I have created my own "fork" and simply set my own definitions without worrying about misinterpreting and misquoting someone else. LRS advocates very similar technology to that advocated by suckless, but it furthermore has its specific ideas and areas of focus. The main point is that **LRS is derived from an unconditional love of all life** rather than some shallow idea such as "[productivity](productivity_cult.md)". In practice this leads to such things as a high stress put on [public domain](public_domain.md) and legal safety, [altruism](altruism.md), selflessness, anti-[capitalism](capitalism.md), accepting software such as [games](game.md) as desirable type of software, NOT subscribing to the [productivity cult](productivity_cult.md), seeing [privacy](privacy.md) as ultimately undesirable etc. While suckless is apolitical and its scope is mostly limited to software, LRS speaks not just about technology but about the whole society -- there are two main parts of LRS: [less retarded software](lrs.md) and [less retarded society](less_retarded_society.md). +Sometimes these sets may greatly overlap and LRS is at times just a slightly different angle of looking at the same things, but in short LRS cherry-picks the best of other things and is much greater in scope (it focuses on the big picture of whole society). I have invented LRS as my own take on suckless software and then expanded its scope to encompass not just technology but the whole society -- as I cannot speak on behalf of the whole suckless community (and sometimes disagree with them a lot), I have created my own "fork" and simply set my own definitions without worrying about misinterpreting, misquoting or contradicting someone else. LRS advocates very similar technology to that advocated by suckless, but it furthermore has its specific ideas and areas of focus. The main point is that **LRS is derived from an unconditional love of all life** rather than some shallow idea such as "[productivity](productivity_cult.md)". In practice this leads to such things as a high stress put on [public domain](public_domain.md) and legal safety, [altruism](altruism.md), selflessness, anti-[capitalism](capitalism.md), accepting software such as [games](game.md) as desirable type of software, NOT subscribing to the [productivity cult](productivity_cult.md), different view on [privacy](privacy.md), [cryptocurrencies](crypto.md) etc. While suckless is apolitical and its scope is mostly limited to software, LRS speaks not just about technology but about the whole society -- there are two main parts of LRS: [less retarded software](lrs.md) and [less retarded society](less_retarded_society.md). + +One way to see LRS is as a philosophy that takes only the [good](good.md) out of existing philosophies/movements/ideologies/etc. and adds them to a single unique [idealist](idealism.md) mix, without including [cancer](cancer.md), [bullshit](bullshit.md), errors, propaganda and other negative phenomena plaguing basically all existing philosophies/movements/ideologies/etc. ### Why this obsession with extreme simplicity? Is it because you're too stupid to understand complex stuff? diff --git a/free_speech.md b/free_speech.md index 776f5bd..b621168 100644 --- a/free_speech.md +++ b/free_speech.md @@ -2,4 +2,6 @@ Freedom of speech means there are no arbitrary punishments, imposed by government or anyone else, solely for talking about anything, making any public statement or publication of any information. Freedom of speech is an essential attribute of a mature society, sadly it hasn't been fully implemented yet and with the [SJW](sjw.md) cancer the latest trend in society seems to be towards less free speech rather than more. -Some idiots (like that [xkcd](xkcd.md) #1357) say that free speech is only about legality, i.e. about what's merely allowed to be said by the law. **This is wrong**, true free speech mustn't be limited by anything -- if you're not allowed to say something, it doesn't matter too much what it is that's preventing you, your speech is not free. If for example it is theoretically legal to be politically incorrect and criticize the LGBT gospel but you [de-facto](de_facto.md) can't do it because the LGBT fascist [SJWs](sjw.md) would [cancel](cancel_culture.md) you and maybe even physically lynch you, your speech is not free. \ No newline at end of file +Some idiots (like that [xkcd](xkcd.md) #1357) say that free speech is only about legality, i.e. about what's merely allowed to be said by the law. **This is wrong**, true free speech mustn't be limited by anything -- if you're not allowed to say something, it doesn't matter too much what it is that's preventing you, your speech is not free. If for example it is theoretically legal to be politically incorrect and criticize the LGBT gospel but you [de-facto](de_facto.md) can't do it because the LGBT fascist [SJWs](sjw.md) would [cancel](cancel_culture.md) you and maybe even physically lynch you, your speech is not free. + +Despite what the propaganda says there is currently no free speech in our society, the only kind of speech that is allowed is that which has no effect. Illusion of free speech is sustained by letting people speak until they actually start making a change -- once someone's speech leads to e.g. revealing state secrets or historical truths (e.g. about [Holocaust](holocaust.md)) or to destabilizing economy or state, such speech is labeled "harmful" in some way (hate speech, intellectual property violation, revealing of confidential information, instigating crime, defamation etc.), censored and punished. \ No newline at end of file diff --git a/geek.md b/geek.md new file mode 100644 index 0000000..93480ab --- /dev/null +++ b/geek.md @@ -0,0 +1,3 @@ +# Geek + +Geek is a wannabe [nerd](nerd.md), it's someone who wants to identify with being smart rather than actually being smart. Geeks are basically what used to be called a *smartass* in the old days -- overly confident conformists occupying [mount stupid](mount_stupid.md) who think [soyence](soyence.md) is actual science, they watch shows like Rick and Morty and Big Bang Theory, they browse [Rational Wiki](rational_wiki.md) and [reddit](reddit.md) -- especially [r/atheism](atheism.md), and they make appearances on r/iamverysmart -- they wear T-shirts with cheap references to 101 programming concepts and uncontrollably laugh at any reference to number [42](42.md), they think they're computer experts because they know the word [Linux](linux.md), managed to install [Ubuntu](ubuntu.md) or drag and drop programmed a "game" in [Godot](godot.md). Geeks don't really have their own opinions, they just adopt opinions presented on [9gag](9gag.md), they are extremely weak and don't have extreme views. They usually live the normal conformist life, they have friends, normal day job, wife and kids, but they like to say they "never fit it" -- a true nerd is living in a basement and doesn't meet any people, he lives on the edge of [suicide](suicide.md) and doesn't nearly complain as much as the "geek". \ No newline at end of file diff --git a/ioccc.md b/ioccc.md index 8c1cd73..1d6f684 100644 --- a/ioccc.md +++ b/ioccc.md @@ -10,7 +10,7 @@ Some common ideas employed in the programs include: - formatting source code as [ASCII art](ascii_art.md) - misleading identifiers and comments -- extreme [macro](macro.md) and [preprocessor](preprocessor.md) abuse +- extreme [macro](macro.md)/[preprocessor](preprocessor.md) abuse - abuse of compiler flags - different behavior under different C standards - doing simple things the hard way, e.g. by avoiding loops diff --git a/lrs.md b/lrs.md index 5c0b814..8584a45 100644 --- a/lrs.md +++ b/lrs.md @@ -13,7 +13,7 @@ The definition here is not strict but rather fuzzy, it is in a form of ideas, st - 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), [appropriate technology](appropriate_tech.md). +- 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, simple [version numbering](version_numbering.md), ...), [countercomplex](countercomplex.md), [KISS](kiss.md), [appropriate technology](appropriate_tech.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.). This may also include attributes such as [decentralization](decentralization.md). - 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.). diff --git a/main.md b/main.md index ec93021..6dcef7d 100644 --- a/main.md +++ b/main.md @@ -59,6 +59,7 @@ If you don't know where to start, here are some suggestions. If you're new, the - [public domain](public_domain.md) - [history](history.md) - [Venus project](venus_project.md) +- [TROM](trom.md) Some more specialized topics you may want to check out are: diff --git a/programming_style.md b/programming_style.md index 7f59c86..7a18b4d 100644 --- a/programming_style.md +++ b/programming_style.md @@ -46,4 +46,5 @@ a = b; - **Global variables are great**, use them. **Long functions are fine**. - **Adhere to C99 or C89 standard**. - **Try to not create many source files**, many times your project can very well be in a single file which is the ideal case. Create **[header only libraries](header_only.md)** If you have multiple files, keep them in the same directory and try to have just a **[single compilation unit](single_compilation_unit.md)** (only one .c file with several .h files). Try to make files no longer than 10k lines. +- **Use the LRS [version numbering](version_numbering.md) system**. - **Do not use non-ASCII characters in the source code**. \ No newline at end of file diff --git a/proprietary.md b/proprietary.md index c97b3b2..cba20d0 100644 --- a/proprietary.md +++ b/proprietary.md @@ -1,5 +1,5 @@ # Proprietary Software -Proprietary software is any software that is not [free (as in freedom) software](free_software.md). This kind of software is basically always [evil](evil.md), in fact it is mostly [capitalist software](capitalist_software.md) designed to abuse its user in some way. Examples of proprietary software are [MS Windows](windows.md), [MacOS](macos.md), [Adobe Photoshop](photoshop.md) and almost every [game](game.md). +Proprietary software is any software that is not [free (as in freedom)](free_software.md)/[open source](open_source.md) software. Such software denies users and creators their basic freedoms (freedom of unlimited use, studying, modifying and sharing) and is therefore considered [evil](evil.md), in fact it is mostly [capitalist software](capitalist_software.md) designed to abuse its user in some way. Examples of proprietary software are [MS Windows](windows.md), [MacOS](macos.md), [Adobe Photoshop](photoshop.md) and almost every [game](game.md). Proprietary software licenses are usually called [EULAs](eula.md). \ No newline at end of file diff --git a/suckless.md b/suckless.md index 3b5d9b3..8e832cb 100644 --- a/suckless.md +++ b/suckless.md @@ -2,6 +2,8 @@ Suckless, software that sucks less, is a type of [free](free_software.md) [software](software.md), as well as an organization (http://suckless.org/), that tries to adhere to a high technological [minimalism](minimalism.md), freedom and hackability, and opposes so called [bloat](bloat.md) and unnecessary complexity which has been creeping into most "[modern](modern.md)" software and by which technology has started to become less useful and more burdening. It is related to [Unix philosophy](unix_philosophy.md) and [KISS](kiss.md) but brings some new ideas onto the table. [LRS](lrs.md) builds on top of suckless ideas. +Suckless is pretty cool, it has inspired LRS, but watch out, as with most of the few promising things nowadays it is half cool and half shitty -- for example most suckless followers seem to be [rightists](leve_vs_right.md) and [capitalists](capitalism.md) who are motivated by [harmful](harmful.md) goals such as their own increased [productivity](productivity_cult.md), not by altruism. LRS fixes this, we only take the good ideas of suckless. + Notable suckless promoters on mainstream social media include [Luke Smith](luke_smith.md), [DistroTube](distrotube.md) and [Mental Outlaw](mental_outlaw.md). { From what it seems to me, the "official" suckless community is largely quiet and closed, leading conversations mostly on mailing lists and focusing almost exclusively on the development of their software without politics, activism and off topics, probably because they consider it bullshit that would only be distracting. There is also suckless subreddit which is similarly mostly focused on the software alone. They let their work speak. Some accuse the community of being Nazis, however I believe this is firstly irrelevant and secondly mostly false accusations of haters, even if we find a few Nazis among them, just as in any community. Most pro-suckless people I've met were actually true socialists (while Nazis are not socialist despite their name). Unlike [tranny software](tranny_software.md), suckless software itself doesn't promote any politics, it is a set of purely functional tools, so the question of the developers' private opinions is unimportant here. Suckless ideas are good regardless of whose brains they came from. ~drummyfish } @@ -15,7 +17,7 @@ Notable suckless promoters on mainstream social media include [Luke Smith](luke_ - [Forking](fork.md) by default, software is distributed in source format, every user is supposed to create a personal customized fork and compile/customize the software himself. - Mods (extension/addons) are implemented and distributed as [patch](patch.md) files. - Permissive licensing such as [MIT](mit.md), [CC0](cc0.md) etc. -- Typical upper limit for [lines of code](loc.md) of a program being 10k. +- Typical upper limit for [lines of code](loc.md) of a program being 10k, mostly just about 1-2k. - Focus on the technology itself without mixing it with [politics](politics.md) and other [bullshit](bs.md) such as [COCs](coc.md). ## History diff --git a/version_numbering.md b/version_numbering.md new file mode 100644 index 0000000..917df92 --- /dev/null +++ b/version_numbering.md @@ -0,0 +1,45 @@ +# Version Numbering + +TODO + +## LRS Version Numbering + +At [LRS](lrs.md) we suggest the following version numbering (invented/employed by [drummyfish](drummyfish.md)): { OFC I don't know if anyone else is already doing this, I'm not claiming any history firsts, just that this is what I independently started doing in my projects. ~drummyfish } + +This is a simple system that tries to not be [dependent](dependency.md) on having a [version control system](vcs.md) such as [git](git.md), i.e. this system works without being able to make different development branches and can be comfortably used even if you're just developing a project in a local directory without any fancy tools. Of course you can use a VCS, this system will just make you depend less on it so that you can make easier transitions to a different VCS or for example drop a VCS altogether and just develop your projects in a directory with FTP downloads. + +Version string is of format *major.minor* with optional suffix letter `d`, e.g. 0.35, 1.0 or 2.1d. + +Major and minor numbers have the usual meaning. Major number signifies the great epochs of development and overall project state -- 0 means the project is in a state before the first stable, highly usable, [optimized](optimization.md), [tested](testing.md) and [refactored](refactoring.md) release that would have all initially set goals and features implemented. 1 means the project has already reached such state. Any further increment signifies a similarly significant change in the project ([API](api.md) overhaul, complete rewrite, extreme number of new features etc.) that has already been incorporated with all the testing, optimization, refactoring etc. At the start of each major version number the minor version number is set to 0 and within the same major version number a higher minor number signifies smaller performed changes (bug fixes, smaller optimizations, added/removed individual features etc.). Minor number doesn't have to be incremented by 1, the value may try to intuitively reflect the significance of the implemented changes (e.g. versions 0.2 and 0.201 differ only very slightly whereas versions 0.2 and 0.5 differ significantly). + +From the user's perspective a greater *major.minor* number signifies a newer version of the project and the user can be sure that versions with the same *major.minor* number are the same. + +The main difference against traditional version numberings is the optional `d` suffix. This suffix added to version number *X* signifies an in-development (non-release) branch based on version *X*. **If a version has the `d` suffix, it doesn't have to change major and minor numbers with implemented changes**, i.e. there may be several different versions of the project whose version number is for example 0.63d. I.e. with the `d` suffix it no longer holds that versions with the same number are necessarily the same. This allows developer to not bother about incrementing version number with every single change (commit). The developer simply takes the latest release version (the one without `d` suffix), adds the `d` suffix, then keeps modifying this version without caring about changing the version number with each change, and when the changes are ready for release, he removes the `d` suffix and increases the version number. The user may choose to only use the release (stable, tested, ...) version without the suffix or he can take the risk of using the latest development version (the one with the `d` suffix). + +With this a project can be comfortably developed in s single git branch without managing separate stable and development branches. The head of the branch usually has the latest in-development version (with the `d` suffix) but you may just link to previous commits of release versions (without the `d` suffix) so that users can download the release versions. You can even not use any VCS and just develop your project in a directory and make hard backups of each release version. + +Here is an example of version numbering a project with the LRS system: + +| version | description | release? | +| ------- | ----------------------------- | --------- | +| 0.0 | just started | YES | +| 0.0d | added license, Makefile, ... | no | +| 0.0d | added some code | no | +| 0.0d | added more code | no | +| 0.01 | it already does something! | YES | +| 0.01d | added more features | no | +| 0.01d | fixed some bugs | no | +| 0.01d | refactored | no | +| 0.2 | it is already a bit usable! | YES | +| 0.2d | added more features | no | +| ... | ... | ... | +| 0.9d | fixed bugs | no | +| 0.9d | refactored | no | +| 1.0 | nice, stable, tested, usable! | YES | +| 1.0d | added a small optimization | no | +| ... | ... | ... | +| 2.0 | complete rewrite for perform. | YES | +| 2.0d | added a few features | no | +| 2.0d | fixed a bug | no | +| 2.01 | a few nice improvements | YES | +| ... | ... | ... | \ No newline at end of file