summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--content-org/bsd.org491
-rw-r--r--content/bsd/history/01_multics.md4
-rw-r--r--content/bsd/history/02_unix.md4
-rw-r--r--content/bsd/history/_index.md6
-rw-r--r--content/bsd/why-bsd.md133
-rw-r--r--content/bsd/why-not-bsd.md6
-rw-r--r--layouts/partials/header/header.html4
-rw-r--r--layouts/partials/menu.html26
-rw-r--r--layouts/partials/menu/item.html31
-rw-r--r--layouts/partials/menu/new-or-up.html9
10 files changed, 498 insertions, 216 deletions
diff --git a/content-org/bsd.org b/content-org/bsd.org
index 011c4e81..77c27863 100644
--- a/content-org/bsd.org
+++ b/content-org/bsd.org
@@ -15,27 +15,23 @@ CLOSED: [2024-03-06 Wed 14:45]
:EXPORT_HUGO_PAIRED_SHORTCODES: recent-updates menu img-r
:END:
-* BSDs :@bsd:
+
+* BSDs
:PROPERTIES:
-:EXPORT_HUGO_MENU: :menu bsd
:EXPORT_HUGO_CUSTOM_FRONT_MATTER: :primary_menu bsd
+:EXPORT_HUGO_MENU: :menu bsd
:END:
-** Unix history :@bsd:
-:PROPERTIES:
-:EXPORT_HUGO_CUSTOM_FRONT_MATTER: :primary_menu bsd-history
-:EXPORT_HUGO_SECTION: bsd/history
-:EXPORT_HUGO_MENU: :menu bsd-history
-:END:
-*** DONE History of BSD and Unix
+** DONE History of BSD and Unix
CLOSED: [2024-04-08 Mon 09:37]
:PROPERTIES:
+:EXPORT_HUGO_SECTION: bsd/history
:EXPORT_FILE_NAME: _index
-:EXPORT_HUGO_CUSTOM_FRONT_MATTER: :primary_menu bsd
:EXPORT_HUGO_CUSTOM_FRONT_MATTER+: :abstract the long and turbolent history
:EXPORT_HUGO_PAIRED_SHORTCODES: menu img-r
-:EXPORT_HUGO_MENU: :menu bsd
+:EXPORT_HUGO_MENU_OVERRIDE: :post " from Multics to OpenBSD"
:END:
+
Does computer history have any real appliance?
Not really.
Does it explain certain, potentially baffling things? Certainly.
@@ -45,219 +41,127 @@ Especially when discussing systems with such rich history as BSD.
I will be gentle here, I promise.
No /Hardcore History/ in sight.
-
#+attr_shortcode: "bsd-history"
#+begin_menu
History of BSD
#+end_menu
-*** DONE History of BSD part I: Multics
-CLOSED: [2024-03-09 Sat 21:03]
+** DONE Why you should run a BSD on a PC :@bsd:
+CLOSED: [2024-04-27 Sat 22:29]
:PROPERTIES:
-:EXPORT_FILE_NAME: 01_multics
-:EXPORT_HUGO_CUSTOM_FRONT_MATTER+: :abstract BSD history starts with Multics
-:EXPORT_HUGO_CUSTOM_FRONT_MATTER+: :shortname Part I: Multics
-:EXPORT_HUGO_MENU: :menu bsd-history :name "Multics"
-:EXPORT_HUGO_PAIRED_SHORTCODES: img-c
+:EXPORT_FILE_NAME: why-bsd
+:EXPORT_HUGO_CUSTOM_FRONT_MATTER+: :abstract Reasons why BSD may be the best OS for you
+:EXPORT_HUGO_PAIRED_SHORTCODES: img-r
+:EXPORT_HUGO_CUSTOM_FRONT_MATTER+: :menu_item_override "Why you should run BSD on a PC"
+:EXPORT_HUGO_CUSTOM_FRONT_MATTER+: :menu_item_override_start_li true
+:EXPORT_HUGO_MENU_OVERRIDE: :post " or perhaps "
:END:
-**** Origins of time-sharing
-
-Let's start our journey back when dinosaurs roamed the earth, engineers wore ties, and Barbie was first gaining popularity - the 60s.
-Nowadays, we have grown accustom to companies selling devices at lower profit margins - with most profit coming from software subscriptions.
-But 70 years ago it was the complete opposite.
-Companies bought expensive computers, huge machines, and what was running on them was of lesser value.
-And I really mean /expensive/.
-An IBM System/360 Model 20, presented in 1964, could have been bought starting from USD 62,710 (USD 622,626 adjusted for inflation) or rented for USD 1280 (USD 12,708 adjusted)[fn:IBM360].
-Sellers earned a lot from the devices.
-But, naturally, companies making all those investments wanted a nice return.
-This led to the creation of /time-sharing/.
-
-#+attr_shortcode: "ibm-360.jpg" "https://www.nbcnews.com/tech/gadgets/5-reasons-love-mad-mens-new-star-ibm-360-n101716"
-#+begin_img-c
-IBM 360 in an official photoshoot.
-#+end_img-c
-
-This concept seems natural now: multiple processes were able to share computer resources, so multiple applications could run at the same time.
-Applications could even run for different users.
-Ergo, time-sharing allowed for multi-user multitask processing.
-This is in stark contrast to batch-processing, where only a single program would be able to compute at any particular time.
-An example of such processing would be EDSAC, the first electronic computer[fn:root].
-I won't go into detail of time-sharing, but you can read more in "Time sharing in large computers", C. Strachey, 1959.
-But what is important here is how it was used.
-All computation happened on a single, large server.
-End users would use /computer terminals/ which were /multiplexed/ into that server, called a /mainframe/.
-What is multiplexing you ask?
-Simply said, it's a way to combine different signals into a shared medium.
-It was used extensively for land-line telephony, where all signals were transferred over shared wires.
-
-#+attr_shortcode: "edsac.jpg" "https://www.datacenterdynamics.com/en/analysis/rebuilding-edsac-the-first-real-computer/"
-#+begin_img-c
-EDSAC, the "first computer".
-#+end_img-c
+There's multitude of Operating Systems to choose from.
+You use something like Windows or MacOS and be perfectly happy with it.
+You can step up and use Linux, Haiku or even Amiga OS.
+So, why do I think a BSD system may be the best choice?
-**** Multics
+*** FOSS
-Let's jump to 1969.
+The most popular systems out there are propietery.
+This has the small downside of having to pay, but there's another one.
+Closed systems have tendency to limit the user.
+It's visible much more with MacOS than in Windows, but the user is always blocked from doing what the user wants to do.
+Are you following the product manager's ideal path?
+Is web browser everything you need to run?
+If so - getting something from Sillicon Valey may enough.
-/Multics (MULTiplexed Information and Computing)/ was an early time-sharing operating system developed by /MIT/, /General Electrics/ and /Bell Labs/.
-It pioneered many of innovations which are still widely used in the computing systems of today: hierarchical file system, redirection as interprocess communication, or the existence of a shell[fn:wiki], as well as memory pages, memory protection, or the ability for a single machine to use multiple CPUs and memory[fn:allen].
-It was however also huge, both in terms of memory usage (the resident kernel could occupy a huge part of memory living not enough for applications) and code size (it consisted of about 1,5k source modules)[fn:wiki].
-/Multics/ was experimental and therefore ambitious, complex - designed by trial and error.
-It was delivered late, early on had performance problems, and in 1969 /Bell Labs/ withrew from the project[fn:earlylin].
-
-#+attr_shortcode: "multics-login.png" "https://en.wikipedia.org/wiki/Multics#/media/File:Multics-Login.png"
-#+begin_img-c
-Multics login screen.
-#+end_img-c
-
-#+attr_shortcode: "thompson-ritchie.jpg" "https://computerhistory.org/blog/discovering-dennis-ritchies-lost-dissertation/"
-#+begin_img-c
-Ken Thompson and Denis Ritchie.
-#+end_img-c
-
-Ken Thompson, Dennis Ritchie, Douglas McIlroy, and Joe Ossanna, frustrated with their experiences with /Multics/ Operating System are starting to work on their own alternative.
-Their work will become one of the most beloved computer products of all time - /UNIX/.
-The team armed with previous experience set up to create simple, manageable OS that would still fulfill all the requirements /Multics/ was to fulfill.
+But a lot of us are hungry for more; we want to be in control instead of being controlled.
+Only be having the system be, not only Open Source, but also Free, our desires may be fullfilled.
-Currently, however, they have problems convincing /Bell Labs/ management to get them a new computer.
-This has not stopped them from designing the system on black blackboards and paper.
+FreeBSD gives the user a huge power to adjust itself to the needs and wims.
-[fn:IBM360] [[https://ibms360.co.uk/?p=902][IBM 360 Model 20 Rescue and Restoration: Machine Overview]]
-[fn:root] [[http://blog.wovenmemories.net/2023/10/30/First.Operating.System_Part.1.html][First Operating System -- Part One]]
-[fn:wiki] [[https://en.wikipedia.org/wiki/Multics][Multics --- {W}ikipedia{,} The Free Encyclopedia]]
-[fn:allen] [[https://www.youtube.com/watch?v=UYb6WqWBTE0][Mark Allen - Before Unix: An Early History of Timesharing Systems]]
-[fn:earlylin] [[https://www.youtube.com/watch?v=ECCr_KFl41E][The early days of Unix at Bell Labs - Brian Kernighan (LCA 2022 Online)]]
-*** DONE History of BSD part II: Unix
-CLOSED: [2024-03-16 Sat 21:00]
-:PROPERTIES:
-:EXPORT_FILE_NAME: 02_unix
-:EXPORT_HUGO_CUSTOM_FRONT_MATTER+: :abstract How Unix came to be?
-:EXPORT_HUGO_CUSTOM_FRONT_MATTER+: :shortname Part II: Unix
-:EXPORT_HUGO_MENU: :menu bsd-history :name "Unix"
-:EXPORT_HUGO_PAIRED_SHORTCODES: img-c
-:END:
+*** License
-**** Bell Labs
-Let's pause here and discuss a few things.
+One of the reasons is the legal term under which all BSDs are provided - the BSD license.
+It differs strongly from what GNU and others propose.
+While also being "freedom respecting", it does not limit anyone.
+Want to create a closed source fork of FreeBSD and stop giving anything back after few short years?
+Don't want to have your hands tied by GPL?
+Are you Apple?
+Because that's how MacOS X started.
-/Bell Labs/ was a research institute founded by no other, but the famous Alexander Graham Bell in 1876.
-It is known as one of the most innovative places ever conceived.
-It was the birthplace of radio astronomy, the transistor, the laser, the photovoltaic cell, the charge-coupled device (CCD), information theory, and the programming languages B, C, C++, S, SNOBOL, AWK, AMPL, and the UNIX operating system.
-The work completed there was awarded 10 times with a Nobel Prize[fn:wikibell].
+BSD licenses are amongst the most liberal one.
+The most popular, "[[https://opensource.org/license/bsd-3-clause][3-Clause BSD License]]" limits only the liability of the code provider.
-But it wasn't all pretty.
-AT&T (owner of the lab) was /the/ telephone company in the USA.
-It had the /de facto/ monopoly for most of the 20th century.
-This led to a consent decree with US Government under which AT&T was forbidden to branch out to other markets.
-This agreement happened in 1956 and will be very important for our story[fn:hiddenunix].
+Some say that BSD License are a problem as companies may take and never give up (like Sony did for PS4), but it's as close to the idea of "Free software" as it gets.
-Another cool tidbit: back then computer screens as we know them now were yet to be invented.
-There were ways for computer to present information on a screen, but it was not feasable to present information back to the user in real time.
-The monitor was a separate machine and an /assembly/ code to light up individual pixels would need to be sent every time to it.
-If the user wanted to see what the edited document looked like, the only way to achieve that was via a printer.
-Try to print a page every few lines - let alone every character.
-Even the bravest of the brave would not escape the anger of the finance department.
+*** No BigTech
-**** Getting a computer
+As a result of this, there is very little interference from Big Tech.
+While Linux is happily in bed with the likes of Microsoft or Google or who are able to steer the development, BSDs are still very much a niche product.
+Just look at list of sponsrs of [[https://www.linuxfoundation.org/about/members][Linux Foundation!]]
-After this short intermission, let's return to /UNIX/.
+In BSD-land we've got some big players, with Netflix being the most promiment one.
+But the cooperation is very much on partner terms.
-The popular history of /UNIX/ goes as follows:
-Ken Thompson finds a PDP-7 microcomputer, starts playing with it and suddenly realizes that he has created a new operating system.
+*** A designed OS
-What he actually wanted to do, was to play a damn game.
-A completely reasonable reason to revolutionize the industry if you ask me.
+But the biggest differential factor between BSDs and GNU/Linux is the way it is structured.
-Ken was a huge fan of /Space Travel/, but it was only available on mainframes.
-And since those costed an arm and a leg, end users were paying for time they used.
-A single game of /Space Travel/ could cost Ken USD 50-75[fn:uvlist].
-Luckily, he was able to find a discarded PDP-7 from another department[fn:hiddenunix].
+In Linux, all components are designed to work together but are completely separate.
+You've got the kernel, init systems, multimedia daemons, userland, bootloader, virtualization and contenerization mechanisms, or package managers.
+They are all separate project with their own goals operated by separate entities.
+This is why we've got different Linux Distrubitions instead of Operating System.
+Everyone can take the kernel, start adding components above it and a few minutes lated the distrowatch is even harder to keep up with.
-#+attr_shortcode: "space-travel.png" "https://www.uvlist.net/game-164857-Space+Travel"
-#+begin_img-c
-Space Travel
-#+end_img-c
+Each BSD on the other hand is designed as single environment.
+Each component is created and developed together.
+While this makes the landscape a bit boring, it also makes it extremely coharent.
+Things work together perfectly, because they are designed, coded, tested and released as one.
-What the PDP-7 was, was a refrigerator size 18bit monstrosity[fn:hiddenunix].
-It was at the time a 5-year-old and obsolete[fn:earlylin] leftover from an ended research into audio-psychology.
-No one cared what would happen to this particular machine.
-Have I mentioned just how stinky rich the /Bell Lab/ was?
-So, Ken started rewriting the game for that PDP-7 as /GECOS Space Travel/.
+*** Build-in technology
-Porting the game proved challenging and difficult to debug, so they developed a system for PDP-7 to make developing the game easier.
-This was how /PDP UNIX/ was born[fn:lcm].
-A guy wanted to play a god-damn game and now bankrupt in the process[fn:hiddenunix]
+To give just two examples here:
-Labs management was very happy with this turn of events as /UNIX/ was something to show after the /Multics/ fiasco.
-They allowed Ken to get himself a /PDP-11/ and port /UNIX/ to it.
-It was a cheaper machine compared to /PDP-7/, but it was also 16bit - which was a nice change.
-Officially, the new system would allow for document preparation for patent applications[fn:earlylin].
-The biggest benefit however was the popularity of this machine - over the next decades it could be seen everywhere across enterprise America.
-You can buy a working one from /eBay/ today.
-It won't be easy nor cheap, but definitely possible.
+1. OpenBSD comes with complete web stack built in.
+ We've got a firewall (best in class), reverse proxy and http server.
+ We've even got a TLS certificate manager.
+ And the security of each of those is as high as rest of the OS.
+ All things work together in perfect harmony, it is designed as such.
-#+attr_shortcode: "pdp-7.jpeg" "https://en.wikipedia.org/wiki/PDP-7#/media/File:Pdp7-oslo-2005.jpeg"
-#+begin_img-c
-PDP-7
-#+end_img-c
+2. FreeBSD comes with ZFS.
+ One thing this file system provides are efficent and bullet-proof snapshots.
+ The developers of FreeBSD used it to create the idea of boot environments - a snapshots of OS.
+ The user can easily boot from any of those in any moment.
+ Even the standard update process creates a new boot env, just in case something goes wrong.
-#+attr_shortcode: "thompson-ritchie-pdp11.jpg" "https://www.bell-labs.com/institute/blog/invention-unix/"
-#+begin_img-c
-Ken Thompson and Denis Ritchie working on the legendary PDP-11.
-#+end_img-c
+Such integration would be very hard to achieve without up-front design.
-**** Unix 1
+And the list goes on: Jails, Beehive, Vnet, Dtrace, Ports system, OpenSSHm Libre SSl.
+The crazy folks over at OpenBSD are even working on their own version control system called Game of Trees.
-So here we are, November 1971, and /UNIX 1/ for /PDP-11/ is released[fn:50]
+This has the added benefit of having it all in a single place.
+One needs to follow only a few repositories to be up to date and informed.
+Mind you, those are /gigantic/ repositories, but if you are smart enough[fn:src] - it's there.
-A year later Ken notes:
-#+begin_quote
+*** Stability
-[...]the number of UNIX installations has grown to 10, with
-more expected. None of these has exactly the same complement of
-hardware or software. Therefore, at any particular installation,
-it is quite possible that this manual will give inappropriate
-information. [...] Also, not all installations have the latest versions of all the software.''
+being there
--- Unix Programmers Manual, Second Edition. Thompson Ken, Ritchie Denis, 1972
-#+end_quote
-Note, that this is 10 mainframes across /Bell Labs/, so user count was significantly higher.
+*** Dedicated uses-cases
-It's also worth to talk about release cycle.
-UNIX was in constant development, and each installation would use current snapshot at the moment of installation.
-This is why Ken notes that each part of /UNIX/ could differ between installations.
-What is also important is that due to licensing of /UNIX/ (or rather lack of thereof), each installation would be accompanied by full source code.
-Administrators were able to modify the system.
-Crazy times.
+*** Documentation
-Still, in June 1972 the 2nd Edition of /UNIX/ was released and every 7–8 months a new release was out.
+*** Community and culture
-In November 1973, a 4th Edition was released, and it was the first one released to Universities.
-It made quite the buzz, and first user groups started forming under the /USENIX/ name[fn:hiddenunix].
-It's worth to mention that this version was rewritten in C, as previous versions which were created in Assembly
-This made it the first portable /UNIX/, as it could be recompiled to any compared, as long as it also had a C compiler[fn:earlylin].
-The system was presented by Ken and Denis during the /4th Symposium on Operating System Principles/ the same year,
-and a year later Ken and Dennis publish the first paper on /UNIX/ - "The UNIX Time-Sharing System" in the /Communications/ journal of ACM.
+*** History
-#+attr_shortcode: "unix-tech-journal.jpg" "https://leancrew.com/all-this/2011/10/dennis-ritchie-unix-and-clarity/"
-#+begin_img-c
-Bell System Technical Journal cover.
-#+end_img-c
+*** POSIX and widening perspective
+ccc
-The word was out and /UNIX/ became known outside of /Bell Labs/.
+*** OSes, not distributions
-In the next episode of History of BSD: the scariest creature of them all.
-Lawyers.
+ [fn:src] I am not; just barely licking C for now.
-[fn:wikibell] [[https://en.wikipedia.org/wiki/Bell_Labs][Bell Labs --- {W}ikipedia{,} The Free Encyclopedia]]
-[fn:hiddenunix] [[https://www.youtube.com/watch?v=xuzeagzqwrs][The hidden early history of unix the forgotten history of early unix]]
-[fn:earlylin] [[https://www.youtube.com/watch?v=ECCr_KFl41E][The early days of Unix at Bell Labs - Brian Kernighan (LCA 2022 Online)]]
-[fn:uvlist] [[https://www.uvlist.net/game-164857-Space+Travel][UVL]]
-[fn:50] The 50th anniversary of this event was very big for a small group of fans.
-[fn:lcm] [[https://livingcomputers.org/Blog/Restoring-UNIX-v0-on-a-PDP-7-A-look-behind-the-sce.aspx][Living Computer Museum]] has a real PDP-7 running /PDP Unix/ if want to chek it.
** DONE Why you shouldn't run a BSD on a PC :@bsd:
CLOSED: [2024-04-20 Sat 22:13]
@@ -265,6 +169,8 @@ CLOSED: [2024-04-20 Sat 22:13]
:EXPORT_FILE_NAME: why-not-bsd
:EXPORT_HUGO_CUSTOM_FRONT_MATTER+: :abstract Reasons why BSD may not be the best OS for you
:EXPORT_HUGO_PAIRED_SHORTCODES: img-r
+:EXPORT_HUGO_CUSTOM_FRONT_MATTER+: :menu_item_override "why you shouldn't"
+:EXPORT_HUGO_CUSTOM_FRONT_MATTER+: :menu_item_override_end_li true
:END:
Changing GNU/Linux distribution can be done on a whim, as underneath all of that you've got the same basic operating systems.
@@ -1568,3 +1474,224 @@ prosodyctl check connectivity
- ios
*** Modern XMPP
** TODO BSD and Linux
+
+ :@bsd:
+:PROPERTIES:
+:EXPORT_HUGO_MENU: :menu bsd
+:EXPORT_HUGO_CUSTOM_FRONT_MATTER: :primary_menu bsd
+:END:
+* Unix history :@bsd:
+:PROPERTIES:
+:EXPORT_HUGO_CUSTOM_FRONT_MATTER: :primary_menu bsd-history
+:EXPORT_HUGO_SECTION: bsd/history
+:EXPORT_HUGO_MENU: :menu bsd-history
+:END:
+
+** DONE History of BSD part I: Multics
+CLOSED: [2024-03-09 Sat 21:03]
+:PROPERTIES:
+:EXPORT_FILE_NAME: 01_multics
+:EXPORT_HUGO_CUSTOM_FRONT_MATTER+: :abstract BSD history starts with Multics
+:EXPORT_HUGO_CUSTOM_FRONT_MATTER+: :shortname Part I: Multics
+:EXPORT_HUGO_MENU: :menu bsd-history :name "Multics"
+:EXPORT_HUGO_PAIRED_SHORTCODES: img-c
+:END:
+
+**** Origins of time-sharing
+
+Let's start our journey back when dinosaurs roamed the earth, engineers wore ties, and Barbie was first gaining popularity - the 60s.
+Nowadays, we have grown accustom to companies selling devices at lower profit margins - with most profit coming from software subscriptions.
+But 70 years ago it was the complete opposite.
+Companies bought expensive computers, huge machines, and what was running on them was of lesser value.
+And I really mean /expensive/.
+An IBM System/360 Model 20, presented in 1964, could have been bought starting from USD 62,710 (USD 622,626 adjusted for inflation) or rented for USD 1280 (USD 12,708 adjusted)[fn:IBM360].
+Sellers earned a lot from the devices.
+But, naturally, companies making all those investments wanted a nice return.
+This led to the creation of /time-sharing/.
+
+#+attr_shortcode: "ibm-360.jpg" "https://www.nbcnews.com/tech/gadgets/5-reasons-love-mad-mens-new-star-ibm-360-n101716"
+#+begin_img-c
+IBM 360 in an official photoshoot.
+#+end_img-c
+
+This concept seems natural now: multiple processes were able to share computer resources, so multiple applications could run at the same time.
+Applications could even run for different users.
+Ergo, time-sharing allowed for multi-user multitask processing.
+This is in stark contrast to batch-processing, where only a single program would be able to compute at any particular time.
+An example of such processing would be EDSAC, the first electronic computer[fn:root].
+I won't go into detail of time-sharing, but you can read more in "Time sharing in large computers", C. Strachey, 1959.
+But what is important here is how it was used.
+All computation happened on a single, large server.
+End users would use /computer terminals/ which were /multiplexed/ into that server, called a /mainframe/.
+What is multiplexing you ask?
+Simply said, it's a way to combine different signals into a shared medium.
+It was used extensively for land-line telephony, where all signals were transferred over shared wires.
+
+#+attr_shortcode: "edsac.jpg" "https://www.datacenterdynamics.com/en/analysis/rebuilding-edsac-the-first-real-computer/"
+#+begin_img-c
+EDSAC, the "first computer".
+#+end_img-c
+
+**** Multics
+
+Let's jump to 1969.
+
+/Multics (MULTiplexed Information and Computing)/ was an early time-sharing operating system developed by /MIT/, /General Electrics/ and /Bell Labs/.
+It pioneered many of innovations which are still widely used in the computing systems of today: hierarchical file system, redirection as interprocess communication, or the existence of a shell[fn:wiki], as well as memory pages, memory protection, or the ability for a single machine to use multiple CPUs and memory[fn:allen].
+It was however also huge, both in terms of memory usage (the resident kernel could occupy a huge part of memory living not enough for applications) and code size (it consisted of about 1,5k source modules)[fn:wiki].
+/Multics/ was experimental and therefore ambitious, complex - designed by trial and error.
+It was delivered late, early on had performance problems, and in 1969 /Bell Labs/ withrew from the project[fn:earlylin].
+
+#+attr_shortcode: "multics-login.png" "https://en.wikipedia.org/wiki/Multics#/media/File:Multics-Login.png"
+#+begin_img-c
+Multics login screen.
+#+end_img-c
+
+#+attr_shortcode: "thompson-ritchie.jpg" "https://computerhistory.org/blog/discovering-dennis-ritchies-lost-dissertation/"
+#+begin_img-c
+Ken Thompson and Denis Ritchie.
+#+end_img-c
+
+Ken Thompson, Dennis Ritchie, Douglas McIlroy, and Joe Ossanna, frustrated with their experiences with /Multics/ Operating System are starting to work on their own alternative.
+Their work will become one of the most beloved computer products of all time - /UNIX/.
+The team armed with previous experience set up to create simple, manageable OS that would still fulfill all the requirements /Multics/ was to fulfill.
+
+Currently, however, they have problems convincing /Bell Labs/ management to get them a new computer.
+This has not stopped them from designing the system on black blackboards and paper.
+
+[fn:IBM360] [[https://ibms360.co.uk/?p=902][IBM 360 Model 20 Rescue and Restoration: Machine Overview]]
+[fn:root] [[http://blog.wovenmemories.net/2023/10/30/First.Operating.System_Part.1.html][First Operating System -- Part One]]
+[fn:wiki] [[https://en.wikipedia.org/wiki/Multics][Multics --- {W}ikipedia{,} The Free Encyclopedia]]
+[fn:allen] [[https://www.youtube.com/watch?v=UYb6WqWBTE0][Mark Allen - Before Unix: An Early History of Timesharing Systems]]
+[fn:earlylin] [[https://www.youtube.com/watch?v=ECCr_KFl41E][The early days of Unix at Bell Labs - Brian Kernighan (LCA 2022 Online)]]
+** DONE History of BSD part II: Unix
+CLOSED: [2024-03-16 Sat 21:00]
+:PROPERTIES:
+:EXPORT_FILE_NAME: 02_unix
+:EXPORT_HUGO_CUSTOM_FRONT_MATTER+: :abstract How Unix came to be?
+:EXPORT_HUGO_CUSTOM_FRONT_MATTER+: :shortname Part II: Unix
+:EXPORT_HUGO_MENU: :menu bsd-history :name "Unix"
+:EXPORT_HUGO_PAIRED_SHORTCODES: img-c
+:END:
+
+**** Bell Labs
+Let's pause here and discuss a few things.
+
+/Bell Labs/ was a research institute founded by no other, but the famous Alexander Graham Bell in 1876.
+It is known as one of the most innovative places ever conceived.
+It was the birthplace of radio astronomy, the transistor, the laser, the photovoltaic cell, the charge-coupled device (CCD), information theory, and the programming languages B, C, C++, S, SNOBOL, AWK, AMPL, and the UNIX operating system.
+The work completed there was awarded 10 times with a Nobel Prize[fn:wikibell].
+
+But it wasn't all pretty.
+AT&T (owner of the lab) was /the/ telephone company in the USA.
+It had the /de facto/ monopoly for most of the 20th century.
+This led to a consent decree with US Government under which AT&T was forbidden to branch out to other markets.
+This agreement happened in 1956 and will be very important for our story[fn:hiddenunix].
+
+Another cool tidbit: back then computer screens as we know them now were yet to be invented.
+There were ways for computer to present information on a screen, but it was not feasable to present information back to the user in real time.
+The monitor was a separate machine and an /assembly/ code to light up individual pixels would need to be sent every time to it.
+If the user wanted to see what the edited document looked like, the only way to achieve that was via a printer.
+Try to print a page every few lines - let alone every character.
+Even the bravest of the brave would not escape the anger of the finance department.
+
+**** Getting a computer
+
+After this short intermission, let's return to /UNIX/.
+
+The popular history of /UNIX/ goes as follows:
+Ken Thompson finds a PDP-7 microcomputer, starts playing with it and suddenly realizes that he has created a new operating system.
+
+What he actually wanted to do, was to play a damn game.
+A completely reasonable reason to revolutionize the industry if you ask me.
+
+Ken was a huge fan of /Space Travel/, but it was only available on mainframes.
+And since those costed an arm and a leg, end users were paying for time they used.
+A single game of /Space Travel/ could cost Ken USD 50-75[fn:uvlist].
+Luckily, he was able to find a discarded PDP-7 from another department[fn:hiddenunix].
+
+#+attr_shortcode: "space-travel.png" "https://www.uvlist.net/game-164857-Space+Travel"
+#+begin_img-c
+Space Travel
+#+end_img-c
+
+What the PDP-7 was, was a refrigerator size 18bit monstrosity[fn:hiddenunix].
+It was at the time a 5-year-old and obsolete[fn:earlylin] leftover from an ended research into audio-psychology.
+No one cared what would happen to this particular machine.
+Have I mentioned just how stinky rich the /Bell Lab/ was?
+So, Ken started rewriting the game for that PDP-7 as /GECOS Space Travel/.
+
+Porting the game proved challenging and difficult to debug, so they developed a system for PDP-7 to make developing the game easier.
+This was how /PDP UNIX/ was born[fn:lcm].
+A guy wanted to play a god-damn game and now bankrupt in the process[fn:hiddenunix]
+
+Labs management was very happy with this turn of events as /UNIX/ was something to show after the /Multics/ fiasco.
+They allowed Ken to get himself a /PDP-11/ and port /UNIX/ to it.
+It was a cheaper machine compared to /PDP-7/, but it was also 16bit - which was a nice change.
+Officially, the new system would allow for document preparation for patent applications[fn:earlylin].
+The biggest benefit however was the popularity of this machine - over the next decades it could be seen everywhere across enterprise America.
+You can buy a working one from /eBay/ today.
+It won't be easy nor cheap, but definitely possible.
+
+#+attr_shortcode: "pdp-7.jpeg" "https://en.wikipedia.org/wiki/PDP-7#/media/File:Pdp7-oslo-2005.jpeg"
+#+begin_img-c
+PDP-7
+#+end_img-c
+
+#+attr_shortcode: "thompson-ritchie-pdp11.jpg" "https://www.bell-labs.com/institute/blog/invention-unix/"
+#+begin_img-c
+Ken Thompson and Denis Ritchie working on the legendary PDP-11.
+#+end_img-c
+
+**** Unix 1
+
+So here we are, November 1971, and /UNIX 1/ for /PDP-11/ is released[fn:50]
+
+A year later Ken notes:
+#+begin_quote
+
+[...]the number of UNIX installations has grown to 10, with
+more expected. None of these has exactly the same complement of
+hardware or software. Therefore, at any particular installation,
+it is quite possible that this manual will give inappropriate
+information. [...] Also, not all installations have the latest versions of all the software.''
+
+-- Unix Programmers Manual, Second Edition. Thompson Ken, Ritchie Denis, 1972
+#+end_quote
+
+Note, that this is 10 mainframes across /Bell Labs/, so user count was significantly higher.
+
+It's also worth to talk about release cycle.
+UNIX was in constant development, and each installation would use current snapshot at the moment of installation.
+This is why Ken notes that each part of /UNIX/ could differ between installations.
+What is also important is that due to licensing of /UNIX/ (or rather lack of thereof), each installation would be accompanied by full source code.
+Administrators were able to modify the system.
+Crazy times.
+
+Still, in June 1972 the 2nd Edition of /UNIX/ was released and every 7–8 months a new release was out.
+
+In November 1973, a 4th Edition was released, and it was the first one released to Universities.
+It made quite the buzz, and first user groups started forming under the /USENIX/ name[fn:hiddenunix].
+It's worth to mention that this version was rewritten in C, as previous versions which were created in Assembly
+This made it the first portable /UNIX/, as it could be recompiled to any compared, as long as it also had a C compiler[fn:earlylin].
+
+The system was presented by Ken and Denis during the /4th Symposium on Operating System Principles/ the same year,
+and a year later Ken and Dennis publish the first paper on /UNIX/ - "The UNIX Time-Sharing System" in the /Communications/ journal of ACM.
+
+#+attr_shortcode: "unix-tech-journal.jpg" "https://leancrew.com/all-this/2011/10/dennis-ritchie-unix-and-clarity/"
+#+begin_img-c
+Bell System Technical Journal cover.
+#+end_img-c
+
+The word was out and /UNIX/ became known outside of /Bell Labs/.
+
+In the next episode of History of BSD: the scariest creature of them all.
+Lawyers.
+
+[fn:wikibell] [[https://en.wikipedia.org/wiki/Bell_Labs][Bell Labs --- {W}ikipedia{,} The Free Encyclopedia]]
+[fn:hiddenunix] [[https://www.youtube.com/watch?v=xuzeagzqwrs][The hidden early history of unix the forgotten history of early unix]]
+[fn:earlylin] [[https://www.youtube.com/watch?v=ECCr_KFl41E][The early days of Unix at Bell Labs - Brian Kernighan (LCA 2022 Online)]]
+[fn:uvlist] [[https://www.uvlist.net/game-164857-Space+Travel][UVL]]
+[fn:50] The 50th anniversary of this event was very big for a small group of fans.
+[fn:lcm] [[https://livingcomputers.org/Blog/Restoring-UNIX-v0-on-a-PDP-7-A-look-behind-the-sce.aspx][Living Computer Museum]] has a real PDP-7 running /PDP Unix/ if want to chek it.
+
diff --git a/content/bsd/history/01_multics.md b/content/bsd/history/01_multics.md
index 7e3b5eb6..ff10f17c 100644
--- a/content/bsd/history/01_multics.md
+++ b/content/bsd/history/01_multics.md
@@ -4,13 +4,13 @@ author = ["Michał Sapka"]
date = 2024-03-09T21:03:00+01:00
categories = ["bsd"]
draft = false
-weight = 3002
+weight = 2001
primary_menu = "bsd-history"
abstract = "BSD history starts with Multics"
shortname = "Part I: Multics"
[menu]
[menu.bsd-history]
- weight = 3002
+ weight = 2001
identifier = "history-of-bsd-part-i-multics"
name = "Multics"
+++
diff --git a/content/bsd/history/02_unix.md b/content/bsd/history/02_unix.md
index cbf6ef5f..f8243fd6 100644
--- a/content/bsd/history/02_unix.md
+++ b/content/bsd/history/02_unix.md
@@ -4,13 +4,13 @@ author = ["Michał Sapka"]
date = 2024-03-16T21:00:00+01:00
categories = ["bsd"]
draft = false
-weight = 3003
+weight = 2002
primary_menu = "bsd-history"
abstract = "How Unix came to be?"
shortname = "Part II: Unix"
[menu]
[menu.bsd-history]
- weight = 3003
+ weight = 2002
identifier = "history-of-bsd-part-ii-unix"
name = "Unix"
+++
diff --git a/content/bsd/history/_index.md b/content/bsd/history/_index.md
index 8b3b89d7..35050c45 100644
--- a/content/bsd/history/_index.md
+++ b/content/bsd/history/_index.md
@@ -2,15 +2,15 @@
title = "History of BSD and Unix"
author = ["Michał Sapka"]
date = 2024-04-08T09:37:00+02:00
-categories = ["bsd"]
draft = false
-weight = 3001
+weight = 2001
primary_menu = "bsd"
abstract = "the long and turbolent history"
[menu]
[menu.bsd]
- weight = 3001
+ weight = 2001
identifier = "history-of-bsd-and-unix"
+ post = " from Multics to OpenBSD"
+++
Does computer history have any real appliance?
diff --git a/content/bsd/why-bsd.md b/content/bsd/why-bsd.md
new file mode 100644
index 00000000..66714cba
--- /dev/null
+++ b/content/bsd/why-bsd.md
@@ -0,0 +1,133 @@
++++
+title = "Why you should run a BSD on a PC"
+author = ["Michał Sapka"]
+date = 2024-04-27T22:29:00+02:00
+categories = ["bsd"]
+draft = false
+weight = 2002
+primary_menu = "bsd"
+abstract = "Reasons why BSD may be the best OS for you"
+menu_item_override = "Why you should run BSD on a PC"
+menu_item_override_start_li = true
+[menu]
+ [menu.bsd]
+ weight = 2002
+ identifier = "why-you-should-run-a-bsd-on-a-pc"
+ post = " or perhaps "
++++
+
+There's multitude of Operating Systems to choose from.
+You use something like Windows or MacOS and be perfectly happy with it.
+You can step up and use Linux, Haiku or even Amiga OS.
+So, why do I think a BSD system may be the best choice?
+
+
+## FOSS {#foss}
+
+The most popular systems out there are propietery.
+This has the small downside of having to pay, but there's another one.
+Closed systems have tendency to limit the user.
+It's visible much more with MacOS than in Windows, but the user is always blocked from doing what the user wants to do.
+Are you following the product manager's ideal path?
+Is web browser everything you need to run?
+If so - getting something from Sillicon Valey may enough.
+
+But a lot of us are hungry for more; we want to be in control instead of being controlled.
+Only be having the system be, not only Open Source, but also Free, our desires may be fullfilled.
+
+FreeBSD gives the user a huge power to adjust itself to the needs and wims.
+
+
+## License {#license}
+
+One of the reasons is the legal term under which all BSDs are provided - the BSD license.
+It differs strongly from what GNU and others propose.
+While also being "freedom respecting", it does not limit anyone.
+Want to create a closed source fork of FreeBSD and stop giving anything back after few short years?
+Don't want to have your hands tied by GPL?
+Are you Apple?
+Because that's how MacOS X started.
+
+BSD licenses are amongst the most liberal one.
+The most popular, "[3-Clause BSD License](https://opensource.org/license/bsd-3-clause)" limits only the liability of the code provider.
+
+Some say that BSD License are a problem as companies may take and never give up (like Sony did for PS4), but it's as close to the idea of "Free software" as it gets.
+
+
+## No BigTech {#no-bigtech}
+
+As a result of this, there is very little interference from Big Tech.
+While Linux is happily in bed with the likes of Microsoft or Google or who are able to steer the development, BSDs are still very much a niche product.
+Just look at list of sponsrs of [Linux Foundation!](https://www.linuxfoundation.org/about/members)
+
+In BSD-land we've got some big players, with Netflix being the most promiment one.
+But the cooperation is very much on partner terms.
+
+
+## A designed OS {#a-designed-os}
+
+But the biggest differential factor between BSDs and GNU/Linux is the way it is structured.
+
+In Linux, all components are designed to work together but are completely separate.
+You've got the kernel, init systems, multimedia daemons, userland, bootloader, virtualization and contenerization mechanisms, or package managers.
+They are all separate project with their own goals operated by separate entities.
+This is why we've got different Linux Distrubitions instead of Operating System.
+Everyone can take the kernel, start adding components above it and a few minutes lated the distrowatch is even harder to keep up with.
+
+Each BSD on the other hand is designed as single environment.
+Each component is created and developed together.
+While this makes the landscape a bit boring, it also makes it extremely coharent.
+Things work together perfectly, because they are designed, coded, tested and released as one.
+
+
+## Build-in technology {#build-in-technology}
+
+To give just two examples here:
+
+1. OpenBSD comes with complete web stack built in.
+ We've got a firewall (best in class), reverse proxy and http server.
+ We've even got a TLS certificate manager.
+ And the security of each of those is as high as rest of the OS.
+ All things work together in perfect harmony, it is designed as such.
+
+2. FreeBSD comes with ZFS.
+ One thing this file system provides are efficent and bullet-proof snapshots.
+ The developers of FreeBSD used it to create the idea of boot environments - a snapshots of OS.
+ The user can easily boot from any of those in any moment.
+ Even the standard update process creates a new boot env, just in case something goes wrong.
+
+Such integration would be very hard to achieve without up-front design.
+
+And the list goes on: Jails, Beehive, Vnet, Dtrace, Ports system, OpenSSHm Libre SSl.
+The crazy folks over at OpenBSD are even working on their own version control system called Game of Trees.
+
+This has the added benefit of having it all in a single place.
+One needs to follow only a few repositories to be up to date and informed.
+Mind you, those are _gigantic_ repositories, but if you are smart enough[^fn:1] - it's there.
+
+
+## Stability {#stability}
+
+being there
+
+
+## Dedicated uses-cases {#dedicated-uses-cases}
+
+
+## Documentation {#documentation}
+
+
+## Community and culture {#community-and-culture}
+
+
+## History {#history}
+
+
+## POSIX and widening perspective {#posix-and-widening-perspective}
+
+ccc
+
+
+## OSes, not distributions {#oses-not-distributions}
+
+[^fn:1]: I am not; just barely licking C for now.
diff --git a/content/bsd/why-not-bsd.md b/content/bsd/why-not-bsd.md
index 8e1be999..c600bdd1 100644
--- a/content/bsd/why-not-bsd.md
+++ b/content/bsd/why-not-bsd.md
@@ -4,12 +4,14 @@ author = ["Michał Sapka"]
date = 2024-04-20T22:13:00+02:00
categories = ["bsd"]
draft = false
-weight = 2001
+weight = 2003
primary_menu = "bsd"
abstract = "Reasons why BSD may not be the best OS for you"
+menu_item_override = "why you shouldn't"
+menu_item_override_end_li = true
[menu]
[menu.bsd]
- weight = 2001
+ weight = 2003
identifier = "why-you-shouldn-t-run-a-bsd-on-a-pc"
+++
diff --git a/layouts/partials/header/header.html b/layouts/partials/header/header.html
index 05e9290c..ec4adede 100644
--- a/layouts/partials/header/header.html
+++ b/layouts/partials/header/header.html
@@ -1,5 +1,5 @@
<header>
- <div class="logo">
+ <a href="/" alt="return to homemage" class="logo">
{{ if in .Page.Params.categories "bsd" }}
{{ $logo := resources.Get "logos/logo-beastie-white.svg"}}
<img src="{{$logo.Permalink}}" class="beastie" alt="FreeBSD">
@@ -20,7 +20,7 @@
<img src="{{$logo.Permalink}}" class="emacslogo" alt="Emacs">
{{ end }}
</a>
- </div>
+ </a>
<div class="name">
<nav>
diff --git a/layouts/partials/menu.html b/layouts/partials/menu.html
index 28421acf..b27d498d 100644
--- a/layouts/partials/menu.html
+++ b/layouts/partials/menu.html
@@ -12,16 +12,8 @@
{{- define "partials/inline/menu/walk.html" }}
{{- $page := .page }}
{{- range .menuEntries }}
-
- {{- if .Params.nonpage }}
- <li>{{.Name }} {{ .Post }}
- {{- else if .Params.placeholder }}
- <li><span class="placeholder">{{.Name }} {{ .Post }}</span>
- {{- else}}
- <li><b><a href="{{ .URL }}">{{ .Name }}</a></b> {{ .Post }}
- {{- partial "inline/menu/new-or-up.html" (dict "page" ($page.GetPage .URL)) }}
- {{- end}}
-
+ {{- partial "menu/item.html" (dict "page" $page "item" .) }}
+
{{- if .Params.inlineChildren}}
{{- with .Children }}
- {{- partial "inline/menu/inline.html" (dict "page" $page "menuEntries" .) }}
@@ -31,7 +23,6 @@
{{- with .Children }}
<ul>{{- partial "inline/menu/walk.html" (dict "page" $page "menuEntries" .) }}</ul>
{{- end }}
- </li>
{{- end}}
{{- end }}
{{- end }}
@@ -39,18 +30,7 @@
{{- define "partials/inline/menu/inline.html" }}
{{- $page := .page }}
{{- range .menuEntries }}
- <a href="{{ .URL }}"> {{ .Name }}</a>{{- partial "inline/menu/new-or-up.html" (dict "page" ($page.GetPage .URL)) }}
+ <a href="{{ .URL }}"> {{ .Name }}</a>{{- partial "menu/new-or-up.html" (dict "page" ($page.GetPage .URL)) }}
{{- end }}
{{- end }}
-{{- define "partials/inline/menu/new-or-up.html" }}
-
-{{- if lt (div (now.Sub .page.PublishDate).Hours 24) 15}}
-<span class="new">(new)</span>
-{{- else}}
- {{if lt (div (now.Sub .page.Lastmod).Hours 24) 10 }}
-<span class="new">(updated)</span>
- {{- end}}
-{{- end}}
-
-{{- end }}
diff --git a/layouts/partials/menu/item.html b/layouts/partials/menu/item.html
new file mode 100644
index 00000000..599f2db9
--- /dev/null
+++ b/layouts/partials/menu/item.html
@@ -0,0 +1,31 @@
+{{- $page := .page }}
+{{- $item := .item }}
+{{- $pageItem := $page.GetPage $item.URL }}
+
+{{- if $pageItem.Params.menu_item_override }}
+
+ {{- if $pageItem.Params.menu_item_override_start_li }}
+ <li>
+ {{- end}}
+
+ {{$item.Pre}}<b><a href="{{ $item.URL }}">{{ $pageItem.Params.menu_item_override }}</a></b>{{- partial "menu/new-or-up.html" (dict "page" $pageItem) }}{{$item.Post}}
+ {{- if $pageItem.Params.menu_item_override_end_li }}
+ </li>
+ {{- end}}
+
+{{- else}}
+
+<li>
+ {{- if $item.Params.nonpage }}
+ {{$item.Name }}{{ $item.Post }}
+ {{- else if $item.Params.placeholder }}
+ <span class="placeholder">{{$item.Name }}{{ $item.Post }}</span>
+ {{- else}}
+ <b><a href="{{ $item.URL }}">{{ $item.Name }}</a></b>
+ {{- partial "menu/new-or-up.html" (dict "page" $pageItem) }}
+ {{ $item.Post }}
+ {{- end}}
+
+</li>
+
+{{- end}}
diff --git a/layouts/partials/menu/new-or-up.html b/layouts/partials/menu/new-or-up.html
new file mode 100644
index 00000000..9eb9a9f9
--- /dev/null
+++ b/layouts/partials/menu/new-or-up.html
@@ -0,0 +1,9 @@
+{{- if lt (div (now.Sub .page.PublishDate).Hours 24) 15}}
+ <span class="new">(new)</span>
+{{- else}}
+
+ {{if lt (div (now.Sub .page.Lastmod).Hours 24) 10 }}
+ <span class="new">(updated)</span>
+ {{- end}}
+
+{{- end}}