[TUHS] On the origins of Linux - "an academic question"

Theodore Y. Ts'o tytso at mit.edu
Sat Jan 18 13:50:51 AEST 2020


On Fri, Jan 17, 2020 at 08:59:08PM +0100, Arno Griffioen wrote:
> If I remember correctly from those days as a student, that was not the 
> starting point for Linux.
> 
> He did not 'decide' to write Linux at the start.. He initially didn't even
> decide to write an OS at all.. 
> 
> As I recall he actually got an i386 based machine and wanted to explore 
> the features of that CPU compared to the 286 and the like. To do that he 
> decided to basically write (if I remember right..) an editor that ran 
> directly on the hardware and made use of the new i386 features.

Not an editor, but rather a terminal emulator, to talk to a modem so
he could connect to the university's computers.

He first started by having two processes, one which would print just
'A' characters, and another that would print 'B', and had a simple
scheduler so they would alternate printing to the screen: "AAAABBBB",
etc., then "ABABABAB", etc.   And from there he wrote the terminal emulator.

What he did after that isn't well recorded; it could have been an
editor, but for a long time he using Minix for editing and compiling
the proto-kernel that would later become Linux.   

> However, once he did publish it the MINIX userland basically became the 
> 'incubator' for this new little (monolithic! :P ) kernel broke out when 
> GCC and slowly the other GNU tools became available so it could self-host.
> 
> Somehow Linus at that time found so much fun from getting all these 
> patches and code to stick into his funny little kernel and watching it
> grow and evolve that he stuck with it and didn't move to other projects.

At the time when Linus announced his creation (not yet named) on
comp.os.minix in August 1991, it was already self-hosting.  And that
happened pretty quickly; he first started working on the project in
June or July.

Around the end of 1991, I had added Job Control (implemented from
POSIX.1 as a the specification), so we could put jobs in the
background.  In 1992 X Windows was ported to Linux.  Networking
support followed shortly thereafter.

> So all in all.. As I remember it, there was never really a decision to 'make 
> this great new OS!'.. It kinda happened with right place, right time, right 
> people, etc.

In the super-early days (late 1991, early 1992), those of us who
worked on it just wanted a "something Unix-like" that we could run at
home (my first computer was a 40 MHz 386 with 16 MB of memory).  This
was before the AT&T/BSD Lawsuit (which was in 1992) and while Jolitz
may have been demonstrating 386BSD in private, I was certainly never
aware of it --- and Linus was publishing new versions every few days
on an ftp site.  We'd send patches, and in less than a week, there'd
be a new release dropped that we could download.

So the argument, "Linus would have never started on Linux if itT
weren't for the AT&T Lawsuit" I don't think fits with the timeline.
Development was very fast paced, and so it was *fun*.  And at least
for me, the lacking of networking during the early days didn't bother
me much, since I didn't have networking at home.  (I didn't have
grounded outlets, either, in my 3 people for $1050/month apartment.
Each leg was 50-60V to ground, and the wiring was cloth wrapped, and
was either steel or aluminum; I never did figured out which....)
Using zmodem over a 2400 bps modem was way more efficient than PPP, so
even once we had networking, I didn't always bring up pppd.  And the
most common way I would download source was using set of 1.44 MB
floppies and a station wagon (literally; I was driving a Corolla wagon).

During those early days, the fact that Linux was more "primitive" than
BSD may have been an advantage, since it sources was small, and
release engineering is simple when you only support one architecture.

The other things I noticed was that because we didn't have the weight
of the Unix/BSD legacy, we were more free to experiment.  Bruce Evans
was working on the serial driver for FreeBSD, and I was working on the
serial driver for Linux, and we had a friendly competition to see who
could get better throughput using the very primitive 8250 and later
16550 UART.  The figure of merit we were using was the CPU overhead of
a C-Kermit file transfer over two RS-232 ports connected via a
loopback cable.  We'd compare notes to see how we could make things
better, me for Linux, and Bruce for FreeBSD, and it was *fun*.
Eventually, it got to the point where I was making changes to the tty
layer to further optimize things, and at that point Bruce reported
that he couldn't do some of the optimizations, since it would have
required changing the TTY layer that had been handed down from the
Gods of Olympus^H^H^H^H^H^H^H^H BSD and so it was nixed by his
colleagues in FreeBSD land.

In contrast, in Linux, people felt free to rip out and replace code if
it would make things better.  Depending on how you count things, the
networking layer in Linux was ripped out and replaced three or four
times in the space of as many years.  Sure, the first version was
pretty crappy, and was barely good enough for simple telnet
connections.  But things got better fast, because people were felt
free to experiment.

My personal belief is that it was this development velocity and
freedom to experiment starting with a super simple base is what caused
Linux to become very popular amongst the those who just wanted to play
with kernel development.  Compare and contrast Linus's willingness to
accept patches from others and his turnaround time to get those
patches into new releases with Bill Jolitz's 386BSD effort --- and I
don't think you need the AT&T lawsuit to explain why Linux took off in
1991-1992.  FreeBSD and NetBSD was started in 1993 because of the
failure of Jolitz to accept patches in a timely fashion.

    	     	  	     	     - Ted


More information about the TUHS mailing list