0:00:00.570,0:00:03.510
Anyways it is my great honor and privilege
0:00:03.510,0:00:10.510
to introduce Kirk McKusick. He is going
to give a talk of the history of BSD.
0:00:13.570,0:00:17.170
So this is actually a three-hour lecture
0:00:17.170,0:00:19.949
but I don't have three hours so there is
0:00:19.949,0:00:23.659
uh is this where I allow audience participation
0:00:23.659,0:00:27.099
The lecture is really sort of three
main parts
0:00:27.099,0:00:30.460
and what I’ll do is
0:00:30.460,0:00:34.210
describe the three main parts. Then everyone
will get to vote on which part they find the
0:00:34.210,0:00:35.490
most interesting
0:00:35.490,0:00:36.510
Then what I.. I won’t..
0:00:36.510,0:00:41.309
I used to just do just that part and I’ve got a
lot of negative feedback about that
0:00:41.309,0:00:43.819
So I’ll do those two parts don't get elected in
0:00:43.819,0:00:47.210
I'll just do quickly and then I'll concentrate
on the one
0:00:47.210,0:00:48.010
piece that
0:00:48.010,0:00:49.720
seems to be the most popular
0:00:49.720,0:00:51.360
so the history of BSD
0:00:51.360,0:00:55.750
This is BSD at Berkeley as opposed
to once it's out into the
0:00:55.750,0:00:57.050
open source world
0:00:57.050,0:01:01.810
So the first period of time is what I call
the Bill Joy era
0:01:01.810,0:01:06.360
And this is where Bill Joy is starting up BSD
and it's really getting it rolling and
0:01:06.360,0:01:07.180
so it ends when he
0:01:07.180,0:01:08.370
departs
0:01:08.370,0:01:09.610
and
0:01:09.610,0:01:13.080
Sponsers uh.. starts up this company
called Sun Microsystems which you may have
0:01:13.080,0:01:14.680
heard of
0:01:14.680,0:01:19.250
Uh.. Then the second part is sort of the heyday
of BSD. So this is the period of time
0:01:19.250,0:01:20.930
where everybody is
0:01:20.930,0:01:24.290
running is 4.2 and 4.3 and so on
0:01:24.290,0:01:24.960
and
0:01:24.960,0:01:28.830
during that period of time we were being funded
by DARPA which
0:01:28.830,0:01:31.020
deploy a microphone somewhere in this room
0:01:31.020,0:01:32.950
Uh at any rate
0:01:32.950,0:01:35.160
there was some very interesting
0:01:35.160,0:01:36.889
Uh.. battles that went on
0:01:36.889,0:01:38.630
Uh.. about
0:01:38.630,0:01:41.110
exactly how TCP ought to be implemented
0:01:41.110,0:01:46.180
and a lot of this at that history all
that all percolates out
0:01:46.180,0:01:48.000
and so that's sort of the middle period and
0:01:48.000,0:01:54.000
and then the end period is where we have
gotten religion and have decided that
0:01:54.000,0:01:58.130
you know maybe BSD isn’t going be at
Berkeley forever and if we want there to be
0:01:58.130,0:01:58.960
any
0:01:58.960,0:02:00.430
possibility for it to continue
0:02:00.430,0:02:04.530
Uh.. we better figure out how to get it outside
the university to people that
0:02:04.530,0:02:08.489
other than to the people that are licensed
by AT&T Bell Laboratories.
0:02:08.489,0:02:09.970
And so it's the whole story of
0:02:09.970,0:02:13.859
how we open-sourced it and fought a one lawsuit
about that and
0:02:13.859,0:02:15.189
so on and so forth.
0:02:15.189,0:02:19.049
So those are the three main parts.. The Bill Joy .. the
middle TCP
0:02:19.049,0:02:20.519
building years
0:02:20.519,0:02:20.940
and
0:02:20.940,0:02:24.099
the lawsuit years at the end.
0:02:24.099,0:02:28.879
So how many people are most interested in hearing
the Bill Joy years
0:02:28.879,0:02:33.999
one two three four five, six seven eight nine
ten, eleven twelve thirteen
0:02:33.999,0:02:35.199
fourteen fifteen
0:02:35.199,0:02:39.559
Sixteen. Ok.. how many people are interested
in hearing sort of the middle era
0:02:39.559,0:02:44.579
one two three, four five six, seven eight nine
ten, eleven twelve thirteen fourteen fifteen
0:02:44.579,0:02:45.320
Sixteen.. All right..
0:02:45.320,0:02:46.959
Seventeen eighteen ninety twenty twenty one
0:02:46.959,0:02:49.959
twenty five OK and how many people want to hear
the open
0:02:49.959,0:02:51.079
source
0:02:51.079,0:02:53.159
Lawsuit et cetera
0:02:53.159,0:02:57.120
Laugh.... Okkk
0:02:57.120,0:02:58.969
Do you see this is why I ask
0:02:58.969,0:03:01.139
This is usual it's interesting 'cause I get
0:03:01.139,0:03:03.499
different different groups votes for different
things
0:03:03.499,0:03:06.799
When I was in Japan they all want to hear
about the lawsuit.. you know.. that’s all they
0:03:06.799,0:03:09.229
have those in Japan.
0:03:09.229,0:03:11.669
Yeah that story is quite well known here
0:03:11.669,0:03:14.639
Infact the so interesting tidbit is that
0:03:14.639,0:03:16.459
uh through
0:03:16.459,0:03:20.289
Freedom of Information Act, California Freedom
of Information Act
0:03:20.289,0:03:23.489
uh we were able to get the uh
0:03:23.489,0:03:27.819
decision on that lawsuit unsealed so that
the actual text could get out which was
0:03:27.819,0:03:30.319
sort of interesting reading.
0:03:30.319,0:03:34.349
Okay, well for those of you who are interested in
a section that I'm not doing
0:03:34.349,0:03:38.050
This is where I get to make a shameless plug for
my DVD.
0:03:38.050,0:03:41.709
This is the entire three-and-a-half hour version
of this lecture
0:03:41.709,0:03:45.949
Which conveniently have a box of, so
if it's worth twenty dollars to you could
0:03:45.949,0:03:52.219
got one of these and walk away with it.
0:03:52.219,0:03:57.119
Ok. So uh unlike most of my talks and I don’t actually
have a laptop with slides on it and I just have these
0:03:57.119,0:03:59.529
handwritten notes
0:03:59.529,0:04:01.680
and the top line of my handwritten note says
0:04:01.680,0:04:06.190
the first four pages of this were written
on the Indian Pacific train on way to Perth
0:04:06.190,0:04:12.629
in January 1986 because I had
to give a lecture on the day I arrived.
0:04:12.629,0:04:14.219
So I have been uh told
0:04:14.219,0:04:18.100
that this was what my talk was going
to be and I was unprepared so
0:04:18.100,0:04:23.259
it's what a bouncy up-and-down handwriting
but it was the early history
0:04:23.259,0:04:24.840
so anyway
0:04:24.840,0:04:25.880
we're just gonna zip
0:04:25.880,0:04:27.029
quickly through
0:04:27.029,0:04:29.750
what BSD started at Berkeley
0:04:29.750,0:04:31.150
Uh by Bill Joy
0:04:31.150,0:04:34.120
uh Bill Joy was a graduate student I
happened to
0:04:34.120,0:04:38.050
share the same adviser with him, we were both
working on programming languages.
0:04:38.050,0:04:41.610
Uh you might find that hard to believe considering
that he did the C shell but
0:04:41.610,0:04:44.539
Uh.. laugh
0:04:44.539,0:04:48.000
at any rate up that's what we're doing and
0:04:48.000,0:04:50.740
So I shared an office with him and along with
0:04:50.740,0:04:53.720
three other graduate students uh
0:04:53.720,0:04:56.120
and
0:04:56.120,0:05:00.060
So uh I sort of was sitting there watching a lot of
this unfolding and in fact Bill was very good
0:05:00.060,0:05:03.080
at getting other people enthusiastic about
doing work.
0:05:03.080,0:05:06.849
There was his typical comment was.. “how hard
can it be, you could just knock this off in
0:05:06.849,0:05:08.869
a couple hours”
0:05:08.869,0:05:12.709
and usually you could knock off that one thing
but of course that with can you sucked
0:05:12.709,0:05:16.060
in and you know you end up writing the entire Pascal
interpreter or
0:05:16.060,0:05:18.039
the back-end or something
0:05:18.039,0:05:20.249
At any rate
0:05:20.249,0:05:24.749
Bill started doing initially just utilities
so was the C shell
0:05:24.749,0:05:27.439
uh that EX editor later
0:05:27.439,0:05:29.750
it also became the VI editor
0:05:29.750,0:05:31.490
the Pascal system
0:05:31.490,0:05:37.080
and say start packaging these things out and
sending out tapes to people and
0:05:37.080,0:05:38.050
then when
0:05:38.050,0:05:39.930
Ken Thompson who would
0:05:39.930,0:05:42.099
in an Alumnus of Berkeley
0:05:42.099,0:05:45.610
went out for one year's sabbatical and brought
UNIX with him
0:05:45.610,0:05:49.909
when he left Bill sort of took over running
the system what we would call a system administrator
0:05:49.909,0:05:51.729
today
0:05:51.729,0:05:55.660
Uh at any rate this got him interested in this the system
There were patches that were coming back
0:05:55.660,0:05:58.550
from AT&T he was putting those in and he was then
0:05:58.550,0:06:01.590
making some others sending them back to AT&T
and he
0:06:01.590,0:06:01.930
and
0:06:01.930,0:06:03.729
so
0:06:03.729,0:06:07.770
over time there were bigger and bigger bits of
the system and finally got tired of trying
0:06:07.770,0:06:08.370
to
0:06:08.370,0:06:10.909
track what other people's UNIXes look
like
0:06:10.909,0:06:11.729
and so
0:06:11.729,0:06:16.569
uh with the advent of FreeBSD the
third distribution
0:06:16.569,0:06:18.560
He just put together an entire package
0:06:18.560,0:06:22.310
uh and this was actually to the VAX rather
than the PDP-11 which is what we had started
0:06:22.310,0:06:23.080
on
0:06:23.080,0:06:25.069
all the 2.
0:06:25.069,0:06:27.310
versions of the of BSD
0:06:27.310,0:06:30.889
were actually worked on by the other people not by
the Bill especially not the stuff where
0:06:30.889,0:06:33.050
the kernel begins to become involved
0:06:33.050,0:06:35.300
2.9, 2.10, 2.11 et cetera
0:06:35.300,0:06:37.569
uh was actually done by
0:06:37.569,0:06:41.090
other people many years uh later so 2.11
0:06:41.090,0:06:43.279
does not preceed 3.0
0:06:43.279,0:06:48.550
Uh 2.11 is you know contemporary
with 4.4
0:06:48.550,0:06:51.100
Uh at any rate uh
0:06:51.100,0:06:52.800
once we got the
0:06:52.800,0:06:54.790
uh the BSD
0:06:54.790,0:06:57.360
distribution out into the world
0:06:57.360,0:07:00.870
Uh it started getting used by a lot of people
because it
0:07:00.870,0:07:01.589
really
0:07:01.589,0:07:05.000
was a big step forward over what AT&T were
shipping
0:07:05.000,0:07:06.660
in particular
0:07:06.660,0:07:09.529
uh as we started getting things like
0:07:09.529,0:07:11.450
the TCP/IP networking
0:07:11.450,0:07:15.770
Uh So you had a choice you can run the AT&T
version which had UUCP as networking
0:07:15.770,0:07:19.149
or you could run BSD that had sockets, TCP et
cetera
0:07:19.149,0:07:20.610
you could run
0:07:20.610,0:07:24.090
AT&T's version which had a file system that
could utilize 3 to 5 percent of the bandwidth
0:07:24.090,0:07:24.979
of the disk
0:07:24.979,0:07:28.810
or you could run BSD which could utilize 50 percent
of the bandwidth of the disk
0:07:28.810,0:07:30.519
et cetera.
0:07:30.519,0:07:34.939
So many people would buy the AT&T license
and immediately drop Berkeley to add UNIX
0:07:34.939,0:07:37.180
on to it.
0:07:37.180,0:07:41.879
Uh consequently it was getting wide distribution
atleast in the university environments
0:07:41.879,0:07:44.139
Uh
0:07:44.139,0:07:46.979
And uh starting to sort of eek out into the commercial
environments
0:07:46.979,0:07:51.249
The commercial environments were not large because
commercial environments just weren’t using UNIX
0:07:51.249,0:07:52.679
at that time
0:07:52.679,0:07:54.679
for the most part
0:07:54.679,0:07:58.090
Uh So at any rate
0:07:58.090,0:07:59.290
Bill got it
0:07:59.290,0:08:00.349
Uh well
0:08:00.349,0:08:04.299
with FreeBSD coming out uh
0:08:04.299,0:08:06.340
The DARPA which is
0:08:06.340,0:08:07.540
essentially
0:08:07.540,0:08:10.160
puts out research contracts for
0:08:10.160,0:08:12.629
all the different branches of the military
0:08:12.629,0:08:13.780
Uh was
0:08:13.780,0:08:15.960
had a huge number of contracts
0:08:15.960,0:08:19.850
out with lots of different people being stuff
related computers and they all have different computers
0:08:19.850,0:08:22.939
and different operating systems and they were using
different languages
0:08:22.939,0:08:24.969
and so if one group would do something
0:08:24.969,0:08:27.309
they just couldn't really pass that
0:08:27.309,0:08:30.739
over take some other group that might want
to utilize it because this was written in
0:08:30.739,0:08:33.390
FORTRAN and that was written in PL1
0:08:33.390,0:08:35.830
You know this was running on
0:08:35.830,0:08:40.830
you know some deck machine and that was running on some
IBM hardware et cetera.
0:08:40.830,0:08:47.220
and so DARPA decided that they
really wanted to consolidate
0:08:47.220,0:08:50.280
on hardware and operating system
0:08:50.280,0:08:55.000
and then have people work there and so there's a
better chance if they would be able to co-operate.
0:08:55.000,0:08:57.640
So they put out a a sort of
0:08:57.640,0:08:59.829
call, essentially a request for
0:08:59.829,0:09:02.430
proposals or whatever they called in those
days
0:09:02.430,0:09:04.290
and
0:09:04.290,0:09:05.520
essentially there were two
0:09:05.520,0:09:08.500
uh main contending things that came in
0:09:08.500,0:09:10.029
one was the VAX
0:09:10.029,0:09:11.320
running VMS
0:09:11.320,0:09:14.300
and the other one was the VAX running
0:09:14.300,0:09:16.800
Berkeley UNIX
0:09:16.800,0:09:18.150
and of course
0:09:18.150,0:09:21.650
the uh the people that were promoting the
VAX running VMS
0:09:21.650,0:09:27.220
were arguing like well you know this is a real
vendor supported operating system and
0:09:27.220,0:09:32.059
you know that this not just some flaky students
at Berkeley that are doing it
0:09:32.059,0:09:34.530
then you know therefore this ought to be the operating
system
0:09:34.530,0:09:39.500
And that really put the final nail
on the coffin
0:09:39.500,0:09:43.410
Uh this guy named Dave Cashkin came up with a set of
benchmarks
0:09:43.410,0:09:47.370
Uh what we would call micro benchmarks
today so how fast can you do Get PID
0:09:47.370,0:09:49.970
and how fast can you do that pipe thing
0:09:49.970,0:09:54.180
When you ping a single packet back and forth to see
how fast you can contact switch
0:09:54.180,0:09:55.410
and
0:09:55.410,0:09:56.710
uh
0:09:56.710,0:10:00.910
showed that VMS did these things much faster
than BSD did.
0:10:00.910,0:10:01.760
and this of course
0:10:01.760,0:10:03.680
made Bill go ballistic
0:10:03.680,0:10:04.360
and
0:10:04.360,0:10:07.780
Uh besides saying that they were as stupidest benchmarks
he'd ever since he said, ""If that's the way
0:10:07.780,0:10:11.070
they're gonna decide then we'll just go
make those things run fast""
0:10:11.070,0:10:14.920
and it was sort of an interesting story about
other half and what
0:10:14.920,0:10:19.980
he got uh the BSD to run those benchmarks as fast
as the VMS
0:10:19.980,0:10:21.450
and
0:10:21.450,0:10:22.170
so
0:10:22.170,0:10:24.900
the upshot of it was that DARPA
0:10:24.900,0:10:28.740
was still sort of sitting on the fence
and Bill’s comment was well VMS we're stuck
0:10:28.740,0:10:30.380
with VMX forever
0:10:30.380,0:10:34.490
and you know may be some other computer might
be interesting down the road
0:10:34.490,0:10:40.700
and BSD is set up so that it's much more portable
uh you know it's tie. UNIX, in general is
0:10:40.700,0:10:44.750
portable across different architectures we've
already proved it by running it for n=2
0:10:44.750,0:10:45.910
so therefore
0:10:45.910,0:10:48.010
it's a proved point
0:10:48.010,0:10:49.040
so
0:10:49.040,0:10:51.850
at any rate DARPA agreed to that
0:10:51.850,0:10:54.780
and they put in some initial money to Berkeley
0:10:54.780,0:10:57.230
and the initial things that Berkeley was
really just
0:10:57.230,0:11:00.720
uh to come up with
0:11:00.720,0:11:02.500
Uh well we had out 3BSD
0:11:02.500,0:11:05.950
which had a lot of functionality but the
performance wasn't so great
0:11:05.950,0:11:09.330
and so the that first point was to get
4 BSD out
0:11:09.330,0:11:10.790
which was going to have
0:11:10.790,0:11:12.870
sort of that
0:11:12.870,0:11:14.960
that additional functionality they really felt
they needed
0:11:14.960,0:11:16.459
uh which were just
0:11:16.459,0:11:17.930
really small tweeks
0:11:17.930,0:11:22.510
Uh things like the ability to automatically
reboot after crash
0:11:22.510,0:11:23.880
Uh Job control
0:11:23.880,0:11:29.540
uh PRAM’s list which was needed by a bunch
of their uh folks, deliver mail, smoke in air
0:11:29.540,0:11:32.810
that was the uh the predecessor to
send mail
0:11:32.810,0:11:36.820
except without a configuration file you just
compiled and checked the way you needed things
0:11:36.820,0:11:37.700
that were
0:11:37.700,0:11:39.720
uh at any rate
0:11:39.720,0:11:41.260
Uh that came out
0:11:41.260,0:11:42.800
and that 4.1
0:11:42.800,0:11:44.550
so it nail that down cleaned it up
0:11:44.550,0:11:46.590
got the performance decent
0:11:46.590,0:11:49.680
and that fulfilled the first DARPA contract.
0:11:49.680,0:11:52.450
DARPA had put in something like
0:11:52.450,0:11:56.390
you know three-quarters of a million dollars or something
and boom topped this huge pay back from it
0:11:56.390,0:11:56.960
and
0:11:56.960,0:11:58.380
people seem to be happy with it
0:11:58.380,0:12:02.880
so they decided that maybe that the funky graduate students
at Berkeley could do stuff
0:12:02.880,0:12:05.640
and so then they put in that of
0:12:05.640,0:12:07.310
considerably larger
0:12:07.310,0:12:10.710
contract it was I don't know what three or
five million dollars
0:12:10.710,0:12:12.260
and this was a longer term
0:12:12.260,0:12:13.520
and in
0:12:13.520,0:12:15.870
those times he would get
0:12:15.870,0:12:17.839
for example a three-year contract
0:12:17.839,0:12:20.320
of which is sort of unheard of in lot of the
0:12:20.320,0:12:22.440
research stuff today.
0:12:22.440,0:12:25.630
So you could really sort of spend some time
figuring out what you can do and do it
0:12:25.630,0:12:28.789
for eighteen months to two years before you had
to start working about
0:12:28.789,0:12:31.030
renweing et cetera.
0:12:31.030,0:12:33.180
Uh in any way
0:12:33.180,0:12:34.930
the grand goals for this
0:12:34.930,0:12:37.300
Big contract that DARPA gave
0:12:37.300,0:12:38.800
was
0:12:38.800,0:12:41.470
Uh there were four pieces. One was
0:12:41.470,0:12:42.779
to get a
0:12:42.779,0:12:43.880
real networking end
0:12:43.880,0:12:46.220
uh at that time
0:12:46.220,0:12:47.980
Uh there was just NCP
0:12:47.980,0:12:49.680
Uh which was that
0:12:49.680,0:12:54.240
Network Control Protocol, the predecessor to TCP/IP
0:12:54.240,0:12:57.100
Uh a good file system in there
0:12:57.100,0:13:01.490
Uh restartable signals so you could actually
use them to drive work as opposed to just
0:13:01.490,0:13:03.440
terminating programs
0:13:03.440,0:13:05.600
and a new virtual memory system
0:13:05.600,0:13:07.390
Uh that wasn't
0:13:07.390,0:13:09.810
well essentially that allowed shared memory
0:13:09.810,0:13:11.530
uh that the one
0:13:11.530,0:13:13.640
the predecessor
0:13:13.640,0:13:15.880
that we were running BSD at that
time
0:13:15.880,0:13:19.810
shared the text space that would be only the part
of your program but all the rest
0:13:19.810,0:13:21.580
could not shared
0:13:21.580,0:13:23.810
So those were the four deliverables.
0:13:23.810,0:13:25.980
now for the kind of networking
0:13:25.980,0:13:28.000
they still didn't really trust us.
0:13:28.000,0:13:30.879
So they decided that what they were going
to do
0:13:30.879,0:13:33.720
was divide into two parts.
0:13:33.720,0:13:35.300
So they were going to get
0:13:35.300,0:13:37.630
Bolt, Beranek and Newman BBN
0:13:37.630,0:13:42.360
we are going to actually write the TCP/IP protocol
stuff
0:13:42.360,0:13:44.709
and then What Berkeley was supposed to do
0:13:44.709,0:13:46.589
was design the
0:13:46.589,0:13:47.550
programming interface
0:13:47.550,0:13:49.040
uh so
0:13:49.040,0:13:53.130
the socket, connect, except so on
0:13:53.130,0:13:55.639
and then BBN was to deliver
0:13:55.639,0:14:00.159
the thing that plugged in underneath that interface
and Berkeley was to integrate it into
0:14:00.159,0:14:02.150
BSD and uh
0:14:02.150,0:14:04.570
they would ship it.
0:14:04.570,0:14:05.239
and
0:14:05.239,0:14:08.090
Uh so
0:14:08.090,0:14:11.240
this all starts on and BBN gets to work
0:14:11.240,0:14:13.090
and
0:14:13.090,0:14:15.750
Bill Joy gets to work on the interface and
0:14:15.750,0:14:18.620
uh so
0:14:18.620,0:14:22.610
eventually what happens is that Bill has sort
of the framework of this stuff. And Bill being
0:14:22.610,0:14:23.960
Bill uh
0:14:23.960,0:14:26.580
he he worked rather quickly
0:14:26.580,0:14:29.880
Uh someone wants to ask you to compare myself
to Bill Joy and I said look
0:14:29.880,0:14:33.980
there's really nothing that he's done that
I couldn't do but the problem is
0:14:33.980,0:14:36.810
what he gets done in a year would take me
a decade
0:14:36.810,0:14:39.430
because he was the master of figuring out.
0:14:39.430,0:14:40.730
I'm here
0:14:40.730,0:14:42.039
that's where I want to get to
0:14:42.039,0:14:44.740
what is absolutely shortest path from here
to there
0:14:44.740,0:14:45.810
and he would do it
0:14:45.810,0:14:47.339
and you end up with code
0:14:47.339,0:14:48.260
that worked but
0:14:48.260,0:14:51.699
that was not maintainable, extendable, changeable.
0:14:51.699,0:14:56.130
Anybody looked at the old version of the VI
understands what I’m talking about.
0:14:56.130,0:14:56.860
so
0:14:56.860,0:14:58.430
So some of the rest of us you know
0:14:58.430,0:14:59.709
like to have stuff that like
0:14:59.709,0:15:02.910
you could go back and do something with later
but that takes longer
0:15:02.910,0:15:03.689
At any rate
0:15:03.689,0:15:06.300
Bill figured out this socket interface the first
0:15:06.300,0:15:07.930
draft of it it anyway
0:15:07.930,0:15:12.140
and he's got it and now he needs the networking protocols
to put underneath it
0:15:12.140,0:15:15.480
so he goes to to
0:15:15.480,0:15:16.399
Uh Rob Gurvitz who was
0:15:16.399,0:15:18.259
leading the program of
0:15:18.259,0:15:20.429
development of TCP/IP at BBN
0:15:20.429,0:15:23.660
and says hey I got the socket interface and I need
something to put in here
0:15:23.660,0:15:28.140
and Rob says well we're not really done yet
but we have we have this slight prototype code
0:15:28.140,0:15:29.990
and you know you could put that in it
0:15:29.990,0:15:31.319
see how that works in
0:15:31.319,0:15:33.100
you know then we’ll iterate
0:15:33.100,0:15:35.810
up so that we can work in parallel of you.
0:15:35.810,0:15:38.410
So Bill gets the code and
0:15:38.410,0:15:40.420
he puts it in
0:15:40.420,0:15:40.859
and
0:15:40.859,0:15:42.979
cranks it up and he gets a kind of working
0:15:42.979,0:15:43.820
and
0:15:43.820,0:15:45.580
then decides to run
0:15:45.580,0:15:49.110
Some full test between machines to see
how well it works.
0:15:49.110,0:15:55.150
And we’re running at the at that time our development
machines development inputs were
0:15:55.150,0:15:55.820
VAC 750’s
0:15:55.820,0:15:59.640
so that was the big honk at VAC 780
that ran an entire NIP
0:15:59.640,0:16:04.600
and then there were these much smaller things
that were merely the size of a large
0:16:04.600,0:16:05.769
uh dishwasher
0:16:05.769,0:16:11.839
uh its bigger than a dishwasher more like
washing machine yes
its over range at any rate and used about
0:16:11.839,0:16:13.660
as much power as the same.
0:16:13.660,0:16:16.260
Uh with all the burners turned ON assuming its electric
0:16:16.260,0:16:23.080
uh anyway the VAC 750 only
ran at 0.7 NIPs
0:16:23.080,0:16:25.480
Uh and so
0:16:25.480,0:16:28.920
Bill needs to be able to run sometests back and forth
between these machines
0:16:28.920,0:16:31.080
and of course we don't have
0:16:31.080,0:16:34.900
anything like FTP or TELNET
anything that, which is not written yet
0:16:34.900,0:16:36.890
and so he just
0:16:36.890,0:16:38.369
being Bill says well
0:16:38.369,0:16:39.699
I'll just hack up something
0:16:39.699,0:16:43.309
uh which was RLogin RCP et cetera.
0:16:43.309,0:16:47.820
which was really just the design so that he
could test running between these two machines
0:16:47.820,0:16:48.710
Uh
0:16:48.710,0:16:52.130
This is the legacy that we end up with and
why the protocol number or anything like
0:16:52.130,0:16:57.820
that in the header you know it’s just a
test program no one is gonna actually use this
0:16:57.820,0:17:02.020
so the uh upshot of all this that
0:17:02.020,0:17:03.840
Bill fires up
0:17:03.840,0:17:05.530
RCP and
0:17:05.530,0:17:08.230
to copy a file between machines
0:17:08.230,0:17:08.730
and
0:17:08.730,0:17:15.300
and it copies the file at about 56 or
60 kilobits per second
0:17:15.300,0:17:17.520
and at that point the CPU was pegged
0:17:17.520,0:17:19.799
on the VAX 750
0:17:19.799,0:17:20.810
And it you know
0:17:20.810,0:17:24.810
there's plenty of bandwidth still available
because we had 10 megabit Ethernet at that point
0:17:24.810,0:17:28.519
we had the new 10 megabit Ethernet because mostly
it was 3 megabit but
0:17:28.519,0:17:31.059
we had the 10 which was like really cool stuff.
0:17:31.059,0:17:32.260
uh and
0:17:32.260,0:17:37.090
uh so he talks to Rob Gerwitz you know this thing runs
and Gerwitz was his attitude
0:17:37.090,0:17:39.280
as well the backbone
0:17:39.280,0:17:44.540
of the only the 56 K so as long as
we can saturate that what's the problem
0:17:44.540,0:17:48.710
and Bill’s attitude is well no I need to be
all you know get closer to the bandwidth of
0:17:48.710,0:17:51.450
the network between these local machines
0:17:51.450,0:17:56.430
And so of course Bill being Bill dives in to see
why this is the case that it's not running very
0:17:56.430,0:17:57.440
fast.
0:17:57.440,0:17:58.500
Infact, he probably
0:17:58.500,0:17:59.880
wrote this
0:17:59.880,0:18:01.680
to some of this stuff to figure out
0:18:01.680,0:18:06.320
what was not running quickly. We already
had it for user=level of our programs that’s what we
0:18:06.320,0:18:09.170
put it into the kernel
0:18:09.170,0:18:12.160
And sad to say some of these tools are still like
considered
0:18:12.160,0:18:17.050
like leading tools but are not leading tools but
still used tools today
0:18:17.050,0:18:22.800
Uh which isn't to say bad that it's just that
seems like in twenty years you could do better
0:18:22.800,0:18:23.690
at any rate
0:18:23.690,0:18:27.490
he quickly discovers that way the TCP/IP
code is written
0:18:27.490,0:18:30.000
is it’s this elaborate state machine
0:18:30.000,0:18:32.970
and there's the state transitions that you
go through and
0:18:32.970,0:18:36.919
each time we want do a state transition the
you jump through an indirect
0:18:36.919,0:18:39.090
this and that and other things and
0:18:39.090,0:18:42.520
and he goes well you know this is just way too
efficient and you know
0:18:42.520,0:18:46.620
we could just take the state machine turned
into a giant switch statement
0:18:46.620,0:18:49.860
And you know there will be a few GOTO's here and there
0:18:49.860,0:18:53.070
when you need to switch states buttoning ON and that’s that
0:18:53.070,0:18:54.380
We'll just do that
0:18:54.380,0:18:57.770
And so he starts cranking away on this thing
and
0:18:57.770,0:18:59.230
pounding out all of that
0:18:59.230,0:19:01.680
the structure and getting a down
0:19:01.680,0:19:04.110
of what it looks like today
0:19:04.110,0:19:06.200
And uh
0:19:06.200,0:19:09.390
actually it's been cleaned up considerably over
the years but
0:19:09.390,0:19:12.280
Uh so he cranks it down to this and
0:19:12.280,0:19:14.770
gets up to the point where
0:19:14.770,0:19:19.420
he can at least saturate the 3 megabit wire
we can’t saturate the
0:19:19.420,0:19:21.960
10 megabit wire but it's because the
0:19:21.960,0:19:24.640
actually Ethernet controllers themselves are
0:19:24.640,0:19:26.740
not able to uh
0:19:26.740,0:19:30.310
really run at 10 megabits uh
0:19:30.310,0:19:33.330
these were you know prototype early release
stuff and so
0:19:33.330,0:19:35.020
we get it upto
0:19:35.020,0:19:36.960
somewhere around four
0:19:36.960,0:19:39.370
megabit uh
0:19:39.370,0:19:43.370
But we're only running at 40% CPU time
so in theory if we could have run at wire
0:19:43.370,0:19:46.809
speed we got up to 10 megabit
and for other reasons it wouldn't have
0:19:46.809,0:19:47.350
but
0:19:47.350,0:19:53.760
the point is we were like uh a way way, order of magnitude
ahead of where we started from literally
0:19:53.760,0:19:56.350
and so
0:19:56.350,0:19:59.480
Uh there's a lot of pressure from a lot of the
0:19:59.480,0:20:02.950
uh the people that have been that have 4.1
0:20:02.950,0:20:04.640
that they want to
0:20:04.640,0:20:07.320
try out this new networking stuff
0:20:07.320,0:20:10.080
and so uh
0:20:10.080,0:20:11.870
this code
0:20:11.870,0:20:13.210
as such as it was
0:20:13.210,0:20:17.280
uh got released as something that we called
4.1a
0:20:17.280,0:20:20.680
Uh so 4.1a was sort of the
0:20:20.680,0:20:22.559
first incremental release of
0:20:22.559,0:20:26.020
Uh between 4.1 and 4.2
0:20:26.020,0:20:28.860
and this got surprisingly large
0:20:28.860,0:20:32.890
larger distribution then we had really planned
on because you know you give it to one person
0:20:32.890,0:20:38.010
and then someone else hears about it. They want it
then someone else wants it nahnah.....
0:20:38.010,0:20:42.030
It's not like today and where you just put it up
and anonymous FTP. This was still
0:20:42.030,0:20:45.340
put it on a tape mail the tape to somebody, big
0:20:45.340,0:20:46.640
nine track tapes
0:20:46.640,0:20:48.110
uh
0:20:48.110,0:20:52.900
And uh if you'd want lucky enough to have a high
tape drive, a 6250
0:20:52.900,0:20:55.090
bits per inch drive then you had to get
0:20:55.090,0:20:56.430
the 16 in four
0:20:56.430,0:20:59.360
tapes to get all out there
0:20:59.360,0:21:01.660
Uh at any rate
0:21:01.660,0:21:03.820
This this code goes out
0:21:03.820,0:21:04.299
Uh and uh
0:21:04.299,0:21:10.039
measured about this time Sam Leffler
somebody's name probably know in contemporary
0:21:10.039,0:21:11.800
stuff having to do with wireless
0:21:11.800,0:21:14.000
Uh I actually joined
0:21:14.000,0:21:15.710
the CSFG, the group there
0:21:15.710,0:21:17.340
uh and
0:21:17.340,0:21:19.530
he begins to help build with
0:21:19.530,0:21:21.669
a rewrite of the networking interface
0:21:21.669,0:21:23.020
in particular
0:21:23.020,0:21:27.210
uh Bill hadn't quiet gotten on to the
fact that
0:21:27.210,0:21:30.320
uh When you may want to have multiple connections
0:21:30.320,0:21:33.970
concurrently on a particular port
so if you're running SMTP
0:21:33.970,0:21:35.720
service or HTTP
0:21:35.720,0:21:38.640
Uh the way he had written had uh except
0:21:38.640,0:21:42.780
that the that the what we think of a rendezvous
socket today was actually connected
0:21:42.780,0:21:46.350
and so that nobody else to talk to you on
that particular port to you. When you’re
0:21:46.350,0:21:48.170
finished with that conversation and then
0:21:48.170,0:21:51.520
that the sock would become free again and you
could’ve the next connection.
0:21:51.520,0:21:52.759
he says like that no
0:21:52.759,0:21:54.389
no we got it like
0:21:54.389,0:21:56.500
to have more than one at a time
0:21:56.500,0:22:01.510
and so that's when the whole listen and the
rendezvous socket works up returns to a new
0:22:01.510,0:22:03.670
connected socket and so on
0:22:03.670,0:22:06.960
uh and so at any rate
0:22:06.960,0:22:08.900
this this all gets done
0:22:08.900,0:22:10.970
And uh
0:22:10.970,0:22:15.930
I've gotten roped into doing the file system
which is another part of the earlier story.
0:22:15.930,0:22:20.130
uh and so the file system is sort of the
point where we're ready to inflict I mean
0:22:20.130,0:22:22.120
let other users try it
0:22:22.120,0:22:24.480
and we have revised networking
0:22:24.480,0:22:25.600
and so this
0:22:25.600,0:22:26.460
Uh came up
0:22:26.460,0:22:28.960
as a release called 4.1b
0:22:28.960,0:22:33.390
and then fairly quickly thereafter the signal
stuff got cleaned up
0:22:33.390,0:22:36.670
and so 4.1b got replaced with 4.1c
0:22:36.670,0:22:40.450
Uh remember there were four things that we need
to get done so A was the networking B was the file system
0:22:40.450,0:22:42.309
and C was the signalling and
0:22:42.309,0:22:43.920
D was supposed to be
0:22:43.920,0:22:47.880
the virtual memory which of course didn't happen
for another six or seven years
0:22:47.880,0:22:49.190
Uh but
0:22:49.190,0:22:52.390
at any rate 4.1c was another one
of these ones
0:22:52.390,0:22:54.600
which was an enormously picked up
0:22:54.600,0:22:56.300
very wide distribution
0:22:56.300,0:22:57.860
uh and in
0:22:57.860,0:23:01.110
in the meantime
0:23:01.110,0:23:05.640
Uh you know the folks at the BBN continued
working and developing and
0:23:05.640,0:23:06.570
polishing their code
0:23:06.570,0:23:09.720
uh but Bill had asked another copy
of it so
0:23:09.720,0:23:12.570
they hadn’t delivered it because it
wasn’t done yet any way
0:23:12.570,0:23:15.370
uh and they’re just get it done
0:23:15.370,0:23:18.450
then give it to Berkeley we could put it
in this
0:23:18.450,0:23:20.790
preparation for shipping 4.2
0:23:20.790,0:23:24.090
Well 4.1c got out there
0:23:24.090,0:23:25.610
and uh
0:23:25.610,0:23:29.760
Bill then was setting about to work on
the VM stuff
0:23:29.760,0:23:34.260
When one day going to his office to
chat with him. He says, “Come into my office"" and he says
""you know I
0:23:34.260,0:23:37.840
I am
0:23:37.840,0:23:41.870
involved with these other folks down at Stanford
and they have some hardware
0:23:41.870,0:23:42.860
and they want
0:23:42.860,0:23:45.020
me to put some Berkeley UNIX on it
0:23:45.020,0:23:46.020
and you know
0:23:46.020,0:23:48.770
start selling these things as workstations
0:23:48.770,0:23:49.889
and uh
0:23:49.889,0:23:52.500
I’m going I gonna go
0:23:52.500,0:23:56.430
I am going down there to be one of the
founding members of this and you should come
0:23:56.430,0:23:57.230
along
0:23:57.230,0:23:58.750
uh because you know
0:23:58.750,0:24:03.989
you being a single digit
employee at workstations.
0:24:03.989,0:24:06.559
You’ll get huge stock option
it’s gonna be really exciting"" and you know
0:24:06.559,0:24:11.450
I at that time I had already completed my degree
in business from
0:24:11.450,0:24:12.580
Uh University California so
0:24:12.580,0:24:14.710
I knew something about business
0:24:14.710,0:24:18.460
in fact I had taken an entrepreneurial course
so I knew a lot about starting up companies
0:24:18.460,0:24:19.830
or so I thought.
0:24:19.830,0:24:23.230
And so I said,” Well you know Bill
0:24:23.230,0:24:27.750
this all sounds good what you know what what
is that’s going to make you so successful.”
0:24:27.750,0:24:31.480
He says, ”It's the gact that you know we're
not going to vendor lock in and you know it's going
0:24:31.480,0:24:33.190
to be running the UNIX and
0:24:33.190,0:24:38.000
if SUN doesn’t do it right they can always go to
another vendor and can get UNIX from them.""
0:24:38.000,0:24:40.730
and uh that’s that's going to be the story
0:24:40.730,0:24:43.320
And I said, “Well you know this is well and good but
0:24:43.320,0:24:46.120
let me explain about workstations”
0:24:46.120,0:24:50.860
Uh workstations is about the install base of applications
because people buy workstations because the applications
0:24:50.860,0:24:52.700
run on it
0:24:52.700,0:24:56.810
And uh you know this is company APPOLO that had
0:24:56.810,0:25:01.220
a 4 year head start on SUN and they've
got a lock on the applications
0:25:01.220,0:25:04.860
and people aren’t going to switch to SUN because
they need the applications that run on APPOLO.
0:25:04.860,0:25:06.690
So you know
0:25:06.690,0:25:09.400
I'm sure it's going to be interesting but
uh
0:25:09.400,0:25:13.909
you know I'm only a few months from finishing
my PhD and I know if I go to a SUN with you that
0:25:13.909,0:25:15.249
won't happen
0:25:15.249,0:25:18.390
So I’m gonna my PhD we'll see how SUN is doing in
0:25:18.390,0:25:20.660
over six or eight months and you know
0:25:20.660,0:25:22.130
We’ll evaluate""
0:25:22.130,0:25:26.640
well of course it took me fourteen
fifteen months to finish my PhD and of
0:25:26.640,0:25:27.740
course by that time
0:25:27.740,0:25:31.590
SUN had burst onto the scene and didn't
have any particularly interesting stock options
0:25:31.590,0:25:33.910
left
0:25:33.910,0:25:39.410
So uh if you want it buy yourself a business perhaps
I'm not the one to ask
0:25:39.410,0:25:41.410
at any rate
0:25:41.410,0:25:44.420
Bill left without doing the VM system
0:25:44.420,0:25:49.500
Uh and he took 4.1c with him to get it
ported on to the SUN hardware.
0:25:49.500,0:25:51.300
and
0:25:51.300,0:25:54.240
with this sort uh of hit
0:25:54.240,0:25:55.910
on the main developer
0:25:55.910,0:26:00.510
uh we decided that rather than trying up to get
someone else up to speed in getting to the
0:26:00.510,0:26:02.710
VM done and so on.
0:26:02.710,0:26:05.520
That we would instead
0:26:05.520,0:26:09.370
just declare the first three pieces of this
4 piece contract
0:26:09.370,0:26:11.580
uh worth releasing
0:26:11.580,0:26:14.020
and so
0:26:14.020,0:26:15.720
uh around this time
0:26:15.720,0:26:18.050
this would be about June of 1983
0:26:18.050,0:26:20.620
Uh Micheal Karl joins the group
0:26:20.620,0:26:22.590
essentially coming in uh
0:26:22.590,0:26:25.500
to replace in into the position that was
0:26:25.500,0:26:27.119
up formerly held by
0:26:27.119,0:26:29.330
Sam ..Sam uh out by
0:26:29.330,0:26:32.000
Bill as that sort of
0:26:32.000,0:26:33.250
Head of lead programmer
0:26:33.250,0:26:36.510
uh and
0:26:36.510,0:26:40.490
because Sam also Sam had also considered taking
that position but ultimately decided that
0:26:40.490,0:26:44.610
uh he he didn't want to do that he was gonna
to go off to do graphics at
0:26:44.610,0:26:46.990
Lucasfilm
0:26:46.990,0:26:48.830
and so
0:26:48.830,0:26:51.030
the uh
0:26:51.030,0:26:52.980
the upshot of this was that
0:26:52.980,0:26:55.429
4.2 got released
0:26:55.429,0:26:57.920
in about August of '83
0:26:57.920,0:27:01.549
And uh
0:27:01.549,0:27:05.640
there’re uh about 1000 copies around remember for each
copy that goes out that’s like an institution gets
0:27:05.640,0:27:07.429
a copy and you know
0:27:07.429,0:27:10.760
spread across all their machines et cetera.
0:27:10.760,0:27:14.470
Uh there's another way of looking at it is you can
look at the number of licenses that AT&T
0:27:14.470,0:27:16.400
had outstanding
0:27:16.400,0:27:21.420
and how many licenses that Berkeley had
0:27:21.420,0:27:24.310
at the time we had shipped a thousand, there were
about twelve hundred
0:27:24.310,0:27:27.450
uh AT&T licenses. So it says that
0:27:27.450,0:27:29.149
fair number of people were running
0:27:29.149,0:27:35.310
Uh now at this point just for context AT&T is
releasing system 5 release 1
0:27:35.310,0:27:37.380
So that is short of where they are.
0:27:37.380,0:27:39.290
Uh They had taken their file system and
0:27:39.290,0:27:44.010
upped the block size from 512 bytes
to 1K
0:27:44.010,0:27:46.750
Uh at any rate
0:27:46.750,0:27:47.870
BBN
0:27:47.870,0:27:50.650
was very upset that their TCP/IP
0:27:50.650,0:27:53.340
had not been incorporated.
0:27:53.340,0:27:57.650
and here we had released it but it was this like
prototype early version had been bastardized
0:27:57.650,0:27:59.100
by Bill
0:27:59.100,0:28:04.290
and like you know this isn't it that you know
DARPA paid and now you know have the shiny wonderful
0:28:04.290,0:28:05.990
TCP/IP stack.
0:28:05.990,0:28:09.150
You should be putting this in
0:28:09.150,0:28:10.369
and so
0:28:10.369,0:28:15.310
they began agitating with DARPA and saying
what you know Blah Blah get this to happen
0:28:15.310,0:28:16.280
and so
0:28:16.280,0:28:20.950
uh Michael Karels being the very deliberative
what a person he is.
0:28:20.950,0:28:23.330
Says Ok well
0:28:23.330,0:28:27.780
I'll take the TCP/IP code from BBN and I'll
take the TCP code from
0:28:27.780,0:28:28.870
that we have in 4.2
0:28:28.870,0:28:31.550
and I'll evaluate both of them
0:28:31.550,0:28:38.430
and the evaluation involves you know
performance and maintain ability
0:28:38.430,0:28:41.980
and functionality and all these various
necessary things
0:28:41.980,0:28:42.779
and
0:28:42.779,0:28:47.370
He says, “ Well you know the TCP/IP the idea comes
from BBN and has some really good ideas
0:28:47.370,0:28:49.039
that we don't have so we'll just
0:28:49.039,0:28:51.330
Pick those up and drop it in our distribution
0:28:51.330,0:28:55.510
Uh but we don't really feel that their
0:28:55.510,0:28:57.950
code is uh you know
0:28:57.950,0:29:01.090
is the good place to start from. There's a lot of people
this point
0:29:01.090,0:29:05.730
that have worked with the Berkeley code and they know
that code base there have been a huge amount of enhancements
0:29:05.730,0:29:07.570
on it.
0:29:07.570,0:29:10.880
Uh This is wonderful book that's been written
all about it
0:29:10.880,0:29:13.049
So it is very well documented
0:29:13.049,0:29:13.500
and
0:29:13.500,0:29:17.960
it just doesn't seem to have really make sense
to
0:29:17.960,0:29:22.460
reset back to here and then have to get all
of those improvements changes et cetera.
0:29:22.460,0:29:23.809
Uh into this
0:29:23.809,0:29:25.280
particular new version.
0:29:25.280,0:29:27.150
uh it it
0:29:27.150,0:29:30.440
I finally graduated in '84 and joined
the project
0:29:30.440,0:29:33.260
uh foolishly that taking over as
0:29:33.260,0:29:34.170
it's technically but
0:29:34.170,0:29:35.419
is the lead
0:29:35.419,0:29:38.960
which meant that I got to deal with all of
the political bullshit while
0:29:38.960,0:29:41.870
Mike and others got to do lots of programming
0:29:41.870,0:29:45.140
So let that be a lesson to you that if you think
that they're trying to sweet talk
0:29:45.140,0:29:50.409
you and how great it is to be in-charge
of things.
0:29:50.409,0:29:50.960
Uh
0:29:50.960,0:29:53.080
At any rate we
0:29:53.080,0:29:56.680
continue debating back and forth about this
stuff with BBN.
0:29:56.680,0:30:00.180
We kept taking stuff and putting it into
And look you know that and say that ""We've taken that we've
we’ve taken that""
0:30:00.180,0:30:03.720
“No No. You have to take the code
You got to take the code.”
0:30:03.720,0:30:05.440
So at any rate 4.3
0:30:05.440,0:30:07.750
was really designed
0:30:07.750,0:30:12.340
much like 4.1 in the sense of consolidating
what we already had. So throughout the eh
0:30:12.340,0:30:17.350
the even-numbered releases from Berkeley had
a lot of new functionality and odd releases
0:30:17.350,0:30:19.930
tried to really get the performance up
0:30:19.930,0:30:24.170
Uh we we're always striving to make sure that
things worked when the released it, but we didn't
0:30:24.170,0:30:24.830
always
0:30:24.830,0:30:27.169
strive to make sure they ran optimally.
0:30:27.169,0:30:30.090
Uh figuring that it was better to sort of
tune things
0:30:30.090,0:30:33.090
after the fact once you had a electrode working
in right way.
0:30:33.090,0:30:37.510
So anyway we made an announcement
of 4.3
0:30:37.510,0:30:39.379
Uh actually at the June 1985
0:30:39.379,0:30:43.510
UNIX conference, so two years basically have
gone by here.
0:30:43.510,0:30:44.510
and
0:30:44.510,0:30:45.620
uh
0:30:45.620,0:30:46.470
BBN
0:30:46.470,0:30:50.620
you know immediately objects that we have
not taken their code
0:30:50.620,0:30:51.110
and
0:30:51.110,0:30:52.970
uh they go to DARPA
0:30:52.970,0:30:57.940
and they said, “Look ,you paid BBN
how many millions of dollars, more than you paid to
0:30:57.940,0:30:59.719
Berkeley to do this code
0:30:59.719,0:31:00.730
you're gonna uh you know
0:31:00.730,0:31:02.900
and now they're not taking it
0:31:02.900,0:31:04.330
and and you know
0:31:04.330,0:31:06.360
you got look like ninnies or something.” I
don't know
0:31:06.360,0:31:08.390
I don’t know what they’ve
said I wasn't there
0:31:08.390,0:31:10.179
But at any rate
0:31:10.179,0:31:13.280
DARPA
0:31:13.280,0:31:16.600
representative shows up in my office
0:31:16.600,0:31:18.220
and
0:31:18.220,0:31:19.240
Uh very calmly
0:31:19.240,0:31:21.090
uh explains that.
0:31:21.090,0:31:22.100
You know
0:31:22.100,0:31:27.940
the agreement was that BBN was going to do the
TCP/IP code and
0:31:27.940,0:31:30.240
Uh Berkeley was to do the interface
0:31:30.240,0:31:31.070
and
0:31:31.070,0:31:33.049
This is this is the way the world and
0:31:33.049,0:31:36.769
you know we appreciate that you know you’ve
done other stuff and it was it was great work
0:31:36.769,0:31:38.670
but
0:31:38.670,0:31:42.460
they are funding us and this is the way it is.
0:31:42.460,0:31:44.120
And my quarrel is like
0:31:44.120,0:31:48.370
uh you know Mike Karels is arguing with them and look,
you know we've taken this and we’ve
0:31:48.370,0:31:52.160
put over here, all the reasons that I gave earlier
0:31:52.160,0:31:55.410
and you know the guy finally at the end just
says,
0:31:55.410,0:31:57.679
“ No, you don't understand.
0:31:57.679,0:31:58.549
We're in charge
0:31:58.549,0:32:02.500
this is what you doing. Goodbye!""
0:32:02.500,0:32:04.960
And you know
0:32:04.960,0:32:08.000
it just doesn't work very well at Berkeley
just come in and say,
0:32:08.000,0:32:10.730
“This is what you're going to do.”
0:32:10.730,0:32:13.000
The free speech movement comes to mind.
0:32:13.000,0:32:15.970
Uh so
0:32:15.970,0:32:17.970
You know Mike in particularly just goes completely BANANAS.
0:32:17.970,0:32:21.190
Goes off, “Aggarh”
0:32:21.190,0:32:23.370
and then fires off
0:32:23.370,0:32:26.570
unannounced to me fires off the thing
that the DARPA uh
0:32:26.570,0:32:30.050
which if I'd been would keep in shut
because I would not let them blame SUN
0:32:30.050,0:32:31.690
At any rate
0:32:31.690,0:32:35.350
I mean I only see it because DARPA guy
sent it back to me and says you need to keep
0:32:35.350,0:32:38.720
your staff under control.
0:32:38.720,0:32:39.650
Uh so
0:32:39.650,0:32:44.130
at any rate um you know
0:32:44.130,0:32:46.090
Mike just says, “I'm not doing it.
0:32:46.090,0:32:49.510
They can't make me, I'll just leave.”
0:32:49.510,0:32:51.640
You know so you know
0:32:51.640,0:32:56.450
You tell them that they can either this way or
they can have that way or we won’t release it. Um
0:32:56.450,0:32:57.619
Agrh . um
0:32:57.619,0:33:00.330
Come on there’s got to be some compromise
we can do here.
0:33:00.330,0:33:01.730
So
0:33:01.730,0:33:05.360
Finally uh I say, “Okay let’s I
0:33:05.360,0:33:07.820
I propose that we have a bake-off.
0:33:07.820,0:33:13.150
So we will uh we we had already incorporated
into there was big switch so you could compile ot
0:33:13.150,0:33:14.190
way or the other
0:33:14.190,0:33:15.609
So my first proposal was
0:33:15.609,0:33:16.910
we will just ship it
0:33:16.910,0:33:20.820
with a compile time options.
So you can compile for BBN code
or you could compile it for Berkeley code.
0:33:20.820,0:33:21.640
Even BBN
0:33:21.640,0:33:24.799
Even DARPA could see
this was a no-win
0:33:24.799,0:33:27.950
because you’ll end up with some
people running one some people running the
0:33:27.950,0:33:30.549
other, this won’t work smoothly.
0:33:30.549,0:33:31.539
This was just not
0:33:31.539,0:33:33.550
where they want it to go.
0:33:33.550,0:33:35.409
and so we said, “Okay well
0:33:35.409,0:33:38.480
switch is there it's really easy to compile
the two different systems.
0:33:38.480,0:33:41.830
Let’s have a bake-off
0:33:41.830,0:33:43.649
you know we’ll compile
0:33:43.649,0:33:46.549
with one and compiler with other one and have bunch of
tests
0:33:46.549,0:33:49.059
and you know will decide which one is better.
0:33:49.059,0:33:50.610
Well of course we're not going to let
0:33:50.610,0:33:55.429
Berkeley do the testing because they'd be biased
for Berkeley. We’re not going to let BBN to do the testing
0:33:55.429,0:33:57.640
because they’ll be biased for BBN.
0:33:57.640,0:33:59.720
so we’ve to find a
0:33:59.720,0:34:01.210
uh
0:34:01.210,0:34:03.480
a third party and
0:34:03.480,0:34:08.440
uh the third party that DARPA actually proposes
is a guy named Mike Moose at the Ballistics
0:34:08.440,0:34:10.979
Research Laboratory, just up the road from
here and
0:34:10.979,0:34:12.929
Uh yeah
0:34:12.929,0:34:14.509
little known to
0:34:14.509,0:34:18.659
most of the people is that we actually knew Mike Moose
very well because we had interacted a whole lot with him.
0:34:18.659,0:34:19.910
working on TCP/IP
0:34:19.910,0:34:23.659
so
0:34:23.659,0:34:25.059
we’re like uhm yah it’s ok with us.
0:34:25.059,0:34:27.869
And you know he was in military you know
0:34:27.869,0:34:31.139
chain of command and BBN muck-a-mucks
new ones so
0:34:31.139,0:34:33.589
they’re fine with it
0:34:33.589,0:34:34.370
So ok great so
0:34:34.370,0:34:36.469
you know off we ship that tape and
0:34:36.469,0:34:40.749
He does not tell us what tests he is gonna run
so neither side gets to
0:34:40.749,0:34:44.720
do anything other than make some suggestions
general suggestions so
0:34:44.720,0:34:48.779
Of course we suggest the 3 port performance
test could be important
0:34:48.779,0:34:51.659
and the BBN suggests that
0:34:51.659,0:34:55.320
uh how well it works in the face of large
package
0:34:55.320,0:34:57.049
rate losses is important
0:34:57.049,0:35:01.430
because of course the military you know will drop
a nuclear bomb on Chicago we want to make sure
0:35:01.430,0:35:03.589
it drops down through Dallas
0:35:03.589,0:35:07.320
At any rate Mike Moose sets up these the systems
and
0:35:07.320,0:35:09.150
runs a bunch of tests
0:35:09.150,0:35:12.179
and of course without talking to either side
0:35:12.179,0:35:16.950
and so we're sort of pins and needles
because you know several weeks goes by
0:35:16.950,0:35:18.550
and finally duh
0:35:18.550,0:35:19.589
his report lands.
0:35:19.589,0:35:23.029
You know humh comes in the mail here's his report
0:35:23.029,0:35:26.269
And the first thing you’d do is
to flip to the last page to see what the conclusion
0:35:26.269,0:35:29.479
is but he knew that's what we're going to
do so he hid the conclusion somewhere in the
0:35:29.479,0:35:31.660
middle
0:35:31.660,0:35:33.369
Forcing you to read the entire thing
0:35:33.369,0:35:36.229
but it's a it's a very interesting week because
0:35:36.229,0:35:39.910
in terms of the throughput
as expected we did better
0:35:39.910,0:35:40.840
Uh what
0:35:40.840,0:35:44.929
that he introduced a thing where it would
randomly drop about every
0:35:44.929,0:35:46.769
fourth package
0:35:46.769,0:35:47.799
and
0:35:47.799,0:35:49.390
under this scenario
0:35:49.390,0:35:50.919
he says uh
0:35:50.919,0:35:52.420
the BBN code
0:35:52.420,0:35:56.820
Jumps out to an early start getting a lot
more data through in the face of high
0:35:56.820,0:35:59.039
packet loss uh
0:35:59.039,0:36:03.099
but but the Berkeley part managers to catch up
while the BBN machine reboots.
0:36:03.099,0:36:07.719
Uh
0:36:07.719,0:36:12.109
Ultimately resulting in the conclusion
that even in the face of the packet
0:36:12.109,0:36:14.739
loss, Berkeley code seems to
0:36:14.739,0:36:16.349
do a little better.
0:36:16.349,0:36:17.739
And uh so his
0:36:17.739,0:36:22.119
conclusion is that it should continue to ship
with the BSD code.
0:36:22.119,0:36:25.519
Uh so with this result in hand
0:36:25.519,0:36:28.749
we are authorized by DARPA to do the release
0:36:28.749,0:36:32.189
and we finally managed to release
0:36:32.189,0:36:35.829
4.3 in June of
0:36:35.829,0:36:38.420
1986
0:36:38.420,0:36:39.599
so
0:36:39.599,0:36:41.519
at this point uh
0:36:41.519,0:36:42.199
At this point
0:36:42.199,0:36:45.389
the new TCP code is gone out
0:36:45.389,0:36:47.189
or you know that
0:36:47.189,0:36:52.289
The revised BSD TCP code has gone out
0:36:52.289,0:36:54.689
[with or without subnets]
With or without uh..subnets
0:36:54.689,0:36:56.150
uh that had
0:36:56.150,0:36:59.809
well the class ABC type of subnets
not
0:36:59.809,0:37:01.319
not the uh
0:37:01.319,0:37:02.910
the sider stuff
0:37:02.910,0:37:09.910
sider came along
0:37:16.329,0:37:17.299
okay
0:37:17.299,0:37:19.409
uh at any rate uh
0:37:19.409,0:37:23.719
now we start accelerating the story a bit again
because I have to finish in
0:37:23.719,0:37:25.559
eight minutes
0:37:25.559,0:37:27.540
so at this point
0:37:27.540,0:37:28.260
Keith Bostic
0:37:28.260,0:37:29.209
comes to
0:37:29.209,0:37:30.469
comes to Berkeley
0:37:30.469,0:37:34.059
uh he had been at Seismo which some of you
may know
0:37:34.059,0:37:37.329
and this is in the fall of 1986 so
0:37:37.329,0:37:40.219
we've released 4.3 we’re just
getting cranked up
0:37:40.219,0:37:43.049
to work on 4.4 um
0:37:43.049,0:37:45.259
remember that VM thing
0:37:45.259,0:37:48.039
and I think by this time there is this other little
0:37:48.039,0:37:50.329
protocol MFS you may’ve heard of it
0:37:50.329,0:37:54.839
and it was felt that we ought to have that
as well
0:37:54.839,0:37:57.150
uh so bring Keith Bostick on board and
0:37:57.150,0:37:59.560
Uh one of his of requirements for coming
0:37:59.560,0:38:03.420
is that we have to agree to allow him to finish
that port of
0:38:03.420,0:38:06.539
2.11 to the PDP 11 uh
0:38:06.539,0:38:08.489
and uh you know
0:38:08.489,0:38:12.470
it's it's a real challenge to get a kernel which
at that point was about
0:38:12.470,0:38:17.239
just under 200 kilobyte of text
to fit on to a machine that has a maximum
0:38:17.239,0:38:20.299
amount of program space of 64 kilobytes
0:38:20.299,0:38:23.450
because what you have to do is to
break it into overlays
0:38:23.450,0:38:27.789
and then you map in the overly and
the granularity of mapping is 4k
0:38:27.789,0:38:28.530
okay
0:38:28.530,0:38:33.079
So there's only eight pieces that you
can remap uh
0:38:33.079,0:38:37.519
Mike and my attitude was that’s an
incredibly challenging problem and it's
0:38:37.519,0:38:41.469
probably you know intellectually very stimulating
but there's no way how we would do that.
0:38:41.469,0:38:43.139
Well if you want to do it you know
0:38:43.139,0:38:45.849
by all means you can do that in your
spare time
0:38:45.849,0:38:48.309
uh there is only three jobs you need to do
0:38:48.309,0:38:51.540
uh one is uh you need to be to answer the
phone
0:38:51.540,0:38:55.409
uh first things other than distributions like
technical questions
0:38:55.409,0:38:58.149
and answer the incoming email stream for technical
questions.
0:38:58.149,0:39:03.900
Uh do some programming and in in your spare
time you can work on the PDP 11
0:39:03.900,0:39:04.850
and no he was
0:39:04.850,0:39:08.669
had no other support for the phones and the
email
0:39:08.669,0:39:09.460
and we had
0:39:09.460,0:39:12.209
you know by this time about two thousand
0:39:12.209,0:39:14.749
uh distributions
0:39:14.749,0:39:19.730
So at any rate Keith did in fact finally
finish the PDP 11.
0:39:19.730,0:39:20.779
Uh port uh
0:39:20.779,0:39:23.029
got 2.11 out of the door
0:39:23.029,0:39:26.960
and we have a party to celebrate the fact
that he had completed this.
0:39:26.960,0:39:29.850
and part of the party was opening the window
0:39:29.850,0:39:31.240
on the fourth floor
0:39:31.240,0:39:33.519
of our uh building
0:39:33.519,0:39:38.849
and taking his PDP 11 and
ceremoniously dropping out of the window to the cement
0:39:38.849,0:39:40.979
sidewalk four stories below
0:39:40.979,0:39:43.100
to ensure that he would never
0:39:43.100,0:39:44.749
work on it again.
0:39:44.749,0:39:50.409
This was him doing this not us.
0:39:50.409,0:39:51.849
At any rate uh
0:39:51.849,0:39:53.930
Keith of course being in the front line
0:39:53.930,0:39:55.919
uh support
0:39:55.919,0:39:59.199
Uh had a lot of feedback from various users uh
0:39:59.199,0:40:00.509
in particular
0:40:00.509,0:40:03.559
there were a number of vendors that were
0:40:03.559,0:40:05.159
trying to build
0:40:05.159,0:40:05.930
uh
0:40:05.930,0:40:08.560
These network cards you could plug into a PC
0:40:08.560,0:40:10.999
that would provide TCP/IP networking
0:40:10.999,0:40:16.180
and of course the PC it was way too feeble
to actually run the code in the PC itself
0:40:16.180,0:40:17.539
so they had a outward
0:40:17.539,0:40:18.799
processor on the card
0:40:18.799,0:40:22.039
and they’d put the TCP/IP in there
that would sort of look
0:40:22.039,0:40:23.200
uh like a
0:40:23.200,0:40:26.779
file or some kind of device on
the PC and
0:40:26.779,0:40:28.900
so they would just open this thing
0:40:28.900,0:40:30.709
get connected to the network
0:40:30.709,0:40:34.939
and So of course they wanted TCP/IP
code from Berkeley along with the important
0:40:34.939,0:40:38.210
utilities like O or Rlogin and
0:40:38.210,0:40:38.659
RCP uh
0:40:38.659,0:40:42.709
by that time finally FTP and TELNET uh
0:40:42.709,0:40:45.189
and
0:40:45.189,0:40:48.909
they didn't, our standard thing was
just buy the distribution and take whatever
0:40:48.909,0:40:50.100
they need to get out of it.
0:40:50.100,0:40:52.769
But that meant they had to get an AT&T license.
0:40:52.769,0:40:57.680
By the late 80’s the AT&T
licenses or up to like a quarter million dollars
0:40:57.680,0:40:59.379
and when you're in a little
0:40:59.379,0:41:03.939
commodity PC business a quarter million dollar
cost just to get the software before you do
0:41:03.939,0:41:04.619
anything with it
0:41:04.619,0:41:06.669
was just a non-starter for them.
0:41:06.669,0:41:09.850
And so we're getting requests for just
0:41:09.850,0:41:13.199
that TCP/IP code and associated utilities.
0:41:13.199,0:41:17.479
clearly since it all been developed in Berkeley
was none of that in the original version 7 UNIX
0:41:17.479,0:41:19.910
that we started from uh
0:41:19.910,0:41:22.099
AT&T couldn’t lay any claim to that.
0:41:22.099,0:41:26.829
And so we talked to the lawyers at Berkeley and
they’re like this “How can we make money on this?” uh
0:41:26.829,0:41:29.249
because that's what they were paid to say and
0:41:29.249,0:41:33.089
so we pointed out to them that it had been developed
under a government contract and we showed them
0:41:33.089,0:41:36.630
the government contract saying that you know
this stuff done in this contract has to be
0:41:36.630,0:41:37.229
made
0:41:37.229,0:41:40.769
available to the public at reasonable cost or
whatever it said
0:41:40.769,0:41:41.380
and uh
0:41:41.380,0:41:42.100
so
0:41:42.100,0:41:45.669
it didn’t really say that but be convinced the
lawyers that it did
0:41:45.669,0:41:46.359
and so
0:41:46.359,0:41:48.369
They agreed to lead us to pull out
0:41:48.369,0:41:50.889
this chunk of Berkeley code and we
0:41:50.889,0:41:51.859
released that
0:41:51.859,0:41:52.579
under
0:41:52.579,0:41:54.980
this new license that the lawyers cooked up
0:41:54.980,0:41:59.299
uh which is the one that we today think of
as the BSD license.
0:41:59.299,0:42:03.569
And of course our goal was to the absolutely
as
0:42:03.569,0:42:07.979
free as you know free to give away as we could possibly
could the really only thing you had to do was to give due credit
0:42:07.979,0:42:08.789
to Berkeley.
0:42:08.789,0:42:12.140
Uh so this was networking release 1.
0:42:12.140,0:42:14.019
and uh it was a wild success
0:42:14.019,0:42:17.519
uh the amazing thing was that we sold at 100
we could
0:42:17.519,0:42:20.249
Buy it from Berkeley for 1000 dollars
0:42:20.249,0:42:24.169
or you could just downloaded it off UUNet
for free
0:42:24.169,0:42:28.209
and yet a thousand people chose to pay a 1000
dollars at Berkeley to get it.
0:42:28.209,0:42:30.220
and the only difference was that you got
0:42:30.220,0:42:33.660
to take a 9 track tape which many people didn't
have any way of reading
0:42:33.660,0:42:34.100
and
0:42:34.100,0:42:35.719
uh
0:42:35.719,0:42:39.869
that a piece of paper signed by the Berkeley
lawyers
0:42:39.869,0:42:42.289
essentially saying “Yes you can use this”
0:42:42.289,0:42:44.939
and that's what they were paying a 1000 dollars for
0:42:44.939,0:42:48.239
and the lawyers of course got paid something
like a hundred dollars for every one of
0:42:48.239,0:42:50.790
these that they signed because of the overhead
0:42:50.790,0:42:51.650
et cetera
0:42:51.650,0:42:54.349
they thought this was the cat's pyjamas
0:42:54.349,0:42:57.499
you know maybe the campus was making a lot of
money but their office was doing just fine Thank
0:42:57.499,0:42:59.009
you very much!
0:42:59.009,0:43:01.409
so
0:43:01.409,0:43:03.420
Uh at any rate oh
0:43:03.420,0:43:04.440
That one was
0:43:04.440,0:43:06.059
widely successful
0:43:06.059,0:43:08.309
and so there was pressure and Keith
0:43:08.309,0:43:12.369
would come inside uh someone today wants VI or somebody
wants this is or somebody
0:43:12.369,0:43:13.589
wants that
0:43:13.589,0:43:16.289
and you know we really ought to do this and uh
0:43:16.289,0:43:19.440
you know how about figuring out other parts of the
kernel.
0:43:19.440,0:43:20.559
Mike and I would
0:43:20.559,0:43:24.929
Michael and I would look at the each other we
look at Keith it’s like yah yah all right.
0:43:24.929,0:43:28.989
Uh what you figured out you know I mean
You know all entire of the C library and all
0:43:28.989,0:43:29.819
this and that
0:43:29.819,0:43:31.760
so we got to the conferences and
0:43:31.760,0:43:32.859
Keith is
0:43:32.859,0:43:36.809
putting up you know these huge list of utilities
you’ll rewrite this utility and get your name
0:43:36.809,0:43:37.729
in lights.
0:43:37.729,0:43:40.869
and uh you know and uh
0:43:40.869,0:43:43.939
So he would get this stuff sent in to him
0:43:43.939,0:43:48.529
and he would almost always just take a
bash it in Keith normal form which
0:43:48.529,0:43:54.139
usually did look a lot like what he got but
he started from clean so that
0:43:54.139,0:43:55.119
Was uh
0:43:55.119,0:43:59.229
you know good and you know it was sort of easy
you know that first someone sends in cat in.
0:43:59.229,0:44:01.450
you know someone like really go ho hog and
0:44:01.450,0:44:04.849
does that all options to LS
0:44:04.849,0:44:07.629
this is in the days before GNU software
you know
0:44:07.629,0:44:10.119
lots of options were invoked
0:44:10.119,0:44:13.079
Uh and then
0:44:13.079,0:44:15.239
one day uh
0:44:15.239,0:44:16.759
Keith comes into to report
0:44:16.759,0:44:18.470
that somebody is redoing
0:44:18.470,0:44:20.449
the TRaw family
0:44:20.449,0:44:24.099
and this is when Mike and I look at each
sort of gulp
0:44:24.099,0:44:28.190
because the next question out of
Keith’s mouth is ""How’s that kernel coming guys?""
0:44:28.190,0:44:32.299
We can't go to the UNIX conferences and say rewrite
the kernel to get your name in lights you know
0:44:32.299,0:44:36.400
so we actually have to like go through and
figure out what's
0:44:36.400,0:44:39.130
Berkeley and what's not Berkeley and
0:44:39.130,0:44:40.499
segregate stuff out uh
0:44:40.499,0:44:43.459
A long story but eventually we get
0:44:43.459,0:44:45.599
something we feel that was clean
0:44:45.599,0:44:47.929
and uh so
0:44:47.929,0:44:51.699
we go back to the lawyers and say we
got this little update to the networking tape
0:44:51.699,0:44:52.989
that we'd like to do
0:44:52.989,0:44:59.079
uh that uh we're going to call it networking
release 2 Net 2 and
0:44:59.079,0:45:00.470
so actually
0:45:00.470,0:45:04.599
we do sort of come on and explain it is practically
the entire system and
0:45:04.599,0:45:07.759
lots of stuff happens but they finally sign
off on it
0:45:07.759,0:45:09.469
and we put it out there
0:45:09.469,0:45:14.519
and it's out there for good half a year before
BSDi
0:45:14.519,0:45:17.499
sort of fills in the missing bits and starts selling
it
0:45:17.499,0:45:19.650
they you know
0:45:19.650,0:45:21.439
engineers are
0:45:21.439,0:45:23.230
not really that good at
0:45:23.230,0:45:25.419
marketing and so
0:45:25.419,0:45:28.859
in particular they think that the sort of
cutesy things like
0:45:28.859,0:45:32.729
having your phone number being 1800
itsUNIX
0:45:32.729,0:45:38.759
and adds to save a ninety nine percent of the
price of a AT&T charges for source code
0:45:38.759,0:45:40.439
Uh are cute
0:45:40.439,0:45:41.670
But it really irritates
0:45:41.670,0:45:44.759
the piss out of AT&T
0:45:44.759,0:45:46.270
And so they sue us
0:45:46.270,0:45:49.319
imagine that why they sue BSDi
0:45:49.319,0:45:53.509
and BSDi is what added only these 6
files and you know all the rest came from Berkeley.
0:45:53.509,0:45:57.129
So we would be happy to talk about any of
the six files you’d like to
0:45:57.129,0:45:59.530
uh but otherwise you know forget it
0:45:59.530,0:46:01.009
and the judge agrees
0:46:01.009,0:46:04.539
because they don't have any problem about
those six files and so
0:46:04.539,0:46:07.769
there's no choice but to sue the University
0:46:07.769,0:46:09.259
and uh
0:46:09.259,0:46:11.160
that’s another long story in which I did
0:46:11.160,0:46:12.629
become an expert witness
0:46:12.629,0:46:14.390
which is actually proven
0:46:14.390,0:46:18.809
to be a relatively lucrative thing because
being an expert witness
0:46:18.809,0:46:20.039
it's something that you
0:46:20.039,0:46:24.669
it's really hard to break into that because
one wants to hire someone hasn't done it before
0:46:24.669,0:46:28.359
and it turns out that it really didn't
matter how much you know, do
0:46:28.359,0:46:33.829
you have a PhD because if you have PhD by definition
you must know you're talking about
0:46:33.829,0:46:34.859
I'm not making this up.
0:46:34.859,0:46:36.219
and number two is
0:46:36.219,0:46:40.839
How you speak in public then you know especially
people harassing you, well I've had ten thousand
0:46:40.839,0:46:41.830
students you know
0:46:41.830,0:46:45.309
there's not a question that a graduate student
has never asked me that I hadn't dealed with,
0:46:45.309,0:46:51.309
and lawyer is not up to a graduate student.
0:46:51.309,0:46:53.219
So I did pretty well that score too
0:46:53.219,0:46:55.129
uh and so
0:46:55.129,0:46:57.599
because I that they were forced to use me
in this case.
0:46:57.599,0:47:00.080
And but I did ran after then
0:47:00.080,0:47:03.879
the lawyer the outside lawyer that the Berkeley
got me to do some other stuff and
0:47:03.879,0:47:08.800
one thing leads to another so today I am uh
an expert in the
0:47:08.800,0:47:12.989
network compliance vs SUN microsystem
lawsuit vs ZFS lawsuit
0:47:12.989,0:47:14.439
which is uh
0:47:14.439,0:47:17.739
an interesting story that you can ask over
beer
0:47:17.739,0:47:18.679
At any rate
0:47:18.679,0:47:21.629
we eventually win the lawsuit
0:47:21.629,0:47:26.089
And uh and we don't win it we settle the
lawsuit excuse me I have to use proper terminology
0:47:26.089,0:47:27.029
here.
0:47:27.029,0:47:28.750
We have to agree
0:47:28.750,0:47:32.999
that networking release 2 did in fact have
things in it that infringed
0:47:32.999,0:47:34.490
uh and
0:47:34.490,0:47:35.999
however
0:47:35.999,0:47:40.329
Uh the things that infringe were sufficiently
minor that with some
0:47:40.329,0:47:40.730
changes
0:47:40.730,0:47:42.039
uh we can
0:47:42.039,0:47:43.370
get something that's clean
0:47:43.370,0:47:45.959
we agreed that we will re-release
0:47:45.959,0:47:50.890
we'd do new release that has all these
changes made in it as 4.4 BSD lite.
0:47:50.890,0:47:54.449
So it’s 4.4 BSD which is the whole
thing complete with AT&T stuff and the
0:47:54.449,0:47:56.059
AT&T licenses
0:47:56.059,0:47:57.580
and for 4.4 BSD lite
0:47:57.580,0:48:00.979
which is got the stuff, the AT&T stuff stripped out
of it.
0:48:00.979,0:48:04.869
And AT&T really thought they’d won big-time
because all these people had been using the
0:48:04.869,0:48:05.509
Net 2.
0:48:05.509,0:48:08.909
They're going to be forced to throw it out
because we’re not allowed to tell what the changes
0:48:08.909,0:48:09.640
were
0:48:09.640,0:48:12.729
and have to start all over again
0:48:12.729,0:48:14.929
from lite
0:48:14.929,0:48:19.339
And the Bill Jolitz in particular just never did that
and so that's why this distribution got hammered
0:48:19.339,0:48:22.150
FreeBSD had to do it
0:48:22.150,0:48:24.329
the netBSD folks had to do it uh
0:48:24.329,0:48:26.289
and it was a huge amount of work but they
did it
0:48:26.289,0:48:30.489
and it was great because we got two more years
worth of our technology out
0:48:30.489,0:48:32.959
at any rate, that,
0:48:32.959,0:48:36.289
we actually did one more incremental sort of the
release, like 2
0:48:36.289,0:48:39.510
I would just fix some of the most egregious
bugs
0:48:39.510,0:48:43.309
that’s what all happened was we got all these people
who bought this BSD lite licenses
0:48:43.309,0:48:46.519
Because they wanted to pay the
thousand dollars to get the piece of paper
0:48:46.519,0:48:46.940
saying
0:48:46.940,0:48:48.899
and this one's fine too
0:48:48.899,0:48:49.640
and uh
0:48:49.640,0:48:52.819
so we had a chunk of money and so Keith
and I just sort of worked
0:48:52.819,0:48:54.689
through that money
0:48:54.689,0:48:56.329
and it's just spend it
0:48:56.329,0:48:58.640
essentially doing bug fixes and stuff on lite
0:48:58.640,0:49:00.839
And finally released when the money ran out then
0:49:00.839,0:49:03.769
we left the university and that was the last release
0:49:03.769,0:49:05.679
Uh from from Berkeley
0:49:05.679,0:49:12.679
and that is the end of my story
So any questions?
Uh .. Yes
0:49:20.069,0:49:21.929
Sorry.. uh VM system
0:49:21.929,0:49:25.359
VM system yes.
0:49:25.359,0:49:30.579
So the VM system was actually sort of an interesting
story uh..
0:49:30.579,0:49:33.759
Actually both VM and NFS were interesting
Stories.
0:49:33.759,0:49:36.890
The VM system uh
0:49:36.890,0:49:41.160
one of our attitudes was that why always come
up with a good idea when you can steal a better
0:49:41.160,0:49:42.759
one and
0:49:42.759,0:49:46.369
you know it's just a lot of work to write
a VM system this uh
0:49:46.369,0:49:47.579
you know that BSD folks
0:49:47.579,0:49:48.599
clearly know
0:49:48.599,0:49:49.530
and
0:49:49.530,0:49:50.889
uh so
0:49:50.889,0:49:54.539
we looked around to see if there's anything
that we could use
0:49:54.539,0:49:57.969
rather than have to write it from the scratch
ourselves, and
0:49:57.969,0:50:01.689
evaluated two different things. One
was
0:50:01.689,0:50:04.759
uh the stuff that SUN had done
0:50:04.759,0:50:10.109
and the other was the stuff that had been done at
Carnegie Mellon under the Mach thing and
0:50:10.109,0:50:14.069
Uh they've done a whole lot of very good work
on the VM system we didn't really agree with
0:50:14.069,0:50:18.179
the micro-kernel principle but we liked
the VM system
0:50:18.179,0:50:21.589
and so we talked to SUN about potentially
0:50:21.589,0:50:23.479
Contributing uh
0:50:23.479,0:50:27.159
chunk of their VM system we talked to them
about contributing a chunk of their
0:50:27.159,0:50:27.949
VFS stuff.
0:50:27.949,0:50:31.649
We knew that we couldn’t get NFS from them but
0:50:31.649,0:50:32.659
they they you know
0:50:32.659,0:50:36.809
the folks at SUN sorts of in engineering were too
enthusiastic about it and percolated it all the way
0:50:36.809,0:50:39.459
up to the Scott McNealy, he was the CEO at that
time
0:50:39.459,0:50:42.979
and even Scott McNealy was pretty enthusiastic about
giving the stuff to Berkeley.
0:50:42.979,0:50:45.239
you know as long as SUN would get credit for
it
0:50:45.239,0:50:47.140
And uh
0:50:47.140,0:50:51.549
so it really got to the point where it
is needed to be signed off by the SUN
0:50:51.549,0:50:52.429
lawyers
0:50:52.429,0:50:58.919
and so they sent it off to them and after that SUN
lawyers came back and said,
0:50:58.919,0:51:03.199
“Well you know your stock holders could accuse you of
giving away company property
0:51:03.199,0:51:07.309
and and sue you in court and we really don't
recommend that you do this.”
0:51:07.309,0:51:08.380
and so
0:51:08.380,0:51:09.999
that the very last minute it was ..
0:51:09.999,0:51:12.779
We couldn't get any of that stuff from SUN.
0:51:12.779,0:51:14.699
So we ended up
0:51:14.699,0:51:17.859
adopting this stuff from Mach
the Mach VM system
0:51:17.859,0:51:18.699
and
0:51:18.699,0:51:22.369
so it fell to myself to take that and
0:51:22.369,0:51:24.669
figure out essentially how to plug it in.
0:51:24.669,0:51:27.140
and the problem was the old VM system
0:51:27.140,0:51:32.259
was very portable provided you were porting
into something that looked a lot like a VAX.
0:51:32.259,0:51:37.429
because it came down to uh you know the that the
basic page data structure was the VAX
0:51:37.429,0:51:38.979
page data structure.
0:51:38.979,0:51:40.590
and so when people would port it.
0:51:40.590,0:51:44.440
If they have something with the page data structure
to look different they wouldn't take it from
0:51:44.440,0:51:48.360
the VAX and they'd shuffle the bits around and put
it in the right order and then dropped it into
0:51:48.360,0:51:50.829
the whatever that architecture was
0:51:50.829,0:51:55.509
a page table. So it worked pretty well for porting
into the Motorola uh because the
0:51:55.509,0:51:57.959
MMU network was a lot like the VAX
uh
0:51:57.959,0:52:01.899
and some other machines but in other ways it
just really didn't cut it at all
0:52:01.899,0:52:06.130
whereas the VM had been done by
the the folks at CMU.
0:52:06.130,0:52:09.389
In Mach was uh you know
0:52:09.389,0:52:11.059
very elegantly designed
0:52:11.059,0:52:13.150
uh and in fact
0:52:13.150,0:52:14.740
it had in some ways
0:52:14.740,0:52:18.980
too many bells and whistles and too many options
and because a lot of sort of dead ends they
0:52:18.980,0:52:21.189
just sort of left hanging there
0:52:21.189,0:52:22.589
Uh but uh
0:52:22.589,0:52:26.200
the structure itself was nicely done about it was
about 90% machine independent code
0:52:26.200,0:52:28.459
10 % machine dependent code so that
0:52:28.459,0:52:30.119
a well defined interface.
0:52:30.119,0:52:32.239
the PMAC interface.
0:52:32.239,0:52:34.359
and so got that put in and of course we
0:52:34.359,0:52:40.019
did it onto the Berkeley MMAP Interface
rather than what they did
0:52:40.019,0:52:42.700
with uh ports and so on
0:52:42.700,0:52:43.160
Uh and
0:52:43.160,0:52:48.210
So I got that together sort in the that
the 4.3 phase I didn’t talk about there were
0:52:48.210,0:52:51.130
two releases between 4.3 and 4.4
4.3
0:52:51.130,0:52:53.789
Tahoe and 4.3 Reno and
0:52:53.789,0:52:56.689
the first of them having the VM and the
0:52:56.689,0:52:58.099
second one having the NFS in it.
0:52:58.099,0:52:59.759
And uh
0:52:59.759,0:53:01.499
so
0:53:01.499,0:53:05.529
that got put out and then luckily people would feel
sort of look at it and said well you know
0:53:05.529,0:53:07.709
this really needs like a lot of work
0:53:07.709,0:53:11.699
so Mike Hibler, at the University of Utah did a tremendous
amount of the clean up in it.
0:53:11.699,0:53:16.489
and then later actually after we release
lite BSD in agreement
0:53:16.489,0:53:18.719
David Greenman did a whole lot more work on it.
0:53:18.719,0:53:22.069
really were just throwing tons of shit out
that shouldn’t have been at first place.
0:53:22.069,0:53:26.559
I had this whole notion of an external user
driven pager which was nice but the cost
0:53:26.559,0:53:30.129
of all the extra context switching other
things that would happen on pagefault was sort of
0:53:30.129,0:53:32.549
a killer uh
0:53:32.549,0:53:39.479
And so at any rate that's that's how the the
VM system got in there.
0:53:39.479,0:53:40.420
Any more questions?
0:53:40.420,0:53:45.349
See I can take like five minutes to answer
one question.
0:53:45.349,0:53:45.599
All right ! Well Thank You very much.