1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
|
#+TITLE: Unix history
#+AUTHOR: Michał Sapka
#+URL: https://michal.sapka.me/unix-history/
#+STARTUP: show2levels indent logdone
#+HUGO_BASE_DIR: ~/ghq/vcs.sapka.me/michal-sapka-me/
#+HUGO_WEIGHT: auto
#+HUGO_SECTION: unix-history
* DONE Unix history :@bsd:
CLOSED: [2024-03-09 Sat 21:03]
:PROPERTIES:
:EXPORT_FILE_NAME: _index
:EXPORT_HUGO_PAIRED_SHORTCODES: img-c
:EXPORT_HUGO_CUSTOM_FRONT_MATTER: :primary_menu bsd
:EXPORT_HUGO_CUSTOM_FRONT_MATTER+: :aliases '(/bsd/history//)
:EXPORT_HUGO_MENU: :menu bsd
:EXPORT_HUGO_CUSTOM_FRONT_MATTER: :primary_menu "unix-history"
:EXPORT_HUGO_PAIRED_SHORTCODES: img-r menu menu-info
:END:
To say that the history of Unix is long and convoluted would be a huge understatement. It started i's life as a gaming OS dressed as typesetting one in a forgotten alley in an research center, but soon became the most important idea in modern computing history. No other OS had such broad impact on how we work with computers. And despite that, it's mostly a forgotten name. It lives in it's ideas and licenses, but very rarely do we think about running Unix.
This site is a fanpage, and a love letter to computer history. To the brilliant minds and sneazy lawers. To the original, the followers, and imitators.
** Table of content
#+attr_shortcode: "unix-history"
#+begin_menu
Dune
#+end_menu
* DONE History of Unix part I: Multics :@unix_history:
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_CUSTOM_FRONT_MATTER+: :link part-ii-multics
:EXPORT_HUGO_CUSTOM_FRONT_MATTER+: :aliases '(/bsd/history/01_multics/)
:EXPORT_HUGO_MENU: :menu unix-history :name "1. Multics"
:EXPORT_HUGO_PAIRED_SHORTCODES: img-c
:EXPORT_HUGO_CUSTOM_FRONT_MATTER: :primary_menu "unix-history"
: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.
* DONE History of Unix part II: Unix :@unix_history:
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_CUSTOM_FRONT_MATTER+: :link part-ii-unix
:EXPORT_HUGO_MENU: :menu unix-history :name "2. Unix"
:EXPORT_HUGO_PAIRED_SHORTCODES: img-c
:EXPORT_HUGO_CUSTOM_FRONT_MATTER+: :aliases '(/bsd/history/02_unix/)
:EXPORT_HUGO_CUSTOM_FRONT_MATTER: :primary_menu "unix-history"
: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.
[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 Unix part III: Unix Wars :@unix_history:
CLOSED: [2024-05-29 Wed 21:50]
:PROPERTIES:
:EXPORT_FILE_NAME: 03_unix_wars
:EXPORT_HUGO_CUSTOM_FRONT_MATTER+: :abstract How Unix came to be?
:EXPORT_HUGO_CUSTOM_FRONT_MATTER+: :shortname Part III: Unix Wars
:EXPORT_HUGO_MENU: :menu unix-history :name "3. Unix Wars"
:EXPORT_HUGO_PAIRED_SHORTCODES: img-c
:EXPORT_HUGO_CUSTOM_FRONT_MATTER: :primary_menu "unix-history"
:END:
# This resulted in a very peticular situation.
Different organizations got into possesion of a /great/ operating system with which they were able to do whatever they pleased.
The original creators, AT&T were unable to sell the software.
Of course, they wanted to monetize on this opportunitty.
This chapter of history is convolutted, so hopefully I won't make any significant errors here.
Most of this history would be lost to time, if it it wasn't for dedication of dedicated fans.
Remember, I try to link sources so please go take a visit to /their/ sites and talks.
But please, go and see Warner Hosh's [[https://www.youtube.com/watch?v=XuzeagzQwRs][talk]] on the early history of UNIX.
It's a gold mine and guiding light allowing me to write the following chapter.
** Other Bell Unixes
But the first forks (separaterly developed versions of /Unix/) came from Bell[fn:hiddenunix].
https://youtu.be/XuzeagzQwRs?si=VJjyR1A_ofZAoguI&t=1610
AT&T was, as we remember, a telphone company.
Lot of wires comming into centralized spaces, called /switches/.
The first known fork of /Unix/ was intended to automate switching of connections, therefore the very long name - /New Jersey Bell Switich Control Center System (/NJ Bell SCCS).
This version of /Unix/ is the earliest known usage of the OS family outside of Bell Labs.
It was released in 1971 as a fork of 1st or 2nd edition of /Unix/ and was the first known /Unix/ to support interprocess communication and file locking.
Those advencements were not backported to mainline /Unix/ until /System V/[fn:cbwiki],[fn:hiddenunix].
Soon after it evolved into Columbus Linux (/CB-Unix/), as the /SCCS Unix/ was developed by Bell Division 59473 in Columbus, Ohio.
#+attr_shortcode: "cb-unix-manuals.jpg" "https://en.wikipedia.org/wiki/CB_UNIX#/media/File:CB_Unix_Manuals.jpg"
#+begin_img-c
Programmers Manuals for CB Unix
#+end_img-c
In a completely different part of Bell Labs another project was starting to use /Unix/.
/Mert/ (Multi-Environment Real-Time) was a fork for use in embedded minicomputers, like PDP-11s[fn:mertwiki].
Yes, virtualization is not a new idea - it dates back to the 60s where is was developed by IBM.
And so in 1973 /Unix V4/ was ported to run as a supervisor.
It was the first time /Unix/ was run in a virtualized environment[fn:hiddenunix],[fn:mertwiki].
Thus system evolved into /Unix/RT/ and then /DMERT/
Yet another version was /PWB/Unix/ which was designed to be used to create software for batch processingy.
This was how processing was done back then - you created your program, submitted it to a mainframe, but with the use of /Unix/ no longer one needed to provide a deck of cards to a operator.
As a result, /PWB/ provided an early version of Source Control System.
To make work easier, this was the first version to include a /shell/ - /pwb shell/.
Other tools we know and love today that originate in /PWB/ are awk, sed, grep, or make[fn:hiddenunix].
Ergo, this was one of the OSes made for work, not for research.
This OS was released in 1977 but Evan Ivie and Rudd Canaday started working on it in 1973[fn:pbwiki].
In the same year, 1973, Bell funds a small group to support the use of /Unix/ across the lab - the /UNIX Support Group/ or /USG/ for short[fn:gnukiesusg].
Their version of /Unix/ was called /Unix/TS/ and was based on /UNIX v4/.
It was later merged with /PWB/ and /32V/ to become /Unix/TS 3.0/ known also as /System III/.
After another merge, this time with CB-Unix and it became /Unix/TS 4.0/, which however was never released.
The next version after that, /Unix-TS 5.0/, became the /System V/.[fn:hiddenunix],[fn:gnukiesusg].
We're not done yet.
/UNIX/ has seen it's share of history and we're still in the 70s.
1975 saw the release of MUNUX, most likely as a fork of /UNIX V5/[fn:hiddenunix].
It was a modification of monoprocessing system, UNIX, to multiprocessing utylizing two PDP 11/50[fn:munix].
Yes, multi processor processing was reserched in the 70s.
/UNIX V6/ saw the addition of BBN TCP/IP Stack in 1977.
This is worth mentioning, as before that Bell labs pretended that packets are to be ignored, as networking is to be done using circut switching.
AT&T was a /telephone/ company after all[fn:hiddenunix].
/V6/ from 1975 introduced yet another feature - commercial license.
We will get back to that, but it is what sounds like: AT&T is earning money from Unix.
** Unix from other Universities
/AUSAM/, the /Australian Unix Share Accounting Method/ was the first community maintained fork of Unix based on the Sixth Edition[fn:hiddenunix].
The work conducted at Universities of Sydney and New South Wales focused on allowing the system to run with huge number of users[fn:ausantuhs].
The changes returned to /Unix V7/, but /AUSAM/ was never upgraded to a full 7th ed[fn:hiddenunix]
https://youtu.be/XuzeagzQwRs?si=ZXhDIsNgliZpfml3
- AUSAM
- University of Illinois NCP Stack
- Spider Cell Network
- BSD
[fn:hiddenunix] [[https://www.youtube.com/watch?v=xuzeagzqwrs][The hidden early history of unix the forgotten history of early unix]]
[fn:cbwiki] https://en.wikipedia.org/wiki/CB_UNIX
[fn:mertwiki] https://en.wikipedia.org/wiki/Multi-Environment_Real-Time
[fn:pbwiki] https://en.wikipedia.org/wiki/PWB/UNIX
[fn:gnukiesusg] https://gunkies.org/wiki/UNIX_Support_Group
[fn:munix] https://core.ac.uk/download/pdf/36714194.pdf
[fn:ausantuhs] https://www.tuhs.org/cgi-bin/utree.pl?file=AUSAM
https://minnie.tuhs.org/Seminars/AUUG96/pdppaper.html
https://www.tuhs.org/cgi-bin/utree.pl
|