L i n u x   N e w s

	  A summary of the goings-on of the Linux community

		 Issue #3, October 18 through 26, 1992






*** Interview

Why is Linux News better than BYTE, CACM, the National Inquirer, and
sliced bread?  We interview Linus!  In this first-ever, breathtaking,
revealing interview, the Grand Wizard Linus tells it all!  Well,
almost...


LN:	Tell us a bit of yourself and your background.  Age,
	education, occupation, family, pets, hobbies, computing
	history, etc.

Linus:	Hmm.  I'm 22 (as some avid kernel source readers have already
	found out: there is a hidden clue in there somewhere...), and am
	(slowly) working my way towards a fil.kand (MSc? whatever) in
	computer science at the University of Helsinki.  I'm currently
	in my fourth year (hmm..  fifth, but one was spent in the army)
	of studies, and I expect to sit here studying for a long time to
	come.

	I still live at home (which is why I can afford to work on Linux
	and study at the same time without working too) with my (100%
	white) cat (Mithrandir, but it's called everything from "randi"
	to "klomppen" depending on my mood) and my sister and mother.
	The fun never ends.

	I started with computers (a VIC-20) when I was about 11, first
	with BASIC, then learning 6502 machine code (assemblers are for
	wimps).  I looked on with envy while my friends got their C-64's
	(I didn't have any more money then than I have now), but was
	eventually able to get a Sinclair QL and get some real
	programming done under a multitasking (albeit somewhat weird)
	system.

	On the sinclair QL I continued to program in assembly (The QL
	BASIC (SuperBasic) was ok, but I wasn't interested), and I wrote
	various more-or-less useless programs (ranging from a FORTH
	compiler and an editor-assembler system of my own to pac-man to
	a msdos compatible floppy disk driver).  The QL was a fun
	machine, but there weren't very many of them in Finland, and
	although I was generally happy to write my own programs (still
	am), it did teach me to buy hardware that actually is supported.

LN:	When and why did you start writing Linux?

Linus:	I took this course on UNIX and C at the university in the fall
	of 1990, and I got hooked.  I had naturally seen some of the
	PC-contemptibles running msdos, and I was relatively happy with
	my QL, although some of the 386's were a lot faster.  But one of
	the books we read during the course was "Operating Systems,
	Design and Implementation" by Tanenbaum, and that way I learnt
	about Minix.  I wanted my home machine to have a similar setup
	to the suns at the university, and Minix seemed like a good
	candidate.

	So when I had scrounged up enough money, I bought myself an
	AT-386 compatible machine (well..  I didn't have enough money,
	so I'm still paying on it, but it seems I'll get enough money
	for Linux to finally pay off the last rates).  I had long since
	decided that anything less than a 386 wasn't worth it, and with
	Minix on it, I thought I'd have a nice enough system.

	As it turned out, Minix wasn't available in Finland (at least I
	wasn't able to find it easily), so while I got my machine on
	January 5th 1991 (easy date to remember due to the monthly
	payments :-), I was forced to run DOS on it for a couple of
	months while waiting for the Minix disks.  So Jan-Feb was spent
	about 70-30 playing "Prince of Persia" and getting aquainted
	with the machine.

	When Minix finally arrived, I had solved "PoP", and knew a
	smattering of 386 machine code (enough to be able to get the
	machine into protected mode and sit there looping).  So I
	installed Minix (leaving some room for "PoP" on a DOS
	partition), and started hacking.

	Getting Minix wasn't altogether a pleasant experience: the
	keyboard bindings were wrong, and it didn't exactly act like the
	suns I was used to (ugghh.  I *hate* the bourne shell for
	interactive work).  The keyboard was easy to correct (although I
	didn't like the Minix keyboard driver code), and applying Bruce
	Evans' 386-patches made the system a bit more "real".

	So somewhere around March-91, I had a 386 system running
	Minix-386, and I was able to install awb's gcc-1.37.1 port.
	After that, I was able to port bash to the resulting mess, and
	things looked a bit better.  I also spent my time generally
	fooling around (porting gcc-1.40 and various other programs),
	and kept on learning about the 386 while doing so (writing small
	boot-disks that would set up a protected mode environment and
	print out various inane messages).

	I had noticed by that time that Minix wasn't enough even with
	the 386 patches (various troublesome problems: no job control,
	ugly memory management, no fpu support etc).  So I slowly
	started to try to make something out of my protected mode
	trials, and the result is Linux.

LN:	Please give a short summary of the history of Linux.

Linus:	Difficult.  "Linux" didn't really exist until about August-91 -
	before that what I had was essentially just a very basic
	protected mode system that had evolved from a glorified "Hello
	world" program into a even more glorified terminal emulator.
	Linux stopped for quite a while at the terminal emulator stage:
	I played around with Minix, and used my protected mode program
	to read news from the univerity machine.  No down/upload, but it
	did a fair vt100 emulation, and did it by using two tasks which
	communicated from keybodard->modem and modem->screen.

	By mid-summer -91, "Linux" was able to read the disk (joyful
	moment), and eventually had a small and stupid disk driver and a
	simple buffer cache.  So I started out trying to make a
	filesystem, and used the Minix fs for simple practical reasons:
	that way I already had a file layout I could test things on.
	After some more programming (talk about glossing things over), I
	had a very simple UNIX that had some of the basic
	functionalities of the real thing: I could run small
	test-programs under it.

	By that time I looked around for some standards texts - I
	decided early on that I didn't want to write the user-level
	programs, and that in order to easily port things I'd either
	have to make the new system compatible with Minix (ugghh) or
	follow some other kind of standard.  What I wanted was a POSIX
	guide, not so much to be 100% posix, but in order not to do
	anything really stupid I'd regret later.

	My quest for the posix standards failed, as the posix standard
	committee sells the standard to feed itself as I found out, but
	I did get a good pointer to the (then very alpha and
	unsupported) GNU libc.a, which had an early manual accompanying
	it.  The manual was of some help, but the biggest help was
	actually the contact to the person who pointed it out to me:
	arl@sauna.hut.fi.  He was/is the organizer of the pub/OS
	subdirectory at nic.funet.fi, and was interested in giving Linux
	a home at nic.

	Back then, I was only idly thinking about making my system
	available (and I had no real time-table), but arl happily
	created a pub/OS/Linux subdirectory at nic, and thus also gave
	the system it's name.  I wasn't really ready for a release yet,
	so the directory contained just a README for about a month
	("this directory is for the freely distributable Minix clone" or
	something like that).  Arl probably thought the project wouldn't
	come to anything.

	Anyway, around the end of August-91 or so, I had a system that
	actually worked somewhat: I was able to run the Minix shell
	(recompiled with new libraries) under it, and some other things
	also worked.  I released Linux-0.01 in September, telling about
	it by mail to those who had shown interest in it when I asked
	around on the minix newsgroup.  0.01 was a source-only release,
	and I don't think anybody actually compiled it, but it was a
	statement of intent, and people could look at the sources if
	they wished.  I don't think more than about 5-10 people ever
	looked at it - I wasn't yet too happy about it, so I didn't
	announce it publically anywhere.

	A few weeks later (October 5th by the minix news-archives), I
	had gotten my act together sufficiently to release 0.02, along
	with a couple of binaries you could run under Linux (bash, gcc,
	update and sync, I believe).  It still needed minix-386 to
	compile the kernel, as the harddisk parameters were hardcoded
	into the hd driver, but I know some people had it up and
	running: arl even sent me some ftp-statistics about it (which
	I've sadly deleted by now).  Gcc wasn't reliable under linux
	yet: it couldn't compile big files due to various buffer-cache
	problems, but you could get small programs going even under
	0.02.

	Not much later, I released 0.03, which actually worked pretty
	well - the buffer cache mostly worked, as did most other things.
	Heady with my unexpected success, I called the next version
	0.10, and by that time I already got comments from early
	beta-testers, as well as actual patches.  The linux community
	wasn't much: maybe 10-20 minix users who enjoyed hacking a new
	kernel.

	After 0.10 came 0.11, and things were pretty much plain sailing.
	The system was stable enough to be used for further
	developement, and it was "just" a matter of correcting bugs and
	extending the system.  I added swapping to the system in three
	days just before X-mas 91, and was finally able to say that I
	was no longer playing catch-up with Minix.  The swapping code
	was ugly and not very well tested: it actually had bad bugs in
	it until I needed it myself when X11 came around, but it was
	something of a milestone.  The next version (0.12) came out
	exactly (?)  one year after I bought my computer (Jan 5th -92),
	and it was the version that finally got popular: by that time it
	was a very much valid alternative to Minix, and people started
	getting interested.

	Later versions (0.95 etc) have had a lot of new features, and
	quite a few bug-fixes.  There have also been major re-writes
	(first the fs was slowly changed to have a vfs layer, then the
	kernel sleep/wakeup primitives got rewritten, and then the mm
	got restructured).  In spite of that, I think 0.12 was what
	might have been called 1.0 - it had the basic features, and
	worked.

LN:	Have you enjoyed the past year and a half?  Have you liked some
	things especially, have there been things you haven't liked?

Linus:	It's definitely been fun.  Things have changed pretty radically:
	the early couple of months were solitary hacking runs with 5-10
	reboots a day to check out bugfixes/features - seeing the system
	evolve noticeably in a relatively short time.  Now, most of my
	Linux hacking time goes into design (new features do take some
	more thought now) and/or administrative things like keeping up
	with linux mails etc - it's seldom a question of 40+ hours a
	week of pure hacking.

	Getting mail (within limits) is fun: especially if it's 99%
	positive, as it has been.  And people have been generally
	enthusiastic, sending patches, ideas, requests for features,
	etc.  There are downsides: before the newsgroup got founded, I
	often got more than 70 mails a day.  Things have calmed down
	significantly: while I still get 20-40 mails per day, many of
	them are from the mailing-lists and not to me personally, so
	that I can essentially ignore them if they aren't interesting.

	Negative things have been mostly due to driver problems: while
	people have been very nice about it, it's still not fun getting
	mail about "the system from hell that ate all their files".
	Especially if I haven't had a clue about what could be wrong.
	Other problems have included just lack of time and different
	priorities: some people have gotten impatient when I haven't
	included some special feature or other.  I usually need some
	kick-starting if it's not something I'm especially interested
	in.

LN:	Why is Linux copylefted?  The copyright was different in the
	early versions.  Why did it change?  Do you support the GNU view
	of software in general?  What are your feelings about freeware,
	shareware, and commercial software?

Linus:	One of the basic principles has always been being that it should
	be freely distributable without any money-begging.  I generally
	dislike shareware: I feel guilty about not paying, so I don't
	use it, but on the other hand it is irritating to know that it's
	there.  Illogical, but that's how I feel.

	Early versions of Linux had a very strict copyright: it
	disallowed any payments at all (not even copying costs etc),
	while otherwise being similar to the GNU copyleft (ie freely
	distributable assuming full source is made available).  It was
	probably an over-reaction to the dislike I felt against the way
	Minix had been set up: I thought (and still do) that Minix would
	have been better off had it been freely available by ftp or
	similar.

	The copyright got changed with version 0.12, as there were a
	couple of mails even back then asking about the possibility of a
	copying service or similar.  After removing that clause from the
	copying conditions, I essentially had the GNU copyleft (without
	the legal verbiage), so I decided I might as well use the
	copyleft as-is.  And as Linux depended (still does) heavily on
	copylefted programs, it's only natural that the kernel should be
	copylefted as well.

LN:	When are you planning the 1.0 release, and what do you expect it
	to include?

Linus:	I've planned the 1.0 release for a long time, and I've always
	waited just a bit longer.  Right now my final deadline is
	"before X-mas", but I hope it would be ready before December.
	No major new features: I want some cleanups and to get rid of
	bugs, but it's nothing special I'm waiting for right now.

LN:	How do you feel about Minix, 386BSD, and Hurd and their authors?
	Are they rivals, or or allies?

Linus:	386BSD and Hurd are most definitely allies - I'll be happy to
	help them any way I can (for 386BSD I was already able to help
	with the math-emulator, and I've been in contact with some
	others re: vm86 etc).  If 386BSD had been available a year
	earlier, I would probably never have started on Linux, but as it
	is, I'm happy to say that 386BSD didn't automatically mean that
	Linux wasn't worth it.  Both 386BSD and Linux have their points,
	and I naturally think Linux is more fun.

	As to Hurd, I don't know when it will be ready nor what it will
	look like.  But it will be different enough that I don't think
	there is any point in considering it a rival.  I doubt Linux
	will be here to stay, and maybe Hurd is the wave of the future
	(and maybe not), but at the very least it's an interesting
	project.

	Minix...  Hmm.  It's no longer a rival, unless ast does
	something really unexpected with it - the niches are simply too
	different.  Linux won't work on many machines that Minix runs
	happily on (x86, x<3, amiga, mac etc), and even on a 386, Minix
	is still probably preferable as a teaching tool due to the book.
	But for anybody who used Minix to actually get a UNIX
	environment at home, I don't see any reason to stay with it, as
	both 386BSD and Linux are free and give much better features.

	On the other hand, I have to admit to a very unbecoming (but
	understandable, I hope) feeling of glee when I saw that
	c.o.linux had finally more readers than c.o.minix.  There was a
	heated discussion about Linux on the Minix newsgroup back when
	c.o.linux (actually, alt.os.linux at that time) had just begun,
	and ast tried to ridicule it (one of his comments on c.o.minix
	being that I wouldn't have passed his course in OS design with
	such a bad system..).  Ast and I mailed about it, and it left a
	slightly bitter after-taste.

LN:	The Jolitzes suggested a while ago a contest between 386BSD and
	Linux, what do you think about it?

Linus:	I don't necessarily think it would be a good idea: I cannot
	imagine how it would be "judged" or whatever.  The only contact
	Linux and 386BSD has had has been only positive (aside from
	occasional flame-wars, but it's a religious argument..), and I
	don't think there is any need to try to get any kind of rivalry
	going.  The argument seems to have been that such a contest
	would make both systems better, but I frankly doubt that is the
	case: both 386BSD and Linux will evolve even without any special
	contest held between them, and a contest would just result in
	more rivalry and flame-wars.

	Linux and 386BSD have totally different goals - 386BSD wants to
	be BSD, while Linux just is whatever we make of it.  386BSD was
	helpful in giving me some ideas (I read the Jolitz column in DDJ
	with interest), and while it's a bit scary to have a big and
	well known UNIX kernel that fills a similar niche as Linux,
	there is no reason to choose one over the other on a larger
	scale.  People will prefer one or the other, and if either shows
	itself to be much better/popular, so be it.

LN:	What about the future?  Are you planning to support Linux, or do
	you intend to retire and let it survive by itself?

Linus:	I'm most certainly going to continue to support it, until it
	either dies out or merges with something else. That doesn't
	necessarily mean I'll make weekly patches for the rest of my
	life, but hopefully they won't be needed as much when things
	stabilize.

LN:	Are you going to write a book about Linux?  Or a detailed
	history, > with all the gory details revelead?

Linus:	I don't like writing documentation, and writing a book is
	certainly not planned.  There is some pressure for me to write a
	history, hope this interview will server at least partly as one.
	And there certainly won't be any gory details: if there were,
	I've already forgotten them (or flushed them: I have sadly
	deleted my correspondence with ast along with all other old
	mail.  I simply don't have room for it, and I'm too lazy to back
	it up.)

LN:	Is Linux your dream operating system?  Are there things that you
	dislike, or would like to do differently, if you would start
	over from scratch?

Linus:	There are things I'd like to change - but then it wouldn't be
	UNIX any more.  There are good points to a microkernelish design
	and distributed systems: I just haven't got the resources to do
	anything about it.  I'd like to do a more exotic system, with
	better support for pending I/O, distribution of processes etc,
	but with just one 386 at home, I'm not likely to do anything
	about it in the next few years.  And maybe I'll have found a new
	area of interest by then anyway..

	But in general, I think Linux does what I was looking for pretty
	well.  There are details I dislike in the kernel, but the basic
	ideas have worked well, and there are no major ugly warts in the
	Linux design.  So in that way it is kind of a dream system -
	just enough problems to keep up the interest, and keep it
	evolving.  No program is ever perfect, and operating systems are
	interesting programs: there are a lot of things you have to keep
	track of, and a lot of different ways you can solve the
	problems.  Linux does it one way: 386BSD has many basic
	similarities in design, but some major differences in
	implementation.  Then there are OS's like Hurd (well, Mach right
	now) and Amoeba which have a totally different design strategy,
	giving different problems and solutions.  There may be one right
	way of doing things, but I doubt it: and Linux doesn't do too
	badly.

Copyright 1992