Operating System

   Operating System (OS) is usually a quite complex [1]program that's
   typically installed on a [2]computer before any other user program and
   serves as a platform for running other programs as well as handling [3]low
   level functions, managing resources ([4]CPU usage, [5]RAM, [6]files,
   [7]network, ...) and offering services, protection and [8]interfaces for
   humans and programs. If computer was a city, an OS is its center that was
   built first and where its government resides. As with most things, the
   definition of an OS can differ and be stretched greatly -- while a typical
   OS will include features such as [9]graphical interface with windows and
   mouse cursor, [10]file system, [11]multitasking, [12]networking, [13]audio
   system, safety mechanisms or user accounts, there exist OSes that work
   without any said feature. Though common on mainstream computers, operating
   system isn't necessary; it may be replaced by a much simpler program
   (something akin a program loader, BIOS etc.) or even be absent altogether
   -- programs that run without operating system are called "[14]bare metal"
   programs (these can be encountered on many simple computers such as
   [15]embedded devices).

   There is a nice [16]CC0 wiki for OS development at
   https://wiki.osdev.org/.

   Examples of operating systems are [17]Unix (one of the first and most
   influential systems), [18]GNU ([19]free software clone of Unix), various
   [20]BSD systems, [21]Windows (harmful parody of an operating system) or
   [22]Android (another highly harmful software, this time for mobile
   platforms), [23]TempleOS etc.

   From programmer's point of view a serious OS is one of the most difficult
   pieces of software one can pursue to develop. The task involves an
   enormous amount of [24]low-level programming, development of own tools
   from scratch and requires deep and detailed knowledge of all components of
   a computer, of established standards as well as many theoretical subjects
   such as [25]compiler design.

   Which OS is the best? Currently there seems to be almost no good operating
   system in existence, except perhaps for [26]Collapse OS and [27]Dusk OS
   which may be the closest to [28]LRS at the moment, but aren't widely used
   yet and don't have many programs running on them. Besides this there are
   quite a few relatively usable OSes, mostly [29]Unix like systems. For
   example [30]OpenBSD seems to be one of them, however it is [31]proprietary
   (yes, it contains some code without valid licenses, for example [32]this,
   [33]this etc.) and too obsessed with MUH [34]SECURITY, and still a bit
   overcomplicated. [35]HyperbolaBSD at least tries to address the freedom
   issue of OpenBSD but suffers from many others. [36]Devuan is pretty
   usable, [37]just werks and is alright in not being an absolute apeshit of
   consoomerist bloat. [38]FreeDOS seemed nice too: though it's not Unix
   like, it is much more [39]KISS than Unices, but it will probably only work
   on [40]x86 systems.

   An OS, as a software, consists of two main parts:

     * [41]kernel: The base/core of the system, running in the most
       privileged mode, offering an environment for user applications.
     * [42]userland (applications): The set of programs running on top of the
       kernel. These run in lower-privileged mode and use the services
       offered by the kernel via so called [43]system calls.

   For example in GNU/Linux, [44]Linux is the kernel and [45]GNU is the
   userland.

Attributes/Features

   TODO

Notable Operating Systems

   Below are some of the most notable OSes.

   { Some more can be found here: https://wiki.osdev.org/Projects.
   ~drummyfish }

     * [46]Android: extremely badly designed malicious system
     * [47]BSD systems such as [48]OpenBSD and [49]freeBSD: Unix-like OSes
     * [50]Collapse OS: [51]finished, extremely minimalist OS that will help
       us survive the [52]collapse
     * [53]DuskOS: kind of continuation of Collapse OS aiming for more
       comfort
     * [54]DOS
     * [55]FreeDOS
     * [56]GNU/[57]Linux very popular systems existing in many different
       [58]distributions, some completely [59]free
     * [60]Haiku
     * [61]HyperbolaBSD
     * [62]Inferno: OS in the style of Plan 9
     * [63]MacOS
     * [64]Minix
     * [65]Oberon: old, kinda KISS OS with [66]TUI, made using custom
       language
     * [67]Plan 9: research OS, continuing the ideas of [68]Unix
     * [69]PostmarketOS
     * [70]ReactOS
     * [71]Replicant
     * [72]Solaris
     * [73]TempleOS: simple [74]meme OS written by a [75]Terry Davis
     * [76]Unix
     * [77]Windows: very bad [78]proprietary [79]capitalist OS
     * [80]9front: OS based on Plan 9
     * ...

LRS Operating System

   UPDATE: This role may be taken by [81]comun shell.

   What would an operating system designed by [82]LRS principles look like?
   There may be many different ways to approach this challenge. Multiple
   operating systems (or multiple versions of the same system) may be made,
   such as as an "extremely KISS bare minimum featureless system", a "more
   advanced but still KISS system", a "special-purpose safe system for
   critical uses" etc. The following is a discussion of ideas we might employ
   in designing such systems.

   The basic idea for a universal LRS operating system is to be something
   more akin a mere text [83]shell (possibly [84]comun shell), we wouldn't
   probably even call it an operating system. A rough vision is something
   like "[85]DOS plus a bit of [86]Unix philosophy"; we may also imagine it
   like [87]GRUB or something similar really. The system would probably seem
   primitive by "[88]modern standards", but in a [89]good society it would be
   sufficient as a universal operating system (i.e. not necessarily suitable
   for ALL purposes). The OS would in fact be more of a program loader (like
   e.g. the one seen in [90]Pokitto), running with the same privileges as
   other programs -- its purpose would NOT be to provide a safe environment
   for programs to run in, to protects user's data and possibly not even to
   offer a platform for programs to run on (for abstracting hardware away a
   non-OS [91]library might be used instead), but rather to allow switching
   between different programs on a computer without having to reupload the
   programs externally, and to provide basic tools for managing the computer
   itself (such as browsing files, testing hardware etc.). This shell would
   basically allow to browse files, load them as programs, and maybe run
   simple scripts (e.g. in mentioned comun language), allowing things such as
   automatization of running several program (NOT in parallel but rather one
   by one) to collaborate on computing something.

   An idea worth mentioning is also the possibility to have a have a
   distribution of this "operating system" that works completely without a
   file system, i.e. something akin a "big program" that has all the tools
   compiled into it, without the possibility to install or uninstall
   programs. Of course this doesn't mean ALL operating systems would in the
   world would work like this, it would just be a possibility for those that
   could benefit from it, e.g. very small wrist watch computers that don't
   wouldn't want and need to include hardware and software required for a
   mutable filesystem to work, since all they would need would be a few tools
   like stopwatch and calculator, plus they would gain the advantage of
   loading a program instantly. The tools to be "compiled in" could be chosen
   by the user before compilation to make a personalized "immutable distro".

   Let's keep in mind that true LRS computers would be different from the
   current capitalist ones -- an operating system would only be optional,
   programs would be able to run on [92]bare metal as well as under an OS,
   and operating systems would be as much compatible as possible. By this an
   OS might be seen as more of an extra tool rather than a platform.

   The system might likely lack features one would nowadays call essential
   for an OS, such as multiple user support (no need if [93]security is not
   an issue, everyone can simply make his own subdirectory for personal
   files), [94]virtual memory, complex [95]GUI etc. There might even be no
   [96]multitasking; a possibility to make a multitasking OS exists, but
   let's keep in mind that even such things as programs interacting via
   [97]pipes may be implemented without it (using temporary buffer files into
   which one program's output is stored before running the next program).

   The universal OS would assume well behaved programs, as programs would
   likely be given full control over the computer when run -- this would
   greatly simplify the system and also computing in general. Doing so would
   be possible thanks to non-existence of malicious programs (as in good
   society there would be no need for them) and elimination of [98]update
   culture. Users would only install a few programs they choose carefully --
   programs that have been greatly tested and don't need to be updated.

   On user interface: the basic interaction mode would of course be the text
   interface. Programs would have the option to switch to a graphical mode in
   which they would be able to draw to screen. There would be no such
   [99]bloat as [100]window managers or [101]desktop environments -- these
   are capitalist inventions that aren't really needed as users practically
   always interacts with just one program at a time. Even in a multitasking
   system only one program would be drawing to the screen at a time, with
   user having the option to "alt-tab" between them. This would also simplify
   programs greatly as they wouldn't have to handle bullshit such as
   dynamically resizing and rearranging their window content. If someone
   REALLY wanted to have two programs at the screen at the same time,
   something akin a "screen splitter" might be made to create two virtual
   screens on one physical screen.

   A bit more details: the universal OS could simply be a program that gets
   executed after computer restart. This program would offer a [102]shell
   (textual, graphical, ...) that would allow inspecting the computer,
   configuring it, and mainly running other programs. Once the user chose to
   run some program, the OS would load the program to memory and jump to
   executing it. To get back to the OS the program could hand back control to
   the OS, or the computer could simply be restarted. If the program crashes,
   the computer simply restarts back to OS.

   TODO: more

Links:
1. program.md
2. computer.md
3. low_level.md
4. cpu.md
5. ram.md
6. file.md
7. network.md
8. interface.md
9. gui.md
10. file_system.md
11. multitasking.md
12. network.md
13. audio.md
14. bare_metal.md
15. embedded.md
16. cc0.md
17. unix.md
18. gnu.md
19. free_software.md
20. bsd.md
21. windows.md
22. android.md
23. templeos.md
24. low_level.md
25. compiler.md
26. collapseod.md
27. duskos.md
28. lrs.md
29. unix.md
30. openbsd.md
31. proprietary.md
32. https://cvsweb.openbsd.org/cgi-bin/cvsweb/src/sys/dev/microcode/tigon/tigon-license?rev=1.5&content-type=text/x-cvsweb-markup
33. https://cvsweb.openbsd.org/cgi-bin/cvsweb/src/sys/dev/microcode/yds/yds-license?rev=1.3&content-type=text/x-cvsweb-markup
34. security.md
35. hyperbolabsd.md
36. devuan.md
37. just_werks.md
38. freedos.md
39. kiss.md
40. x86.md
41. kernel.md
42. userland.md
43. syscall.md
44. linux.md
45. gnu.md
46. android.md
47. bsd.md
48. openbsd.md
49. freebsd.md
50. collapseos.md
51. finished.md
52. collapse.md
53. duskos.md
54. dos.md
55. freedos.md
56. gnu.md
57. linux.md
58. distro.md
59. free_software.md
60. haiku.md
61. hyperbolabsd.md
62. inferno.md
63. macos.md
64. minix.md
65. oberon.md
66. tui.md
67. plan9.md
68. unix.md
69. pmos.md
70. reactos.md
71. replicant.md
72. solaris.md
73. templeos.md
74. meme.md
75. terry_davis.md
76. unix.md
77. windows.md
78. proprietary.md
79. capitalist_software.md
80. 9front.md
81. comun_shell.md
82. lrs.md
83. shell.md
84. comun.md
85. dos.md
86. unix_philosophy.md
87. grub.md
88. modern.md
89. less_retarded_society.md
90. pokitto.md
91. library.md
92. bare_metal.md
93. security.md
94. virtual_memory.md
95. gui.md
96. multitasking.md
97. pipe.md
98. update_culture.md
99. bloat.md
100. window_manager.md
101. desktop_environment.md
102. shell.md