Unix

   "Those who don't know Unix are doomed to reinvent it, poorly."
   --obligatory quote by Henry Spencer

   Unix (plurar Unixes or Unices) is an [1]old [2]operating system developed
   since 1960s as a research project of [3]Bell Labs, which has become one of
   the most influential pieces of software in history and whose principles
   (e.g. the [4]Unix philosophy, [5]everything is a file, ...) live on in
   many so called Unix-like operating systems such as [6]Linux and [7]BSD (at
   least to some degree). The original system itself is no longer in use (it
   was later followed by a new project, [8]plan9, which itself is now pretty
   old), the name UNIX is nowadays a [9]trademark and a certification.
   However, as someone once said, Unix is not so much an operating system as
   a way of thinking.

   In one aspect Unix has reached the highest level a software can strive
   for: it has transcended its implementation and became a [10]de facto
   standard. This means it has become a set of interface conventions,
   "paradigms", [11]cultural and philosophical ideas rather than being a
   single system, it lives on as a concept that has many implementations.
   This is extremely important as we don't depend on any single Unix
   implementation but we have a great variety of choice between which we can
   switch without greater issues. This is very important for [12]freedom --
   it prevents monopolization -- and its one of the important reasons to use
   unix-like systems.

   The main highlights of Unix are possibly these:

     * [13]Unix philosophy: a kind of general mindset of software
       development, usually summed up as "do one things well" (rather than
       [14]"do everything but poorly") and "make programs work in
       collaboration with other programs", advising on using universal text
       interfaces for communication etc. This often comes with the idea of
       [15]pipes, a way of chaining programs (typically using the pipe |
       operator, hence the name) by sending one program's output to other
       program's input.
     * [16]everything is a file: Unix chose to use the [17]file abstraction
       to enable universal communication of programs with hardware and among
       themselves, i.e. on unices most things such as printing, reading
       keyboard, networking etc. will be likely implemented as reading or
       writing to/from some special (sometimes just virtual) file. This has
       the advantage of being able to just use some file reading library or
       syscall, not having to access physical memory bits in memory, which
       may be difficult, unsafe etc.
     * Text centrism (great [18]command line preference), value on
       [19]portability (even over performance), sharing of source code,
       freedom of information and openness, connection to [20]hacker culture,
       valuing human time over machine time, ...
     * ...

   Unix is greatly connected to software [21]minimalism, however most unices
   are still not minimalist to absolute extreme and many unix forks (e.g.
   [22]GNU/[23]Linux) just abandon minimalism as a priority. So the question
   stands: is Unix [24]LRS or is it too [25]bloated? The answer to this will
   be similar to our stance towards the [26]C language (which itself was
   developed alongside Unix); from our point of view Unix -- i.e. its
   concepts and some of their existing implementations -- is relatively good,
   there is a lot of wisdom to take away (e.g. "do one thing well",
   modularity, "use text interfaces", ...), however these are intermixed with
   things which under more strict minimalism we may want to abandon (e.g.
   "everything is a file" requires we buy into the file [27]abstraction and
   will often also imply existence of a file system etc., which may be
   unnecessary), so in some ways we see Unix as a temporary "[28]least evil"
   tool on our way to truly good, extremely minimalist technology. [29]DuskOS
   is an example of operating system more close to the final idea of LRS. But
   for now Unix is very cool, some Unix-like systems are definitely a good
   choice nowadays.

   There is a semi humorous group called the UNIX HATERS that has a mailing
   list and a whole book that criticizes Unix, arguing that the systems that
   came before it were much better -- though it's mostly just [30]joking,
   they give some good points sometimes. It's like they are the biggest
   boomers for whom the Unix is what [31]Windows is to the Unix people.

History

   In the 1960s, Bell Labs along with other groups were developing
   [32]Multics, a kind of [33]operating system -- however the project failed
   and was abandoned for its complexity and expensiveness of development. In
   1969 two Multics developers, [34]Ken Thompson and [35]Dennis Ritchie, then
   started to create their own system, this time with a different philosophy;
   that of [36]simplicity (see [37]Unix philosophy). They weren't alone in
   developing the system, a number of other hackers helped program such
   things as a file system, [38]shell and simple utility programs. At VCF
   East 2019 Thompson said that they developed Unix as a working system in
   three weeks. At this point Unix was written in [39]assembly.

   In the early 1970s the system got funding as well as its name Unix (a pun
   on Multix). By now Thompson and Richie were developing a new language for
   Unix which would eventually become the [40]C language. In version 4 (1973)
   Unix was rewritten in C.

   Unix then started being sold commercially. This led to its fragmentation
   into different versions such as the [41]BSD or [42]Solaris. In 1983 a
   version called System V was released which would become one of the most
   successful. The fragmentation and a lack of a unified standard led to so
   called [43]Unix Wars in the late 1980s, which led to a few Unix standards
   such as [44]POSIX and Single Unix Specification.

   For [45]zoomers and other noobs: Unix wasn't like [46]Windows, it was more
   like [47]DOS, things were done in [48]text interface -- if you use the
   command line in "[49]Linux" nowadays, you'll get an idea of what it was
   like, except it was all even more primitive. Things we take for granted
   such as a [50]mouse, [51]copy-pastes, interactive text editors, having
   multiple user accounts or [52]running multiple programs at once were
   either non-existent or advanced features in the early days. Anything these
   guys did you have to see as done with stone tools.

Links:
1. old.md
2. operating_system.md
3. bell_labs.md
4. unix_philosophy.md
5. everything_is_a_file.md
6. linux.md
7. bsd.md
8. plan9.md
9. trademark.md
10. de_facto_standard.md
11. culture.md
12. freedom.md
13. unix_philosophy.md
14. windows_philosophy.md
15. pipe.md
16. everything_is_a_file.md
17. file.md
18. cli.md
19. portability.md
20. hacking.md
21. minimalism.md
22. gnu.md
23. linux.md
24. lrs.md
25. bloat.md
26. c.md
27. abstraction.md
28. least_evil.md
29. duskos.md
30. jokes.md
31. windows.md
32. multics.md
33. os.md
34. key_thompson.md
35. dennis_ritchie.md
36. minimalism.md
37. unix_philosophy.md
38. shell.md
39. assembly.md
40. c.md
41. bsd.md
42. solaris.md
43. unix_wars.md
44. posix.md
45. genz.md
46. windows.md
47. dos.md
48. cli.md
49. linux.md
50. mouse.md
51. copy_paste.md
52. multitasking.md