back to indexBrendan Eich: JavaScript, Firefox, Mozilla, and Brave | Lex Fridman Podcast #160
link |
The following is a conversation with Brendan Eich,
link |
creator of the JavaScript programming language,
link |
cofounder of Mozilla, which created the Firefox browser,
link |
and now cofounder and CEO of Brave Software,
link |
which has created the Brave browser.
link |
Each of these are revolutionary technologies.
link |
JavaScript is one of the most widely used
link |
and impactful programming languages in the world.
link |
Firefox pioneered many browser ideas that we love today
link |
or even take for granted today,
link |
and Brave is looking to revolutionize
link |
not only the browser, but content creation online
link |
and the nature of the internet
link |
to make it fundamentally about respecting
link |
people's control over their data.
link |
Quick mention of our sponsors.
link |
The Jordan Harbinger Show,
link |
Sun Basket Meal Delivery Service,
link |
Better Help Online Therapy,
link |
and AidSleep Self Cleaning Mattress.
link |
Click the sponsor links to get a discount
link |
and to support this podcast.
link |
As a side note, let me say that there's a tension
link |
between theory and engineering
link |
that I've been thinking a lot about.
link |
I tweeted something like,
link |
"'Good execution is more important than a good idea,
link |
"'but one helps the other.'"
link |
I think the wording of that sucks,
link |
but what I mean is a good idea is a must,
link |
but in my experience, good ideas are in abundance.
link |
Good execution, on the other hand, is rare.
link |
I think some mix of good timing, good idea,
link |
and good execution is essential.
link |
Getting that mix right is tough,
link |
and Brendan, somehow, multiple times in his career,
link |
I'm starting to believe it's more art than science,
link |
like most interesting things in life.
link |
If you enjoy this thing, subscribe on YouTube,
link |
review an Apple podcast, follow on Spotify,
link |
support on Patreon, or connect with me on Twitter
link |
And now, here's my conversation with Brendan Eich.
link |
When did you first fall in love with programming?
link |
I didn't program a lot when I was in high school,
link |
but I had a friend who had a Commodore PET,
link |
and after we saw Star Wars, he said,
link |
"'Hey, let's make a basic program
link |
"'that does the Death Star Trench run.'"
link |
And it was just simple 2D graphics,
link |
and I didn't know what I was doing,
link |
so I just helped him out on the math and stuff like that.
link |
I was a math and science kid.
link |
I was really into the HP calculators of the early mid-'70s.
link |
These were the RPN.
link |
They were really strongly built,
link |
and as Arik Goldfinger said of gold, divinely heavy.
link |
There's probably some gold in them, too, gold metalization.
link |
But they were awesome calculators,
link |
and they had all the scientific functions,
link |
so I was really into that.
link |
So I aimed toward physics.
link |
I was a little late for the, I think,
link |
the 20th century golden age,
link |
and I read a lot of science fiction,
link |
so I was like, yeah, it's on the hyperdrives
link |
and warp drives, and physics was not gonna get there quickly,
link |
and I started hacking on computers
link |
while I was studying physics as an undergraduate
link |
at Santa Clara University,
link |
and I dodged the Fortran bullet
link |
because I was in the science department
link |
instead of the engineering department,
link |
where they still did Fortran card decks.
link |
I think they had an auto collator.
link |
But we were using Pascal,
link |
and I got one of the first portable C Compilers ports
link |
to the DEC minicomputers we were using,
link |
and I fell in love with programming
link |
just based on procedural abstraction, Pascal,
link |
just what now would be considered old school,
link |
like structured programming from the 70s.
link |
Niklaus Wirth, the creator of Pascal,
link |
was a good writer and a good pedagogue, right?
link |
He always at ETH would do these courses
link |
where it's like build your own computer,
link |
build your own compiler, build your own operating system.
link |
It was scratch. Yeah, kind of.
link |
And I know some people who were grad students under him
link |
and said he would torture the students
link |
with things like this custom email system
link |
that had 25 word limit and things like that.
link |
I unfortunately dodged both the Pascal
link |
and the Fortran bullets.
link |
Could you maybe linger on the Pascal?
link |
What kind of programming language was it?
link |
What is it reminiscent of today?
link |
Because it sounds like it may have had an impact
link |
on your own trajectory.
link |
Yeah, it was in the ALGOL family,
link |
and ALGOL was the big successful language design
link |
and compiler project in the 60s.
link |
It had a successor called ALGOL 68,
link |
which was ambitious but not as successful.
link |
But Pascal was kind of wordy procedures
link |
and functions language.
link |
It distinguished between functions
link |
which return a value and procedures which don't,
link |
which just compute.
link |
And you could say that whole ALGOL family went into ADA.
link |
Pascal had a second life thanks to Borland
link |
with Turbo Pascal, which was hugely successful.
link |
I think in large part due to Anders Helberg,
link |
who then went to Microsoft and did C Sharp and done that
link |
with his team there and has done really well
link |
doing TypeScript, type JavaScript.
link |
So yeah, there's a lineage here.
link |
But I was also interested in C and Unix
link |
by the time I was an undergrad
link |
because people were bringing Unix up
link |
on all sorts of hardware.
link |
I had some friends who were doing
link |
their own wirewrapped computers, 6820 maybe.
link |
And I was wirewrapping for my engineering course,
link |
6809 or something simpler, building a computer on a board.
link |
And I wanted to build a more ambitious one
link |
and port Unix to it, but I picked the wrong processor.
link |
I picked the National Semiconductor NS16032,
link |
which was this amazing, you know,
link |
CISC, complex instruction set computer,
link |
and not the reduced instruction set computers
link |
that were just being contemplated into the mid eighties.
link |
And RISC ultimately went out.
link |
RISC won in some ways, it dissolved into,
link |
you have both now, you have these super scalar architectures
link |
where like Intel has kept probably too much
link |
backward compatibility at the instruction level,
link |
but that's just, there's a front end that parses that
link |
into these, you know, these wide internal instructions.
link |
So, you know, the very long instruction word research
link |
that was also interesting at the time
link |
kind of became the micro architecture
link |
inside the backward compatible Intel.
link |
But I picked a National Semi chip
link |
and it never got made successfully.
link |
It was full of bugs and I never could have brought it up.
link |
But I went on out of physics after three years
link |
into math, computer science.
link |
And like I said, I did it because I saw,
link |
I was being sort of childlike and naive about physics.
link |
And I thought, meanwhile, the Valley is go go for computers.
link |
The Apple II, right?
link |
The PC, the Intel 8086, 8088 based PC,
link |
the IBM, you know, gave Microsoft the future for,
link |
you know, somewhat fishy deal.
link |
So it was wide open in the computing space,
link |
but in physics, you were as optimistic about physics as?
link |
No, I mean, I was one of three brothers
link |
who were all in the same grade.
link |
I have a twin and a younger brother who skipped second grade
link |
and was with us the whole time after that.
link |
And, you know, he went on,
link |
he actually studied under Kip Thorne at Caltech.
link |
But he also didn't, he ended up in software.
link |
He didn't talk about physics stuff.
link |
Does it make you sad that theoretical physics,
link |
even with string theory,
link |
hasn't really had any foundational breakthroughs
link |
in the latter part of the 20th century?
link |
Yeah, in fact, I'd say the problem is theory
link |
I would say, you know, we need more Aristotle
link |
You know, mathematics is not all physical.
link |
There are lots of mathematics that cannot be realized
link |
as far as I know in this world.
link |
So to understand the world, you need to do experiments.
link |
You need to not just dream up inductive theories
link |
that could have lots of alternative theories
link |
competing with them, with no way to decide between them,
link |
except aesthetics, which is not a good guide in my opinion.
link |
Yeah, I don't know if you are friends
link |
or have a relationship with Elon Musk.
link |
Where's the, in terms of like what you would love to see
link |
our society investing in, building up,
link |
is it closer to Elon or is it closer to Feynman
link |
and Einstein and those?
link |
Well, those gentlemen are no longer with us
link |
and I think that's noticed.
link |
So like I said, the real glory days of physics,
link |
the famous pictures from Germany before the second war
link |
were just a fantastic assembly of brains,
link |
Schrodinger and Einstein.
link |
And physics, I think, took a wrong turn
link |
that maybe all of, I would say, Western science
link |
took in going for models over reality, right?
link |
You see this in all sorts of fields.
link |
Now, we can build models that are very predictive
link |
and generative and then we build actual devices
link |
or semiconductors, things like that.
link |
That's good, I'm not dismissing that.
link |
We need good models, we need to experiment
link |
and prove them and test them.
link |
But the problem I've seen in physics,
link |
which you see certainly in economics, the dismal science,
link |
and you see surprisingly in other so called hard sciences
link |
is models that don't really have to be
link |
tested against reality.
link |
They can instead become policy tools
link |
or they can become, like I said,
link |
one of a large family of alternate theories
link |
that could be as predictive
link |
but nobody's doing the winnowing out.
link |
That's such an interesting tension in society.
link |
You see this in even the software scientists
link |
which have a deep love for psychology.
link |
You see this in epidemiology, not with the virus.
link |
There's this tension of how much of the world
link |
can we understand through just a beautifully fit model?
link |
And then at the same time, my main work
link |
is in machine learning where it's like
link |
there is no provable thing usually.
link |
It's all about just getting the right data set
link |
and getting tricks and so on.
link |
And there's this tension even in my own soul
link |
of I grew up on theoretical computer science.
link |
I loved approximation algorithms,
link |
all of that different complexity classes,
link |
just those little puzzles.
link |
I mean, I don't know, to you as somebody
link |
who was in math and computer science
link |
and then ended up going into places
link |
where you engineer some of the most impactful things
link |
in this world, do you see the P versus NP,
link |
all that whole space is interesting at all?
link |
Yeah, it's not that useful in practice.
link |
People are using it with sort of crypto analysis
link |
or asymptotic arguments about can we have
link |
a quantum resistant crypto algorithm, things like that,
link |
which may not be practical, right?
link |
If you follow Mikhail Diakonov or Gil Kalai,
link |
there are big questions about how quantum computing
link |
will scale up, how practical it will be.
link |
Is that something that you think about quantum computing?
link |
Not except for spare time.
link |
Like you said, I'm not using this kind of computer science
link |
in practice because almost everything now is engineering
link |
and finding ways to get computers
link |
to be more useful for people,
link |
which goes from design problems,
link |
which are really kind of an art.
link |
Like you said, anything you can't automate is an art.
link |
Well, we can have machine learning compose music
link |
and it can imitate, you can train it,
link |
and it can sound kind of decent,
link |
but maybe lacking that je ne sais quoi.
link |
But user interface still, I think, requires human art.
link |
So speaking of things that didn't follow
link |
a perfect theory and model, JavaScript,
link |
so there's two things.
link |
One, it had an impact on the world at a huge scale,
link |
obviously, and it also still is one of probably
link |
the most popular programming language in the world.
link |
So can we go back to the origin story?
link |
Can you tell the story of how JavaScript was created?
link |
Yeah, I was at Silicon Graphics
link |
after graduate school for seven years,
link |
and it got to be big and successful
link |
and divisionalized and political,
link |
and I thought kind of boring.
link |
And a friend who'd been there went to one of the last
link |
of the super companies, the super startups
link |
There were several.
link |
I suppose General Magic was a little after that
link |
around the same time.
link |
But Micro Unity was that company that I went to,
link |
and it was because my friend Jeff Weinstein
link |
had gone there from Silicon Graphics.
link |
He recruited me, and Micro Unity was doing everything.
link |
So this was like the ultimate sort of pretend grad school.
link |
It was doing a new fab, new semiconductor process.
link |
It was doing new analog and digital circuits
link |
on the same very large but not wafer scale chip.
link |
Originally, it was five centimeters on a side.
link |
It was really hot too, so I needed a water cooler.
link |
It was a Craykiller, and then they shrunk it,
link |
and they tried to do a home sort of media processor
link |
that was essentially a barrel processor.
link |
But you could think of trying to do all the things
link |
that we now see in modern architectures
link |
with short vector instructions
link |
and sort of wide instructions or multiple issue,
link |
and doing a lot of the stuff in software
link |
because the second iteration, the set top box,
link |
was really for avoiding the cost to the cable company
link |
of rolling the trucks out
link |
to replace your garbage General Atlantic set top box
link |
with a totally newer, less garbagey one.
link |
So if you could have software gradable set top boxes,
link |
the cable companies thought they could save a lot of money
link |
Is this assembly, or which level of the software?
link |
It was like, we were writing in, we were using GCC.
link |
We were writing C++ and C.
link |
Somebody I worked with there, really very smart guy,
link |
hired from a sort of Wall Street
link |
hotshot programming consultancy,
link |
did his own hardware design as well as software.
link |
And we were working on how to make
link |
not only a short vector units,
link |
but general bit shufflers and permuters.
link |
So you could do things like crypto algorithms efficiently,
link |
and you could do demodulation of the cable,
link |
complex quadrature amplitude modulated signal.
link |
So you're basically taking A to D converters,
link |
dumping things in buffers,
link |
and then doing the rest in software.
link |
All the framing and the Reed Solomon and Viterbi
link |
and all that error correction.
link |
So that was really great learning experience,
link |
but it was not gonna work.
link |
It was doing too many risky things at once, right?
link |
If you, as Jim Clark said to me,
link |
when I hopped to Netscape after three years at MicroUnity,
link |
he said, oh yeah, you do 10 things each,
link |
one in 10 odds, it's gonna be one in 10 billion, right?
link |
The multiplication principle.
link |
So, Netscape was already a rocket,
link |
and I passed the chance to go there in 1994.
link |
I knew the founders because I worked at SGI,
link |
Could you pause for a second in Netscape?
link |
When was the launch of this rocket?
link |
94 was the launch of Netscape?
link |
And I went there in early 95 in April.
link |
Okay, so you said you missed the launch.
link |
Well, I missed the first floor employment opportunity,
link |
but the IPO was August 1995, so I was there for that.
link |
How obvious was it that Netscape was like world changing?
link |
What was the layout?
link |
Was Netscape one of the first big browsers?
link |
Yes, so when I was at MicroUnity still in 93,
link |
we saw a browser called Mosaic.
link |
And up till then, we'd used email and we'd used Usenet,
link |
the NNTP protocol, we'd use news readers, we used FTP,
link |
we used all these old internet protocols,
link |
all relying on the DNS and TCP IP and UDP for that matter.
link |
When I was at Silicon Graphics,
link |
we brought up the whole stack, right?
link |
We had to discover how to find the ethernet addresses
link |
on your network and then find IP addresses for them,
link |
ARP protocol, all that stuff.
link |
And it was great because nobody knew in the 80s
link |
what was gonna win, all the proprietary stacks
link |
like IBM, SNA and DeckNet and all these other protocols
link |
were saying, we're gonna do it
link |
or it's gonna be heterogeneous future.
link |
And instead it was Berkeley Unix and the TCP IP stack
link |
that dated back to the ARPANET that won.
link |
And I think we knew it, we all knew it at SGI,
link |
but the salespeople didn't.
link |
And so they kept trying to get multiple network stacks
link |
interoperating, but in the end it won.
link |
And so that was the internet and it was email and texty
link |
and it was used and very texty.
link |
And then Tim Berners Lee did his thing,
link |
but I don't think I was paying attention.
link |
And I think the date when he first did it
link |
or when he wrote the famous emails and pushed back to 89,
link |
but I noticed a mosaic in 93 because one of the things
link |
that Mark Andreessen and Eric Bina did at NCSA
link |
was they innovated on the early HTML standard.
link |
They in particular Mark sent this email saying,
link |
hey everybody, we think you should be able
link |
to put an image in a page.
link |
And you know when he sent that Eric Bina had already
link |
And I talked to Tim Berners Lee more recently
link |
just a few years ago and he was like,
link |
oh, we had another way of doing it and it didn't work out
link |
because Mark shipped his in mosaic.
link |
And this convinced me of several things.
link |
One, the internet meant there was a huge first mover
link |
advantage and being fast, getting on first mattered a lot.
link |
And so Richard Gabriel of scheme and poetry fame
link |
has written about this, the famous.
link |
What's poetry? Well, he's a poet.
link |
Oh, actual poetry.
link |
Is he talking about some kind of something?
link |
I mean, he's the founder of Lucid,
link |
which is where Jamie Zawinski worked before Netscape.
link |
And Lucid was doing compilers and Lucid Emacs,
link |
which was a fork of Emacs,
link |
famously Jamie fighting against Richard Stallman, Stalmax.
link |
And so Richard Gabriel, very, very brainy computer guy,
link |
but also a poet, but he wrote a nice essay
link |
that gets abused all the time.
link |
In fact, Jamie's put a kind of warning in front
link |
of his version of it on his site,
link |
JWC.org called Worse is Better.
link |
And this is about survival advantage of software
link |
in the network world, in my opinion.
link |
It started out being framed as Unix and Lisp,
link |
good news, bad news, because all the Lisp people,
link |
the MIT people were like, oh, you know,
link |
the crown jewel scheme, this Faberge egg or Common Lisp,
link |
this giant cathedral, of course we're going to win.
link |
This is civilization.
link |
And those, you know, those farmers in New Jersey
link |
to borrow from the Sopranos, those picks down at Bell Labs,
link |
they're just, you know, there's nothing sound there.
link |
Well, guess what won?
link |
Wow, so you're saying this is a fundamental,
link |
like principle of the internet is moving fast wins.
link |
You could say in almost any network system,
link |
like in biological evolution,
link |
you see successful alleles sweep populations
link |
and they don't always have, you know,
link |
they aren't free of flaws.
link |
They're heterozygous advantage, right?
link |
You can get both parents give you the gene variant
link |
and you get sickle cell anemia, right?
link |
But if one of them does, you're more resistant to malaria.
link |
And so this isn't a beautiful process,
link |
except at large scale.
link |
And then you realize that because it moves fast
link |
and can adapt, it can win.
link |
And people still struggle with this.
link |
I used to struggle with this
link |
because JavaScript was done in such a hurry
link |
and the force of web compatibility meant
link |
early mistakes couldn't be fixed.
link |
And even the standards process injected new mistakes,
link |
But often standards bodies go back
link |
and making compatible changes.
link |
You can't do that with the web.
link |
It's more like, again, like biology,
link |
you preserve what still works.
link |
You don't want to break ATP metabolism or whatever.
link |
So you have to kind of resign yourself to the reality
link |
of worse is better being enshrined
link |
in actual design points you might not like.
link |
And that happened with JavaScript and I'm way over it,
link |
but it also, I think was a huge advantage.
link |
That's why JavaScript has kind of swept
link |
a lot of programming domains.
link |
People will say, oh, it's not because of merit.
link |
Well, you're right.
link |
But we also improved it over time in the standards body.
link |
I spent 20 years doing that.
link |
And you don't get that choice.
link |
It's like, I'm not saying that that was the best language.
link |
I'm just saying that was the right time to do it.
link |
And I like to say the alternative was not to do it.
link |
I could have told Netscape, I can't do this.
link |
And it would have been visual basic script.
link |
And it would have been bad.
link |
So that's a good way to present the alternative.
link |
But so it was a Netscape and you have written it
link |
in how many days and why was it only that many days?
link |
And what was the goal and the underlying principles
link |
in your mind at the time?
link |
So the whole, I'm sort of describing worse is better
link |
in a frenetic way because it fit the model of Netscape.
link |
When it was known that Jim Clark
link |
and Marc Inves were founding Netscape
link |
and they did the first release in 1994,
link |
that browser took over from Mosaic.
link |
In fact, that's why Mozilla is called that.
link |
It's the Mosaic killer.
link |
It's like the giant monster that kills Mosaic.
link |
And they knew they could, it wasn't that, again,
link |
it's not like you're doing advanced scientific research
link |
that is changing the world.
link |
You're more like taking down the last iteration
link |
on the browser, Marc did, which had images
link |
and other importances before he stopped working on it.
link |
And you're making Netscape the new thing that has images,
link |
plugins, which was the way to do video back in the day.
link |
It had something that's kind of died now for tiled windows
link |
called frames and frame sets.
link |
HTML tables, that was new.
link |
Eric Bina did tables in Netscape 1.1.
link |
So when I got there, they were heading toward IPO.
link |
Clark wanted the IPO early, I think his instinct was right.
link |
And that kicked off the whole dot com era, right?
link |
There was a recession in the US in 91.
link |
You can see old law and order reruns
link |
where they talk about the recession
link |
and how hard it's hitting New Yorkers.
link |
And after that, Greenspan really goosed things
link |
at the Federal Reserve and technology had been sort of
link |
fermenting in a way that came together with the internet.
link |
And Netscape made it possible to do pets.com,
link |
to do eBay, to get people to recognize a URL on a billboard
link |
and then type it in when they get home.
link |
And that was huge.
link |
That was so fast moving a rocket that Marc
link |
and the engineering team there thought,
link |
we need to make this a programmable browser,
link |
not just a document viewer, not just a video.
link |
It was all HTML with images and tables and also,
link |
like you said, frames.
link |
There was no dynamic element at all.
link |
Yeah, the most dynamism we get was from a plugin,
link |
which there are a few of them then.
link |
Flash didn't exist at that point.
link |
Java Applets yet or no?
link |
Well, that's the thing we did to deal with Sun.
link |
In fact, I was recruited to go do Scheme in the browser.
link |
Remember Guy Steele and Gerald Sussman's
link |
beautiful Lisp variant?
link |
I was gonna do it in the browser
link |
because my friends from SG, I thought,
link |
hey, we like Scheme, you like Scheme.
link |
And I'm like, I hardly ever use Scheme.
link |
It's not really used in industry,
link |
except in sort of silos, but I like it.
link |
Okay, I'll come do Scheme in the browser.
link |
I have a slide from my 2017 talk
link |
where I have Bruce Willis crawling through the duct
link |
He's like, come out to the coast, have a lot of fun.
link |
Come on, do Scheme in the browser.
link |
But when I got there, there was no Scheme in the browser
link |
because they'd started a deal with Sun Microsystems.
link |
And my best contact there was Bill Joy,
link |
who I admired as a Berkeley Unix founder.
link |
And, you know, Sun founder.
link |
And Bill got the idea of making the browser programmable too.
link |
And so the main idea was to put the Java VM,
link |
which at that point was not really easy to embed,
link |
into Netscape, including the Netscape version on Windows
link |
that was still most popular,
link |
which was the 16 bit Windows 3.1, which was going away.
link |
Microsoft was coming out with Windows 95
link |
and everyone was afraid they were gonna do
link |
Internet Explorer, I guess, two at that point,
link |
three the next year.
link |
They already bought or invested in somehow Spyglass,
link |
this other company that shot out from NCSA
link |
at University of Illinois.
link |
And in fact, Microsoft had tried to buy Netscape
link |
in late 94, before I got there.
link |
And I heard about this later.
link |
I heard they offered way too little money.
link |
And so, you know, Jim Barksdale and Jim Clark said,
link |
get out of here, you know, pound sand.
link |
But then they realized, oh, this is going to hurt us
link |
because now they're gonna copy us.
link |
Didn't happen right away.
link |
I'm not sure when Gates internet title wave memo
link |
That's the famous memo he wrote when Bill Gates realized
link |
that Microsoft was going down this old copy AOL path
link |
or copy CompuServe path, a project called Blackbird,
link |
presumably after the SR71, I don't know.
link |
But they were gonna make a, you know,
link |
dial up service with a custom content language stack
link |
and custom rendering.
link |
It wasn't the web.
link |
You know, they could have content partners.
link |
They have a lot of money,
link |
but it still wasn't to scale the web.
link |
It wasn't gonna be compelling.
link |
And Gates realized this,
link |
and he turned the company on a dime
link |
and they couldn't buy Netscape.
link |
Again, I'm not sure the timing,
link |
so they decided to copy it.
link |
And once we realized that everybody inside Netscape
link |
felt even more urgency and more of a frenetic mood.
link |
And so my chance to do scheme disappeared
link |
when the Java deal started brewing.
link |
But there was still a chance to do a companion language
link |
to Java because Java was a compiled,
link |
is a compiled language.
link |
It's evolved and improved quite a lot since then too,
link |
but it was for sort of serious advanced programmers
link |
that cost a certain salary or hourly rate.
link |
And people observed, Bill Joy observed,
link |
and Mark Andreessen and I observed
link |
that in a mature stack like Microsoft,
link |
you really benefit from having a scripting language
link |
like Visual Basic,
link |
which became Visual Basic script in IE3,
link |
but didn't take over and kill JavaScript,
link |
that you need two languages.
link |
One is for the component writers
link |
who are higher price and more expert.
link |
And the other is for scripters,
link |
certified public accountants, designers,
link |
graphic designers with some programming inclination,
link |
anybody, amateurs, doesn't matter.
link |
There's a much more demotic approach there
link |
for programming the components together,
link |
gluing them together.
link |
Some people say duct tape language, which I don't really like.
link |
But we saw, Bill Joy and Mark Andreessen and I,
link |
we saw the need for a companion language.
link |
And the gleam in our eye was to call it JavaScript.
link |
I didn't like it, that was marketing's plan.
link |
Mark called it Mocha, which I liked.
link |
And Netscape Marketing, I think, didn't like that.
link |
So they said, oh, there's some trademark
link |
and some software somewhere that uses Mocha,
link |
so we can't use that.
link |
And they tried LiveScript in August and that didn't last.
link |
And then finally we got the trademark license
link |
But the work I did to prove that it could be done
link |
was important because I came in in April
link |
and even then Netscape was growing so fast
link |
that they couldn't find an open hiring requisition
link |
in the client team for me.
link |
So they hired me into the server team.
link |
And I worked for a month on server team
link |
on what became HTTP 1.1.
link |
So I was actually, I had done protocol work
link |
at Silicon Graphics with Greg Chesson,
link |
former Bell Labs intern, grad student intern
link |
who knew all the Unix founders.
link |
And Greg was very interested in taking protocols
link |
to the next level with VLSI,
link |
because he thought that CPUs wouldn't scale up.
link |
He was mistaken in that, unfortunately.
link |
Moore's law more than kept up.
link |
And you have gigabit ethernet running
link |
with conventional processors.
link |
But I worked on protocols at SGI
link |
as well as Unix kernel hacking and NFS and things like that.
link |
So I came into Netscape to work on the server side
link |
for a month, but I was thinking the whole time,
link |
what should this language be like?
link |
Should it be easy to use?
link |
Might its syntax even be more like natural language
link |
like HyperTalk, which is Bill Atkinson's language
link |
in HyperCard, if you ever used HyperCard on an early Mac.
link |
And I thought, well, I'd like to do that,
link |
but my management is saying, make it look like Java,
link |
which looks like C from a distance.
link |
What does that mean?
link |
We're talking about visually?
link |
Does that mean like, management,
link |
do they understand what they think about?
link |
Marketing didn't know, but management did.
link |
Like Rick Schell, the VP of engineering, knew.
link |
And we had a plan even that was,
link |
if you have this companion language,
link |
you're going to glue things together
link |
between Java and JavaScript.
link |
So you're going to have commerce in memory, in the heap
link |
So you're going to want some of the data types
link |
in Java to reflect in the JavaScript.
link |
You're going to want the primitive types
link |
that Java unfortunately separated from objects.
link |
So at least some of them, double, let's call it
link |
in Java's terms from the C term
link |
for double precision floating point,
link |
or strings or Booleans and objects.
link |
And so right away there was this constraint
link |
that looking like Java meant kind of a C curly brace syntax
link |
but also some of the data types and objects.
link |
Like objects and so on, all that kind of stuff.
link |
Comparison operator.
link |
Garbage collection, all that stuff.
link |
Even the bitwise operators and the shift operators
link |
including the unsigned right shift,
link |
which Java had because it didn't have
link |
unsigned integer types.
link |
It said, if you want to do unsigned operations,
link |
And that turned out to be important much later.
link |
I'll tell that story five time.
link |
But JavaScript inherited a set of operators,
link |
the expression grammar, the statement grammar
link |
up to a point from Java.
link |
But I wanted a functional language.
link |
I wanted scheme, a little bit of scheme,
link |
even though it wasn't as clean as scheme.
link |
So you had a love, sorry to interrupt.
link |
You had a love for scheme and list
link |
but that functional language landscape.
link |
Yes, I wanted first class functions
link |
because I saw the need for callbacks in the browser
link |
where it's a single threaded program.
link |
All the early browsers were single threaded
link |
and it's the right model for users.
link |
Most users weren't ready for mutual exclusion
link |
So in a single threaded world,
link |
you cannot block the user interface.
link |
So you have to use a callback and run later.
link |
And without getting too fancy
link |
and trying to capture the continuation
link |
like call CC does in scheme,
link |
I thought I'll just make it easy to have fun arcs.
link |
First class functions you pass downward
link |
and it can call back, it'd be called back.
link |
And Java didn't have that at the time.
link |
It took forever to get proper first class functions
link |
or lambdas now into Java, Java seven or eight, I think.
link |
It did have concurrency, right?
link |
From the very beginning.
link |
But you were thinking that the JavaScript
link |
in the browser would not have the luxury
link |
of being concurrent.
link |
And the reason was Java was gonna run in the plugins.
link |
So it could fork threads and go to town.
link |
But the main action in the browser
link |
was in the single threaded program,
link |
the single Unix process on Unix or Windows.
link |
And it was where you had to service the event loop
link |
and then go do things.
link |
Respond to the network layout, some HTML, render it,
link |
turn widths into heights by filling containers, boxes,
link |
the early, what became the CSS box model.
link |
And run scripts to make the thing livelier,
link |
respond to user input.
link |
And all that event driven programming
link |
was in part like HyperCard
link |
because HyperCard had this on event name syntax.
link |
And so that's why you have in JavaScript on click
link |
run together as the name of the event handler.
link |
And there's some funny ones on mouse over
link |
and on mouse out, people still complain about those.
link |
But there were many more events now over the years
link |
standardized, but it was a mix of event driven
link |
single threaded programming because it had to run
link |
in the main thread of the browser where the action is
link |
and Java never got there.
link |
Which meant Java could not interact easily
link |
or quickly or in a nested way with the document,
link |
with the objects reflected from the HTML document,
link |
with the tables and forms and so on.
link |
And that is one of the reasons I think JavaScript
link |
survived and Java kind of died.
link |
Java was in this plugin prison.
link |
It essentially was confined to a rectangle,
link |
the applet rectangle.
link |
And while we even built next year,
link |
Nick Thompson, a friend from SGI
link |
who was an intern grad student at CMU at the time,
link |
built the first version of Live Connect
link |
to glue Java and JavaScript together
link |
to deliver on that vision where you do have commerce
link |
between the data types in the heap.
link |
It worked, but Java was in charge.
link |
JavaScript was in charge and Java was just these components,
link |
these helper objects.
link |
You might as well do everything in JavaScript.
link |
What happened over time, it's like an evolutionary filter.
link |
It just kind of, who needs the plugin?
link |
And in fact, Sun mismanaged Java as a plugin.
link |
They thought, oh, Netscape is giving us
link |
the distribution vehicle and we don't care about the browser.
link |
It's just about getting Java out there.
link |
And that was a big miscalculation.
link |
They then tried, because Microsoft's killing Netscape
link |
after years, they tried getting into Microsoft.
link |
And you may remember there was a Sun Microsoft deal
link |
which famously blew up.
link |
And Microsoft kicked Java out of Windows.
link |
And that's when they really pulled the trigger.
link |
I think they'd already evaluated it and liked it
link |
on Anders Helzberg's.NET and C Sharp
link |
and decided we're gonna just not have Java.
link |
We don't want any of that Sun stuff.
link |
We don't want the patent risk.
link |
We don't want, I'm not sure what all fights were about.
link |
There was some patent angle to it, I think.
link |
And up till then, Microsoft had been using Java components
link |
like in Outlook Web Access,
link |
which had a lot of JavaScript to be a webmail
link |
like Hotmail, like user interface.
link |
They had to call the mail server through HTTP
link |
and they used a Java object to do this.
link |
And when they gave the boot to Sun,
link |
suddenly the left hand gave the boot
link |
and the right hand said, we better do something else
link |
in Outlook Web Access.
link |
What are we gonna do?
link |
And they said, let's just add an ActiveX component,
link |
which is their own native way of embedding things
link |
in languages and it'll be what became XML HTTP request,
link |
which is now a web standard for calling asynchronously.
link |
And it's been replaced by the fetch API
link |
in HTML5 or HTML living document.
link |
But this whole lineage goes back to Java
link |
being successfully the loser and getting kicked out.
link |
And after Microsoft kicked it out, it was a plugin
link |
and you would find it required for like smart card banking
link |
in the Nordic countries where that was mandated by law,
link |
but really didn't get used much.
link |
Or there were pilots who used it for flight information,
link |
but Flash, which Netscape could have bought,
link |
but fortunately didn't.
link |
Yeah, we would have screwed it up.
link |
What year are we talking about with Flash?
link |
I think after the IPO, so it was probably late 95.
link |
Oh, Flash was around.
link |
No, it was called Future Splash
link |
and it was these brothers, Jonathan Gay,
link |
I think his name was, and he came knocking
link |
and the marketing guy at Netscape,
link |
who was screening the technology partners
link |
or wannabe acquisitions was brutal
link |
and just everybody wanted to get in on the Netscape,
link |
stock gravy train and he sent them packing
link |
and they ended up selling to Macromedia
link |
and Macromedia was where Flash was created.
link |
And the good thing about Macromedia was
link |
it was a tool company.
link |
So it invested in the best ideas, I think,
link |
which are still somewhat lost to us of Flash,
link |
the timeline, animation has sort of been a mutable function
link |
They had the tooling around that too,
link |
like they had Dreamweaver, there's a Flash.
link |
Flash Director, there were a bunch of them.
link |
Yeah, I mean, yeah, that was a great.
link |
Flash Builder was one of the last ones.
link |
These tools were used by real artists
link |
and special effects people and designers.
link |
All the restaurant websites around 2005
link |
were done in Flash, which was,
link |
we were trying to do HTML5 at the same time.
link |
That was the Firefox era.
link |
We were trying to make the web capable enough
link |
you didn't need Flash, but if you recall,
link |
you go to a restaurant and it's like,
link |
this is kind of like a game or something.
link |
It's like a Flash, all the font looks small.
link |
So you didn't like Flash from the beginning.
link |
You're like, this doesn't feel right.
link |
I actually admire Flash's technology
link |
and I'm pretty pragmatic about these things.
link |
And I realized that it doesn't matter
link |
if your Delta bad hand like JavaScript was a rush job,
link |
or if you have Flash as a plugin
link |
and you can invest in the tools and make it pretty good.
link |
You should make it better for your users
link |
and grow it as best you can.
link |
And what happened with the browser
link |
due to Microsoft's monopoly abuse
link |
for which they were convicted.
link |
And even after that, until I think Firefox and then Chrome
link |
was people kept saying, oh, the web can't do X, can't do Y.
link |
We'll have to have a plugin.
link |
We'll have to have a new approach.
link |
We'll clean the slate and have a new web.
link |
And everyone who said that failed.
link |
And the reason they failed is because
link |
there's too much value in the web, this huge network.
link |
And the worse is better principle means
link |
that you can not only start bad, which they all sneer at,
link |
but get on first and get wide distribution,
link |
get sort of evolutionary advantage in priority of place,
link |
but you can also improve it over time.
link |
And so if you're gonna improve Flash,
link |
and for some reason Flash is now out of favor.
link |
Steve Jobs said you can't have Flash on the iPhone.
link |
That was probably the death knell.
link |
Put your energy into JavaScript.
link |
And that happened, right?
link |
So we did things at Mozilla with Adobe to improve,
link |
which bought my Macromedia, to improve Flash
link |
and to improve the version of JavaScript that was in Flash.
link |
We tried to standardize that.
link |
I'm getting ahead of myself with it.
link |
That's right, that's right.
link |
Can we just rewind to the magical, like, you know.
link |
It's a special moment in the history of all of computing.
link |
We'll talk about it later, but it's arguable.
link |
It's possible that the entirety of the world
link |
will run in JavaScript at some point.
link |
So like, it's like those days,
link |
it would be interesting if you could just describe,
link |
actually zooming in on how the cake was baked
link |
from the several days that you were working on it.
link |
What was on your mind?
link |
How much coffee were you drinking?
link |
Why, freaking out?
link |
I'll try to remember it.
link |
I mean, you're right.
link |
There are these pregnant moments you see in hindsight,
link |
maybe they're overrated,
link |
but like Hegel sees Napoleon on horseback at Jena
link |
and says, there's the world spirit on horse.
link |
And I knew that there was a chance to do it.
link |
Mark knew, and he was my executive sponsor
link |
and he was the one sort of brainstorming
link |
how the JavaScript should be right there in the page.
link |
That was important for him to say that.
link |
Cause I thought so too, but a lot of people were like,
link |
well, you can't write programming language
link |
in the middle of the markup.
link |
And indeed there are problems.
link |
If you did it naively, you'd see the code laid out
link |
as like random gibberish.
link |
So I had to figure out how to hide that.
link |
That was a challenge.
link |
Is that a breakthrough idea?
link |
I mean, so you and Mark thinking about this idea
link |
that you just inject code in the middle of the markup.
link |
I consider kind of heretical.
link |
There was an SGML guru, I forget his name,
link |
but he corresponded with me and at first he was angry.
link |
He's like, you should have used a marked section.
link |
Why didn't you use a marked section?
link |
And I said, well, SGML marked sections are not part of HTML
link |
by the way, and they're not supported in the browser.
link |
And so I did some hack that was equivalent
link |
and over time you could do the proper SGML thing.
link |
But eventually he came around and it was again,
link |
sort of evolutionary necessity.
link |
It was almost like introgression, like the idea
link |
which Lynn Margulies, I think helped get across
link |
that we have to consider mutualism biology
link |
that maybe mitochondria were ancient prokaryotes
link |
that got into the cell and became beneficial.
link |
Somehow the same sort of thinking applies.
link |
You have to embed JavaScript in HTML.
link |
It's gonna be a good virus.
link |
It won't hurt you.
link |
The code becomes data in the sense
link |
it just gets carried along.
link |
But is there the side of the, so you were focusing
link |
on Netscape at that time.
link |
Doesn't the browser have to support interpret correctly
link |
this mix of HTML and whatever code?
link |
I had to hide it from old browsers,
link |
including Netscape 1.1, which was predominant then.
link |
So I used an HTML comment, but the inside the container
link |
that comment lived in the script tag,
link |
which is a new element, I could make different semantics
link |
in Netscape 2 where those HTML comment delimiters
link |
instead of being multi line brackets became one line
link |
or essentially one line.
link |
So you wrote, so JavaScript was written,
link |
the programming language was written as a comment.
link |
A comment for old browsers and a set of brackets
link |
that were ignored with real code for new.
link |
And it was this two way comment hiding hack, as I called it,
link |
that was absolutely necessary for us to get off the ground.
link |
We couldn't have bootstrapped JavaScript without it.
link |
We didn't have scripts that were loaded from a separate file.
link |
The only scripts in Netscape 2 were inline in the document.
link |
What were the challenges here?
link |
What, like what, you know, typing,
link |
what were the choices you were thinking about?
link |
What was the design for this garbage collection?
link |
I didn't have time to write a garbage collector.
link |
So I just, I didn't at first.
link |
The thing was using essentially arenas
link |
or what GNU calls object pools
link |
and just would run out of memory eventually.
link |
And I added reference counting in a hurry
link |
after the 10 days in which I hacked.
link |
So after I was in the server team doing HTTP 1.1
link |
and thinking about the language,
link |
I finally got transferred to the client team in early May.
link |
And that's when I, you know, I got the go sign from Mark
link |
and it was like, we can't wait
link |
because people inside Netscape are doubting.
link |
Even people inside Sun are definitely doubting.
link |
Bill Joy was the champion, but he was like alone in that
link |
in seeing that there was a role for JavaScript
link |
as the, as I call it, the sidekick language,
link |
robbing the boy hostage.
link |
Frank Miller put it in the Dark Knight Returns
link |
that there was this silly little language
link |
that would be the glue language
link |
and it could become important over time.
link |
And you were better off having that complementarity,
link |
that pairing of languages,
link |
just like Microsoft stacked it with visual C plus plus
link |
and visual pacing.
link |
So what was the big moment of I'm done?
link |
So I had to do a demo.
link |
I forget the dates.
link |
I think I, for a history of programming languages paper
link |
that Alan Wiersbrock did with my help,
link |
he did a lot of the writing.
link |
I think it was the 10 days from like Thursday evening
link |
through to the following weeks, you know,
link |
the whole of that week and then into the Monday.
link |
And I was really going fast
link |
because I had already used a lot of C compiler
link |
and front end compiler knowledge
link |
that I'd gained from undergraduate school.
link |
When I started getting into computing
link |
as a renegade physics major,
link |
people were formalizing more efficient bottom up grammars,
link |
parsers for bottom up languages,
link |
really LALR one was the big thing.
link |
And I studied all this and learned how to parse them.
link |
And in the end, if you're doing C languages,
link |
you often do what Dennis Ritchie did anyway,
link |
which is the recursive descent parser.
link |
You can hand code it.
link |
And I did that for JavaScript in a blazing hurry,
link |
mostly got it right.
link |
I didn't have precedence inversion problems or other bugs,
link |
but I copied a lot from Java and C.
link |
And I tried to keep things simple,
link |
like the equality operator in those 10 days sprint
link |
between two objects of different dynamic type said,
link |
no, they're not equal, their types are different.
link |
And then after that, I had internal early adopters
link |
and they were using JavaScript to match a number
link |
against a database field that had been stringized.
link |
And they said, oh, can we just have implicit conversion?
link |
Like an idiot, I agreed.
link |
I gave them what they wanted.
link |
I was trying to please them and get adoption.
link |
And that broke what equivalence relation
link |
nature there was to the double equal.
link |
There's some edge cases with not a number
link |
that break that too, but it really broke it.
link |
Having an implicit conversions in the operator
link |
is something that people still roast me over.
link |
So let's talk about two things.
link |
One, it sounds like the comparison operator,
link |
the equality operator is the thing that you regret.
link |
So what is the biggest thing you regret in those 10 days?
link |
And what is the biggest thing you're proud of?
link |
So that making it sloppy came after the 10 days.
link |
And my lesson there, which I've tweeted is
link |
when people come to you saying,
link |
can you please make it sloppy or add this cute feature?
link |
The answer should be no.
link |
And I should have known that
link |
because I think Nicholas Viert, one of my heroes said,
link |
the essence of design is leaving things out.
link |
But during the 10 days, I also, like I said,
link |
I was in such a hurry, I left out garbage collection,
link |
came back to haunt me, but I got reference counting in
link |
in time that people weren't running out of memory
link |
right away on long lived JavaScript.
link |
What happens when you don't have garbage collection
link |
and you have objects?
link |
Well, you just run out of memory.
link |
And you know, at first you write a short script
link |
and the page doesn't last long or it doesn't do a lot.
link |
Oh, I see, yeah, yeah.
link |
But if you're writing a game or something
link |
and you're doing event based allocation,
link |
you run out of memory.
link |
And this was noticed in the summer of 1985
link |
and people were like, what's going on?
link |
Oh yeah, I better go back and do reference counting.
link |
And then the problem with reference counting is
link |
you're writing the language in the runtime in C,
link |
an unsafe language, and if you're reference counting
link |
and you overflow the counter, you mismanage it
link |
so it goes high, it gets stuck high,
link |
you leak memory again and you run out.
link |
If you underflow it, you pre memory that's still in use.
link |
And even then we knew what all the security hackers
link |
came to know that you therefore have potentially
link |
a remote code execution vulnerability.
link |
Cause this was before things like non executable
link |
heap memory and staff defenses against taking over memory.
link |
So if you can, from the remote side,
link |
write some HTML and JavaScript that just happens
link |
to exploit a bug in memory safety,
link |
like it causes JavaScript to underflow reference counter.
link |
And the script still has its hands on that object
link |
and it's trying to call a method on it
link |
and there's some kind of lookup function table
link |
in the object, but you've managed to stuff the heap
link |
with strings that forwards their own lookalike
link |
for the function table.
link |
You can call some other code.
link |
And this was a problem right away.
link |
So security, JavaScript upped the ante.
link |
Java had this problem too, but in its own VM.
link |
And it just was a separate headache for Sun to worry about.
link |
We had this problem in Netscape right away.
link |
So Netscape 2 came out after my 10 days
link |
and after these follow on work to embed JavaScript
link |
better in the browser and to add garbage
link |
or collection through reference counting,
link |
really I call it reference counting and get it shipped.
link |
We had a bunch of dot releases where we fixed
link |
security bugs like maniacs.
link |
But what is the thing you're, you know,
link |
when you sit back on a porch and just look out
link |
into the sunset, what are you most proud of
link |
from those 10 days?
link |
I think the first class functions shines.
link |
I think especially since Java didn't have it
link |
and it was somewhat unusual.
link |
Scheme made it in somehow at the end of the day.
link |
In spirit, I mean, people complain because Scheme has,
link |
you know, minimalism.
link |
It has, you know, six or seven special forms.
link |
It has hygienic macros.
link |
It has sort of a beautiful complete set of forms
link |
to make the land of calculus pleasant to use in practice.
link |
And JavaScript is, you know, kind of a multi paradigm
link |
Just in a small tangent, you mentioned Mark Andreessen.
link |
It sounds like, and Bill Joy, but staying on Mark,
link |
it sounds like he had an impact on you
link |
in that he sort of believed in what you were doing there.
link |
Can you talk about like what role Mark had in your life?
link |
Yeah, we would meet at the Peninsula Creamery
link |
in downtown Palo Alto.
link |
And Mark was just fresh out of, you know, grad school
link |
or whatever he was doing and he was big dude
link |
and he got fitter later.
link |
He had hair, he would order giant milkshakes and burgers
link |
and we would meet there and brainstorm about what to do.
link |
And it was very direct because we didn't have much time.
link |
The sort of, we didn't talk about it.
link |
The implication was Microsoft was coming after us.
link |
Mark was saying things boldly pre IPO
link |
like Netscape plus Java kills Windows, right?
link |
This is, make a browser programmable.
link |
It becomes the new runtime for programs.
link |
It's the meta OS or it's the replacement OS.
link |
But he still saw value in JavaScript.
link |
Yes, even though he was saying that
link |
and Java was the big name, hence the trademark license,
link |
he saw JavaScript as important.
link |
And he even thought, what if we got,
link |
I told this in other interviews, I can say it.
link |
He thought, what if we had my friend Kip Hickman
link |
who'd been at Netscape from the beginning
link |
and who was a kernel hacker at SGI when I joined,
link |
he'd started writing his own JVM
link |
before we consummated the Sun deal
link |
and got our hands on their code.
link |
And the Java compiler, Java C,
link |
which Arthur Van Hoff had written very nice code,
link |
was all written in Java.
link |
It was self hosted or so called bootstrap.
link |
And so we could use that as soon as Kip's Java VM
link |
could run the bytecode from the Sun JVM
link |
running the self hosted compiler to emit the bytecode.
link |
So once we could bootstrap into Kip's VM,
link |
we wouldn't need Sun.
link |
And Mark was like, well, maybe we can just ditch Sun.
link |
Well, if Kip's Java VM, or if you're a JavaScript VM,
link |
now we need graphics.
link |
So Mark was thinking far ahead
link |
because he knew you could do things with HTML and images,
link |
but at some point you really want.
link |
Like dynamic graphics or three dimensional?
link |
Even SGI had already started its downfall
link |
because the first floor VLSI team there
link |
had gone off to do 3D effects
link |
and all these other companies
link |
that made the graphics card on your PC, right?
link |
Doom was big and Quake.
link |
And so you were, we were all playing Quake.
link |
I was old, so I was terrible.
link |
But why not put that graphics capability on the web?
link |
And in fact, it finally happened at Mozilla
link |
with Firefox era with Vlad Vukicovic
link |
taking OpenGL ES and reflecting it as WebGL.
link |
But OpenGL ES is the mobile version of OpenGL,
link |
which is a standard based on SGI GL.
link |
So this whole lineage of graphics libraries
link |
or really graphics languages for what became the GPU.
link |
And Mark was thinking ahead.
link |
He's like, we need graphics too.
link |
And I thought, okay, I can try to get somebody I knew at SGI,
link |
but he's a grad student at MIT.
link |
He was studying under Barbara Liskov.
link |
He laughed when he heard about this later, Andrew Myers.
link |
He's at Cornell, long time, I think he's a full professor.
link |
And Mark said, great, we'll get him.
link |
I'm not sure he's gonna come.
link |
We'll throw money, we'll stock options.
link |
And they did the Sun deal.
link |
So Kip Nobly put aside his own JVM
link |
and we used the Sun JVM.
link |
So that was an ambitious period.
link |
And Mark was very generative because he was pushing hard.
link |
He was ambitious and he wanted to have Netscape
link |
possibly be in control of the ball.
link |
Maybe you can speak to this dance
link |
of Netscape versus Internet Explorer.
link |
You've thrown some loving words towards Microsoft
link |
throughout this conversation,
link |
but that's a theme with, I mean, Steve Jobs
link |
has a similar sort of commentary.
link |
From a big sort of philosophical principle perspective,
link |
can you comment on like the approach
link |
that Microsoft has taken with Internet Explorer
link |
from IE1 to Edge today?
link |
Is there something that you see as valuable
link |
that they're doing in the occasional copying
link |
and that kind of stuff?
link |
Or is it, is the world worse off
link |
because Internet Explorer exists?
link |
So I'm gonna segment this into historical areas
link |
because I think Microsoft today with Satya
link |
is quite a different company
link |
and what they're doing with Edge is different.
link |
But back then, Gates, aggressive character,
link |
not really original in my view, not an originator.
link |
Steve Jobs famously said once,
link |
he doesn't have any taste
link |
and I don't mean this in a small way, he has no taste.
link |
You can see this, Apple at the time had beautiful typography
link |
and ligatures and kerning and the fonts looked great.
link |
And Windows had this sort of ugly system font
link |
that was carefully aligned with Pixel
link |
so it didn't get anything.
link |
I'm sorry to keep interrupting,
link |
but why was Internet Explorer winning
link |
throughout the history of these competitions?
link |
Distribution matters more than anything.
link |
And this is why even now we're seeing
link |
in the browser wars Edge doing better
link |
because it's being foisted on people of Windows.
link |
We have Windows 10 boxes at home.
link |
We have some Windows 7 boxes or laptops we keep running to
link |
because we don't connect them to the internet generally.
link |
But once you have that operating system to hold,
link |
you can force Edge.
link |
And Apple did it with Safari too.
link |
It's not unique to Microsoft.
link |
But distribution matters.
link |
And that's why I think IE was going to win.
link |
That's why everybody at Netscape felt we're doomed.
link |
This was something Michael Toy and Jamie Woodson were doomed.
link |
But for a while there we had a chance
link |
and we innovated in Netscape too.
link |
We did a big platform push, Java and JavaScript
link |
and plugins, more plugins and more HTML table features.
link |
And really started making a programmable stack
link |
out of what were pretty static web languages.
link |
And even in the beta releases of Netscape,
link |
two people were using JavaScript
link |
to build what you would call single page applications
link |
And they were using JavaScript locally to compute things
link |
and to call the server on a hidden frame in the background.
link |
So it was prefiguring a lot of what came later as AJAX
link |
or dynamic JavaScript, dynamic HTML.
link |
So people saw that, I mean.
link |
Even then they saw it, yeah.
link |
That's kind of, I don't know.
link |
But from my perspective, that seems quite brilliant.
link |
It seems like really innovative
link |
that you would have code run in the browser.
link |
It did impress me with something
link |
which I learned later about from Eric Von Hippel of MIT,
link |
which is user innovation networks, lead user effects.
link |
That throwing out JavaScript,
link |
even though we weren't doing open source,
link |
we were doing beta releases early
link |
and permissively with Netscape.
link |
Getting early developer feedback, absolutely critical.
link |
I did some of that with SGI
link |
with some of the products I worked on,
link |
but it really came to the fore in Netscape.
link |
And that culminated in Mozilla
link |
where you're dealing with developers all the time
link |
and early adopters, lead users.
link |
But the lead users helped improve JavaScript,
link |
even in those last few betas
link |
where I could hardly change things.
link |
I was under pretty rigid change control.
link |
So we're talking about just a small collection
link |
of individuals that are just like upfront.
link |
A guy named Bill Dorch.
link |
You can find his work in the web archives,
link |
It's a single page application.
link |
It's an artist gallery of mountain art.
link |
He used JavaScript?
link |
It doesn't quite work.
link |
He uses JavaScript locally.
link |
He uses a local database.
link |
What you would think of now is JSON,
link |
but it's all pure JavaScript code,
link |
a bunch of objects being constructed.
link |
So how is, if you can do sort of a big sweeping progress
link |
of JavaScript, how has JavaScript changed over the years?
link |
Any of you from those early 10 days
link |
with a quick addition of garbage collection
link |
and fixes around security,
link |
how has this evolution that now it's taken over the world?
link |
In this, it's been a bumpy ride
link |
because the standards body got shut down after Microsoft,
link |
I think, took over the web and then felt punished
link |
by the USB Microsoft antitrust case.
link |
Can you speak to the standard body?
link |
That was a fun ride too
link |
because Netscape had taken the lead
link |
with the web and HTML innovations
link |
like frames and framesets tables.
link |
And the W3C was sort of off even then,
link |
sort of in SGML land heading toward XML, la la land.
link |
I'm gonna be a little harsh on it.
link |
SGML was the precursor markup language to HTML.
link |
It was sort of the more extensible standards,
link |
generalized markup language.
link |
Pointy brackets, but it had all sorts of elaborate syntax
link |
for doing different semantics.
link |
And this is why I think TBL and others
link |
who wanted to do the semantic web then took XML forward,
link |
but they had this, or some of them anyway,
link |
had this strange idea they could replace the web with XML
link |
or that they would upgrade the web to be XML.
link |
And it couldn't be done.
link |
Worse is better had concrete meaning.
link |
The web was very forgiving of HTML,
link |
including sort of minor syntax errors
link |
that could be error corrected.
link |
Like error correction isn't generally done
link |
in programming languages because...
link |
That's another amazing thing about HTML is like,
link |
it's more like biology than programming.
link |
And so XML was in its standard form super strict
link |
and could never have admitted the kind of users
link |
who were committing these errors.
link |
And the funniest part was Microsoft said,
link |
hey, we're doing XML,
link |
but the way they put it in Internet Explorer
link |
under the default media type,
link |
put it through the HTML error corrector.
link |
So they kind of bastardized it to make it popular
link |
and usable and accessible.
link |
And so XML as a pure thing was never gonna take over.
link |
And what W3C was kind of not fully functional
link |
because Netscape wasn't cooperating with them.
link |
We thought about where to take JavaScript
link |
and we realized our standards,
link |
Guru Kargal realized there was a European standards body
link |
that had already given Microsoft fits
link |
by standardizing parts of the Windows 3.1 API,
link |
which European governments insisted on.
link |
They said, Microsoft, we can't use your operating system
link |
without some standards.
link |
And Microsoft said, here's our docs.
link |
And the government said, no, we need a European standard.
link |
So this body called
link |
the European Computer Manufacturers Association, ECMA,
link |
which eventually became global
link |
and became a proper noun instead of an acronym.
link |
Right, it's just one capital E now with a lowercase CMA.
link |
Right, and as one of the early Microsoft guys I met
link |
when we first convened a working group
link |
to talk about JavaScript said,
link |
it sounds like a skin disease.
link |
But it gave, I mean, maybe you'll speak to that,
link |
but it gave the name to JavaScript of ECMA script.
link |
That was the standard name
link |
because Java was a trademark of Suns.
link |
They were so aggressive,
link |
they were sending cease and desist letters
link |
to people whose middle European heritage
link |
meant their surname was Javanko
link |
and they called their website javanko.com
link |
and Sunwood sent them a letter saying,
link |
you're using J A V A at the start of your domain name,
link |
you must cease and desist.
link |
I love marketing more than anything else in this world.
link |
So ECMA script and now is popularly named as ES plus version.
link |
I would say people use JS more than anything.
link |
People still say JavaScript.
link |
JavaScript is in all the books.
link |
So I mean, when you're referring to it,
link |
it's usually JavaScript.
link |
And when you wanna refer to a version of JavaScript,
link |
you'll say ES6, ES5.
link |
Yes, or now they've gone to years,
link |
which is kind of confusing
link |
because it's an offset of 2009, ES6, ES 2016.
link |
Yeah, it doesn't match the years perfectly.
link |
Yeah, so what were the choices made
link |
and how did JavaScript evolve here?
link |
So we took this new standards body,
link |
which we thought sort of a proven record
link |
of standing up to Microsoft,
link |
but Microsoft sent a lot of people.
link |
They sent some people who were pretty good.
link |
And then when they realized that I was there
link |
and Netscape was not gonna just bend over
link |
and do whatever they wanted,
link |
they sent somebody really good.
link |
And he was a smart guy.
link |
He did a lot of the work on the first draft of the spec.
link |
Sean Katzenberger, he's left Microsoft.
link |
He even did what I sort of did.
link |
He told his bosses, stop bugging me to do other things.
link |
I'm focused on this.
link |
Cause it took a lot of focused work
link |
to create the first draft of the spec.
link |
And I was still holding,
link |
I was spending almost all the plates.
link |
I had like part time help in certain areas.
link |
And on the front end integrations,
link |
I had the front end guys.
link |
But I couldn't take as much time as Sean was
link |
to write the draft spec,
link |
but I had to participate
link |
because I was essentially helping write down
link |
what the language did
link |
and in areas where we didn't like what it did
link |
and Microsoft didn't agree,
link |
we sometimes got away with slight changes.
link |
And that's the story of standards.
link |
You have different implementations
link |
and depending on their market power,
link |
they interoperate where you have agreement
link |
and where they don't,
link |
the dominant one usually sets the de facto standard.
link |
And then you should probably reflect that
link |
into the de jure standard.
link |
And this happened with JavaScript.
link |
Over time, as Netscape went down and Microsoft went up,
link |
we did the first edition of the standard codified in 1997
link |
in France, we had a trip to Nice, which was very memorable.
link |
For any interesting reason or just because it's Nice?
link |
And ECMA's European and IBM and others were there.
link |
Mike Kalashaw, an IBM fellow was a British.
link |
And the guy who ran ECMA at the time, Jan van der Bell,
link |
was quite a raconteur and a very fun guy.
link |
And he had us out for, you know, the great,
link |
you know, Fui de mer, the bouillabaisse and the...
link |
Was the standardization process beautiful or painful
link |
that those early days, you as a designer of the language?
link |
It was painful because it was rushed.
link |
Now, Guy Steele was contributed by Sun.
link |
So even more than Sean,
link |
you had this giant brain Guy Steele helping,
link |
bringing some of that scheme magic.
link |
And he even brought Richard Gabriel for funding.
link |
Richard wrote the fourth clause of the ECMA standard,
link |
which was kind of an intro to what JavaScript's all about.
link |
So we had some really good people
link |
and we didn't fight too much.
link |
There was some tension where I was fixing bugs
link |
and I was late to a meeting and Sean Katzenberger,
link |
Microsoft, was actually mad.
link |
Like, where is he?
link |
And when I got there,
link |
I saw that only he saw this sort of off by one bug
link |
in somewhere in the spec.
link |
And then I saw it too.
link |
And I said, there's a fence post bug there.
link |
And then we kind of locked eyes
link |
and we realized we were on the same page.
link |
And we kind of, he wasn't mad anymore.
link |
What were the features that are being struggled over
link |
and debated and thought about?
link |
It was mainly writing down what worked
link |
and what we thought should work in the edge cases
link |
that didn't interoperate or that seemed wrong.
link |
But we were already laying the groundwork
link |
for the future additions that I was already implementing.
link |
I was still trying to lead the standard
link |
by using the dominant market power
link |
to write the code that actually shipped.
link |
So the de facto standard would lead the de jure standard.
link |
And I was putting in the missing function forms
link |
that I didn't have time for in the 10 days.
link |
So this is the engineering mindset versus the theoretician.
link |
So you didn't want to create the perfect language,
link |
but one that was the popular and shipped
link |
and all that kind of stuff.
link |
And you could say there was,
link |
I was standing on the shoulders of giants.
link |
So there was a staged process
link |
where I had to hold back things
link |
that were well designed by others in other languages
link |
and I could imitate,
link |
but I couldn't do them all in the 10 days.
link |
So they came in 1996 and 97,
link |
and they came into the third edition of the standard,
link |
which was final finalized in 1999.
link |
But at that point,
link |
Netscape had been sold to AOL
link |
which was a decent exit considering
link |
and had previously been mercilessly crushed.
link |
Netscape was selling the browser along with server software
link |
that it had acquired after its IPO
link |
and Microsoft was just underpricing it.
link |
So there was no way to compete with that.
link |
Microsoft was also making Internet Explorer
link |
the default browser in Windows,
link |
which is called tying and antitrust law.
link |
And they were doing even more brutal things.
link |
There was a famous investor.
link |
He did very well on Google.
link |
So he's a billionaire, Ramshree Ram,
link |
and he was sales guy or head of sales at Netscape.
link |
And he got off the phone looking ashen faced
link |
after a compact called and said,
link |
Microsoft just told us they're gonna pull
link |
our Windows license if we ship Netscape
link |
as the default browser.
link |
So there is some bullying going on.
link |
It was totally immaterial in the antitrust case.
link |
But JavaScript escaped into the standard setting
link |
where there was fairly good cooperation.
link |
Microsoft had a really good guy on it
link |
and Guy Steele was there for a time
link |
and there was some good work.
link |
But after the antitrust case
link |
and Netscape kind of dissolving into AOL
link |
and not really going anywhere quickly,
link |
Mozilla took years to really bring up,
link |
the standard froze.
link |
And by 2003, even though they'd been sort of noodling around
link |
with advanced versions, JavaScript 2,
link |
I'd given the keys to the kingdom
link |
to another MIT grad, Baltimore Horwatt.
link |
Very big brain and still at Google, I think.
link |
He won the Putnam in 86
link |
and he's very mathematical.
link |
He designed this successor language, JavaScript 2,
link |
but it only showed up in mutated form
link |
in Microsoft's ASP.NET server side
link |
and it didn't last there.
link |
And it showed up in Flash
link |
and that's what became ActionScript 3.
link |
Ah, ActionScript, interesting.
link |
And then Flash of course declined.
link |
And so how did we arrive at ES6
link |
where it's like there's so many,
link |
where everyone, okay, there's this history of JavaScript
link |
that people were, it was just like cool
link |
when you're like having beers to talk crap about JavaScript.
link |
Everyone loves to hate,
link |
like people who are married say, ah, marriage sucks,
link |
is they just wanna get, let off some steam
link |
even though everyone uses the language.
link |
But ES6, it's become this like reputable,
link |
like it fixed major pain points, I think.
link |
It added things to the language
link |
and added something that was already ES5 strict mode,
link |
but made it implicit in class bodies and module bodies.
link |
It was a big jump,
link |
but it accumulated some of the ES4 designs
link |
that we'd done with Adobe
link |
for what we hoped would be the fourth edition of ECMAScript
link |
that were supposed to fold in some of these old JavaScript 2
link |
ideas that had come into ActionScript 3.
link |
So you look at the family tree and you see these forks
link |
and the main ones are the ones that go into Adobe Flash
link |
acquired from Macromedia
link |
and the one that went into the service side
link |
of Microsoft's stack, which kind of died.
link |
And then trying to bring them back into the standard
link |
and not quite succeeding, ES4 was mothballed,
link |
but all the good parts that everyone liked made it into ES6.
link |
And so that was a success.
link |
And I said earlier, I had the wrong year,
link |
I think it's 2015, so it's off by.
link |
Yeah, it was finalized in 2015.
link |
It took a little longer than we hoped,
link |
but because ES5 was 2009
link |
and that was a smaller increment from ES3.
link |
We skipped four again, we mothballed it.
link |
And we had a split in the committee where some people said,
link |
ES4 is too big, we're gonna work on incremental improvements,
link |
no new syntax in particular, they promised.
link |
Not quite true, but they added a bunch of interesting APIs,
link |
Alan Wiersbrock, my coauthor of the Hobble paper.
link |
And he was at Microsoft at the time.
link |
I ended up hiring with Mozilla.
link |
He wanted to get to Mozilla and keep doing
link |
his sort of editor job of the JavaScript standard,
link |
And when we got ES6 done, it was a little late, 2015,
link |
and we switched to year numbers.
link |
So people still call it ES6, I call it ES6.
link |
But if you remember, off by nine plus 2000.
link |
Yeah, I mean, ES6 is such a big job.
link |
I mean, like you said, there's a third that connects all of it,
link |
but ES6 is when it became this language
link |
that almost feels ready to take over the world completely.
link |
More programming and the large features,
link |
more features you need for larger teams.
link |
Software engineering.
link |
Microsoft did something smart, too.
link |
Anders and company, Luke Hoban, who's left Microsoft,
link |
also did TypeScript.
link |
And they realized something, I think,
link |
that Gilad Barak has also popularized,
link |
and he was involved in Dart at Google.
link |
If you, don't worry about soundness in the type system.
link |
You don't try to enforce the type checks
link |
at runtime in particular.
link |
Just use it as sort of a warning system,
link |
a tool time type system.
link |
You can still have a lot of value for developers,
link |
especially in large projects.
link |
So TypeScript's been a roaring success for Microsoft.
link |
What do you think about TypeScript?
link |
Is it adding confusion, or is it ultimately beneficial?
link |
I think it's beneficial.
link |
Now, it's technically a superset of JavaScript,
link |
so of course I love it, right?
link |
The shortest JavaScript program
link |
is still a TypeScript program.
link |
Any JavaScript program is a TypeScript program,
link |
which is brilliant,
link |
because then you can start incrementally adding
link |
type annotations, getting warnings,
link |
learning how to use them.
link |
Microsoft's had to kind of look around corners
link |
at the standards body and guess how their version of modules
link |
or decorators should work.
link |
And the standards body then may change things a bit.
link |
So I think they're obligated with TypeScript
link |
either to carry their own version
link |
or to bring it back with incompatible changes
link |
towards the standard over time.
link |
And I think they've played generally fair there.
link |
There's some sentiment that,
link |
why don't they standardize TypeScript?
link |
Well, they've been clear they don't want to.
link |
They have a proprietary investment, it's valuable.
link |
They have control of the ball.
link |
And in some ways, you can say the same thing
link |
to any of the other big companies in the standards body.
link |
Why doesn't Google standardize its stuff?
link |
So you think it'll continue being
link |
like a kind of dance partner to JavaScript,
link |
to the base JavaScript?
link |
There's a hope that at some point,
link |
if they keep reconverging it and the standard
link |
doesn't break them and goes in a good direction,
link |
we will get at least the annotation syntax
link |
and some semantics around them.
link |
Because when you're talking about type annotations,
link |
they're generally on parameters and return values
link |
and variable declarations.
link |
They're cast operators.
link |
You want that syntax to be reserved
link |
and you want it to work the same in all engines.
link |
And this is where ideas like Gilad's
link |
pluggable type systems might be good,
link |
though then you could create the same problem
link |
you have with Lisp and Scheme,
link |
where there's a bunch of macro libraries
link |
and they don't agree and you have conflicts between them.
link |
But pluggable type systems could be one way to standardize.
link |
What do you think about the giant ecosystem
link |
of frameworks in JavaScript?
link |
It feels like, because, I mean,
link |
this is a side effect of how many people use JavaScript,
link |
a lot of entrepreneurial spirit
link |
create their own JavaScript frameworks
link |
and they're actually awesome in all different ways.
link |
And this is an interesting question
link |
about almost like philosophically
link |
about biological system and evolution,
link |
all that kind of stuff.
link |
Do you see that as good or should it like,
link |
should some of them die out quicker?
link |
I think maybe they should, now jQuery was a very clever
link |
thing, John Resig made this library
link |
that was sort of query and do
link |
and blended sort of CSS selector syntax
link |
with JavaScript sort of object graph or DOM querying
link |
and made it very easy for people to do things
link |
almost like they were learning jQuery as its own language,
link |
domain specific language.
link |
And that I think reflected in part the difficulty
link |
of using the document object model,
link |
these APIs that were originally designed in the 90s
link |
for Java as well as JavaScript.
link |
They're very object oriented or even procedural.
link |
They're very kind of verbose.
link |
And it took like a constructor call
link |
and three different, you know, hokey pokey dances
link |
to do something where as in jQuery, it's just one line.
link |
Right, so that fed back finally into the standards.
link |
It didn't mean we standardized jQuery.
link |
It wasn't quite that concise,
link |
but you find now with the modern standards
link |
that we were working on in the HTML5 sort of effort
link |
that things became simpler, the fetch API
link |
and the query selector API, document.querySelector.
link |
A lot of things can be done now in raw JavaScript
link |
that you would make more concise and terse in jQuery,
link |
Whereas in the old DOM of 15 years ago,
link |
it was just too verbose.
link |
So maybe the frameworks were born kind of
link |
because JavaScript lacks some of the features of jQuery.
link |
And so like now that JavaScript is swallowing
link |
what jQuery was, then the frameworks will,
link |
only the ones that truly add value will stick around
link |
and the other ones will die out.
link |
And that highlights this also this division
link |
between the core language JavaScript,
link |
which can show up in other places
link |
like Node.js on the server side
link |
and the browser specific APIs
link |
or the document object model APIs,
link |
which are even managed by the W3C,
link |
the standards body that was off in XML La La Land
link |
when we were doing real JavaScript standards in ECMA.
link |
And you have this division of labor,
link |
division of responsibility and division of style
link |
and sort of aesthetics and also speed.
link |
So the document object model really stagnated
link |
after Microsoft kind of deinvested in the web.
link |
And Microsoft did something in their haste
link |
in the spirit of Netscape,
link |
doing things quickly and getting on first called DHTML.
link |
And some of their innovations
link |
that were like an alternative document object model
link |
didn't really get standardized until HTML5
link |
when we pragmatists at Opera at the time,
link |
Ian Hickson who went to Google,
link |
Apple and Mozilla said let's,
link |
XML is not gonna replace HTML, HTML4 is too old.
link |
Let's standardize HTML5 based on all this good stuff
link |
including that DHTML variant dynamic HTML5.
link |
HTML5, it feels like to me, maybe you can correct me,
link |
like a beautiful piece of design work.
link |
It was, it's not often with web stuff,
link |
you have this breath of just like,
link |
oh, whoever did this is, it just feels good.
link |
Is that, what are your thoughts about HTML?
link |
Is the, am I being too romantic?
link |
A little bit, a little bit.
link |
Are there flaws, fundamental flaws to it
link |
that I'm just not aware of?
link |
My old friend Hixie did a great job.
link |
He was another renegade physics student.
link |
And he was basically a QA guy at Opera
link |
but he obviously trained physics student
link |
and someone who could write British
link |
or he developed test suites
link |
and he started thinking about them more axiomatically.
link |
Now this is, this can be good
link |
because you can sort of systematize
link |
in a way that makes a better HTML
link |
or you can get caught in the pragmatism of saying,
link |
well, we have to handle all of these edge cases
link |
so we're just gonna have sort of a test matrix.
link |
And if the matrix is large,
link |
it will not be beautiful by many people's lights.
link |
Everyone likes to minimize along their preferred dimensions,
link |
the seven special forms and scheme or whatever.
link |
But reality is HTML needs to be big.
link |
It's kind of shambolic, it's a creative multi paradigm.
link |
And Hixie did a good job, I would say, with a bunch of it.
link |
Other people came in in the spirit of Ian Hickson
link |
to do HTML5 work and they've carried on that effort.
link |
And so it's a mix of pragmatism,
link |
de facto standards from the past being sort of combined
link |
or written down for the first time
link |
and then rethought in a way that has a simpler syntax,
link |
like the fetch API instead of XML HTTP request.
link |
This video too as well, it ultimately,
link |
it feels like maybe you can correct me,
link |
it feels like it was the nail in the coffin of Flash.
link |
Steve Jobs saying no Flash on the iPhone,
link |
in my opinion, was the actual sting through the heart.
link |
But, well, I'm not sure what trope you wanna use.
link |
Flash was a zombie until just this year, right?
link |
Or last year, I think last year
link |
was the end of Flash in main browsers.
link |
But Jobs really did the death blow.
link |
And yeah, you're right, we had to make HTML5 competitive.
link |
I still don't think we got
link |
that beautiful timeline animation.
link |
The timeline thing, so you like the time.
link |
I mean, me from, I used to animate
link |
all kinds of stuff inside Flash,
link |
plus there's a programming element.
link |
It was a little bit, I don't know if you can comment on that,
link |
but to me, it was a little bit like go to statement,
link |
like in a sense that it was a little bit too chaotic.
link |
Like it didn't, that OCD part of me as a programmer
link |
wasn't satisfied by Flash.
link |
It feels like there was bugs that were introduced
link |
through the animation process that I couldn't debug easily.
link |
Yes, I heard that too.
link |
so I'm doing the grass is greener thing here.
link |
The thing I liked about the animation model
link |
was that it was this immutable function of time.
link |
So you could time warp and you could,
link |
if you dodged these bugs or worked carefully,
link |
you could really make it sing in ways
link |
that I think still a little challenging
link |
with the web animation standards.
link |
But, or just using raw canvas and WebGL.
link |
But there's so many tools now that maybe it doesn't matter.
link |
And yet we had to do video,
link |
we had to do WebGL and then evolve it.
link |
We had to do web audio.
link |
But once we did all these things that helped Flash die,
link |
thanks to Steve Gubbs,
link |
we had something that people didn't realize.
link |
We had that vision that Market Vision had,
link |
this graphics capable to the metal portable runtime.
link |
And we at Mozilla realized this
link |
and we saw JavaScript was something
link |
that you could compile to.
link |
Adobe had somebody in the Adobe Labs doing this too.
link |
He had a project called Alchemy.
link |
We had somebody who's now Google,
link |
Alon Zakai, who did his own LLVM based compiler
link |
that would take C or C++ and it would emit JavaScript.
link |
And you would think this is crazy.
link |
You're going from this sort of machine types,
link |
low level, controlled memory allocation language
link |
to this garbage collected, dynamically typed,
link |
high level, higher level language.
link |
But Alon sort of just phenomenologically carved nature
link |
of the joint and found the forms
link |
that were fast in JavaScript.
link |
And then with Dave Herman,
link |
who I'd recruited from Northeastern University,
link |
who was a type theorist,
link |
and Luke Wagner, who's still at Mozilla,
link |
who was the compiler guy and the JIT guy,
link |
they figured out how to codify what Alon had done
link |
into a typed subset of JavaScript called Asm.js.
link |
And this is a strange thing to think about
link |
because it doesn't have new syntax.
link |
The types are casts that occur in dominator positions
link |
in the control flow graph.
link |
So it's like a hack on JavaScript and it's a subset
link |
and it uses those bitwise operators
link |
that I talked about copying from Java
link |
to basically cast numeric types,
link |
which are double position flowing point, into integers.
link |
And so inside JavaScript, in the kernel semantics,
link |
And if you use these operators,
link |
if a compiler emits them in the right places,
link |
you can then treat them as typed values,
link |
typed memory locations, and you can type check your program.
link |
You can not only type check it, you can compile it.
link |
And this is all in sort of linear time, Alon.
link |
You can compile it to have deterministic performance.
link |
It doesn't touch the garbage collector.
link |
It calls a bunch of functions that come from the C functions
link |
or C++ code that you're compiling.
link |
And you can make the Epic Unreal Engine
link |
go in 30 frames a second.
link |
And when we did this in 2013 in the fall,
link |
Tim Sweeney and I didn't think it could be done quickly.
link |
Thought it would take years.
link |
And the team went to Raleigh, to Epic,
link |
and in four days they had Unreal Engine ported
link |
by pressing a compile button.
link |
But they had to have WebGL,
link |
which came from OpenGL.
link |
Yes, it came to OpenGL, which came from Silicon Graphics GL.
link |
They had to have Web Audio so they could map OpenAL,
link |
which was another audio library standard to Web Audio,
link |
which was kind of a Chrome idiosyncratic thing.
link |
But they could make it work.
link |
And they had to have Asm.js for fast C++ to JavaScript.
link |
And if you didn't have that fast compiler step,
link |
the JavaScript you'd write by hand
link |
trying to do an Unreal game would be too big and too slow.
link |
It would touch the garbage collector.
link |
It would not keep up with 30 frames a second
link |
on the hardware, 2013 hardware.
link |
So we demoed that at,
link |
this must have been fall 2012 now that I think about it.
link |
Because we demoed it at GDC,
link |
Game Developer Conference 2013.
link |
And people were stunned.
link |
That's like Unreal Engine, Unreal Tournament
link |
running in my browser window.
link |
No plugin, no Flash, no Java, no.
link |
So were those the early days of,
link |
because JavaScript now is able to run basically on par
link |
with a lot of the C++.
link |
And even before then,
link |
you had the fast JavaScript VMs in 2008
link |
when Chrome came out.
link |
Just before it came out, Mozilla,
link |
my friend Andreas Gal and I and others
link |
hacked out Trace Monkey, our Trace based JIT.
link |
The Squirrel Fish Extreme team at Apple did their JIT.
link |
And we were all competing
link |
on these crazy performance benchmarks.
link |
It was a little bit too much tuning to the benchmark.
link |
But JavaScript started getting fast
link |
and developers started noticing it.
link |
But it was still kind of its own high level language
link |
with garbage collection.
link |
The Asm.js step helped us go further
link |
because until we really proved the concept,
link |
people were still saying, well, JavaScript's okay.
link |
It's getting faster, thanks to V8.
link |
Everybody gave Google credit, especially Google.
link |
But we need something to kill Flash.
link |
Let's use the portable native client code
link |
that Google had acquired, native client.
link |
Which is a separate lineage for taking basically C code,
link |
compiling it into a software fault isolated container
link |
of some sort using some kind of virtualization technique.
link |
And maybe it can even be in process
link |
and still be memory safe, that would be awesome.
link |
But they ended up using process isolation too.
link |
And that kind of weakened it.
link |
And in the end, it was like portable native client,
link |
okay, meet the new boss, same as the old boss.
link |
This is the Google Flash, right?
link |
But when we did Asm.js and we showed Unreal Engine working,
link |
I think it was only a matter of time
link |
before Google threw in the towel.
link |
And in fact, everybody agreed in spring of 2015,
link |
we're gonna take what was proven by Asm.js
link |
and make a new syntax, a binary syntax, it's efficient,
link |
that loads into the same JavaScript VM
link |
that JavaScript loads into.
link |
So there'll be two source languages, one VM,
link |
very important, one garbage collector,
link |
one memory manager, one set of compiler stages.
link |
And that's called WebAssembly.
link |
And that's the successor to Asm.js.
link |
And it's important that it have binary syntax
link |
because at the end of the day, especially on mobile,
link |
if you're downloading JavaScript,
link |
even if you're using LZ compression on the wire,
link |
that's cool, but you've got to blow it out into memory
link |
and then parse the silly eight character function keyword
link |
that I picked, when I should have used something shorter,
link |
I picked it because of awk, the Unix tool.
link |
I want to, but I'm not following the awk thread.
link |
Yeah, don't worry about it.
link |
Is it surprising to you that,
link |
how damn fast JavaScript is these days?
link |
I mean, like, you've been through the whole journey.
link |
I know every step of the way, but is it like,
link |
I mean, it feels incredible.
link |
It does, but I knew, so the funny thing is,
link |
computer science is this big karmic wheel, right?
link |
And in the, it's about the 97,
link |
I was loaned by Netscape to do due diligence for Sun
link |
in their acquisition of Anamorphic,
link |
which was David Unger and friends, people,
link |
Craig, I'm forgetting his name, he went to Microsoft.
link |
These Stanford language buffs who'd taken Smalltalk
link |
and then David create itself
link |
as a simpler sort of Smalltalk language
link |
and made really fast, just in time compiling VMs for them.
link |
And they, you know, well ahead of Java hotspot
link |
or JavaScript V8 or any of these modern VMs,
link |
figured out how to make dynamic code fast
link |
because Smalltalk is dynamic language, right?
link |
It has classes, it has, I think more lockdown declarative
link |
syntax than JavaScript, but it's fundamentally dynamic.
link |
You don't declare the types.
link |
But you could infer the types as the program runs
link |
and you start to form these ideas
link |
about what types are actually flowing through key operations
link |
and you form little so called polymorphic inline caches
link |
that are optimized machine code.
link |
The cache is the machine code that assumes,
link |
does a quick check to make sure the type is right
link |
and if it's not right, it bails to the interpreter.
link |
And if it is right, you go pretty fast.
link |
And that short test is a predicted branch,
link |
so things are pretty quick.
link |
All that amazing stuff I knew about in the 90s
link |
and I didn't have time to do it
link |
and Anamorphic got bought by Sun and they did hotspot.
link |
And you needed that even in Java because at scale,
link |
Java has some dynamic aspects due to invoke interface.
link |
You can have basically collections of Java code
link |
where you don't know at the time each module
link |
or package is compiled exactly what's being called,
link |
what subclass or what implementation
link |
of an interface is being called.
link |
And so you want to optimize using this sort of dynamic
link |
polymorphic caching there too.
link |
And they did that and hotspot, it's amazing beast.
link |
I've met like 13 people who all claim they created it.
link |
I think one of them may deserve credit more than others.
link |
But I didn't get to do that in JavaScript.
link |
And when we knew that Google was going to do their own
link |
browser, which we knew at Mozilla around 2006,
link |
I also met the team that did V8.
link |
And it turns out it was Lars Bach,
link |
who was one of the young engineers from Anamorphic
link |
that got acquired by Sun.
link |
And so Lars is like one of the world's expert
link |
on these kinds of virtual machines.
link |
And he picked my brains about JavaScript.
link |
I could tell he didn't like it at the time,
link |
but he had to do it.
link |
Oh, really interesting.
link |
Yeah, in 2006 lunch at Google's campus.
link |
And then I had another friend who was DevRel at Chrome
link |
and he said, yeah, we don't know what they're doing.
link |
This is getting 2007 to fall, getting toward 2008.
link |
We're trying to get Chrome out
link |
and we don't know what's going with the V8 team.
link |
They're off in Aarhus, Denmark,
link |
rewriting their engine four times, which is good.
link |
That's the right way to do this kind of development.
link |
They were learning JavaScript, including all its quirks,
link |
which they came to hate the fire of a thousand suns,
link |
which is one of the reasons that Lars and company did Dart,
link |
their own language.
link |
But they also made the language fast.
link |
And meanwhile, we knew this was happening.
link |
So we got our act together with Trace Monkey,
link |
our tracing JIT at Mozilla and Apple I think was also aware.
link |
And so they were doing their own JIT.
link |
So the era of JITed fast JavaScript in 2008
link |
had this prehistory going back to Smalltalk itself
link |
And again, the lineage is interesting
link |
because you had Lars and Anamorphic
link |
and then he ends up at Google.
link |
Yeah, and today we have an incredibly fast language
link |
that like you said, still,
link |
without hate, you can't have love.
link |
So I think there's both love and hate for this dance,
link |
this rich complex dance of JavaScript
link |
throughout its history.
link |
There's a dialectic for sure.
link |
Today, JavaScript is the most popular language in the world.
link |
Why by many measures?
link |
Why do you think that is?
link |
Is there some fundamental ideas
link |
that you've already spoke to a little bit
link |
but sort of broader
link |
that you think is the most popular language in the world?
link |
So I think I did, by doing first class functions
link |
and taking the good parts of the C operator hierarchy
link |
and just keeping things simple enough,
link |
maybe it could have been simpler
link |
but I had to make it look like Java
link |
and interoperate with Java
link |
that there was inherent goodness,
link |
Aristotelian quality there.
link |
And people perceive that
link |
even through all the quirks and warts.
link |
And then over time working on it with the standards body,
link |
working on it not only as a core language
link |
but in the context of HTML5 and making the browser better,
link |
listening to developers, thinking about,
link |
this is something that Nick Thompson wrote nicely
link |
about on Hacker News, I was very flattered.
link |
He said, Java was this thing
link |
where the experts were writing the code
link |
and it was compiled and you had to declare all your types
link |
and Sun didn't really give a damn about
link |
the average programmer who wanted to build real web apps,
link |
And I was in there meanwhile doing a bunch of people's jobs
link |
making JavaScript survive those early years
link |
when it was kind of touch and go.
link |
JavaScript was considered a Mickey Mouse language.
link |
It was for annoyances like the scrolling text
link |
at the bottom of the browser in the status bar.
link |
But I kept listening to developers working with them
link |
and trying to make it run in that single threaded event loop
link |
And I think that forged something
link |
that people have come to love.
link |
Now you don't always love the best thing, right?
link |
I talked about Shakespeare sonnet about
link |
I'm Mr. Sizer, nothing like the sun.
link |
Or the scene from Josh Whedon's film Serenity at the end
link |
where the actual piece in the score by David Newman
link |
is called Love where Captain Mal is teaching River Tam
link |
about how to pilot the ship.
link |
And she's a super genius, super soldier.
link |
She knows how to do it already.
link |
And he's basically talking about how you have to love
link |
the ship because if you don't, it's going to kill you.
link |
And then the piece falls off the ship.
link |
It's kind of like JavaScript.
link |
You have to love it.
link |
You have to love it because now people say we're stuck
link |
with it because it got this priority of place.
link |
But there's love underpinning that.
link |
And actually the listening to developers,
link |
that's kind of beautiful.
link |
There's most successful products in this world
link |
with all the messes, with all the flaws.
link |
Perhaps the flaws themselves are actual features,
link |
but that's a whole nother, that's a discussion about love.
link |
But underneath it, there's something
link |
that just connects with people.
link |
And it has to keep connecting.
link |
If JavaScript kind of went off in this,
link |
people sometimes complain about ES6.
link |
Oh, you put classes in JavaScript.
link |
But it's not true.
link |
It's a dynamic language.
link |
Smalltalk had classes.
link |
Python has classes.
link |
There are lots of Lisp variants that have classy systems.
link |
So people who don't reject it based on some sort
link |
of fashion judgment do use it and do interact
link |
with the standards body.
link |
The standards body is competing browser vendors mainly,
link |
but also now big companies that use JavaScript heavily,
link |
the Paypal's and other such companies, Salesforce.
link |
And they have to cater to web developers.
link |
They have to hire developers who know JavaScript.
link |
They have to keep their engines up to the latest standard.
link |
And this creates all this sort of social structure
link |
around JavaScript that is unusual.
link |
I mean, you get C++ buffs that follow the inner workings
link |
of C++, what is it now?
link |
21 something, I don't know.
link |
But it's a more rarefied group.
link |
It's more like the old language, gray hairs.
link |
Whereas JavaScript is a younger
link |
and more vibrant and large crowd.
link |
There's a community feel to it.
link |
There's echoes, perhaps I don't wanna draw too many
link |
similarities, maybe you can comment on it.
link |
There's C++ is like Wall Street,
link |
and the JavaScript is like Wall Street bets
link |
from the recent events.
link |
It's like there's a chaotic community of all,
link |
and there's some power from that distributed crowd
link |
of people that ultimately.
link |
It's more thematic, it's more of the people.
link |
It lets people in without requiring these credentials.
link |
I remember in the late 90s into the 90s,
link |
people were all getting Java credentials.
link |
And I knew people, and friends knew people
link |
who became Java programmers, and you knew
link |
they really should have been like nature guides or pilots.
link |
They hated programming, but they thought,
link |
I gotta make money, I'm gonna become a Java programmer.
link |
Do you have some, because it's such a monumental moment
link |
in our current history, as a quick aside,
link |
do you have thoughts about this huge distributed crowdsourced
link |
financial happenings with Wall Street bets?
link |
That's like nobody could have, well,
link |
you could have predicted, but the scale and the impact
link |
of this kind of emergent behavior
link |
from independent parties that could happen.
link |
Like I said, my own experience with the dismal science,
link |
as with physics, led me to reject a lot of bad models.
link |
Economics was always compromised by politics,
link |
political economy.
link |
You could also argue that it was,
link |
it used to be a branch of moral philosophy,
link |
so it was concerned with the good,
link |
and it became divorced and became sort of
link |
in this quasi Newtonian way, just about,
link |
everything's just running by itself, don't worry about it.
link |
This monopoly's crushing your Netscape company,
link |
but that's just nature.
link |
And economics couldn't, or doesn't really have good models
link |
for the Wall Street bets subreddit.
link |
You know, they know how to squeeze a short, right?
link |
So the amazing thing is you have Robinhood app,
link |
which was, again, supposedly for the demos, for the people,
link |
and eliminated the fee through various kinds of straddles
link |
or some kind of spread operation
link |
that helped them eliminate the fee or eat the fee.
link |
And in fact, as a broker in these days,
link |
because it takes two days to settle,
link |
there's counterparty risk, as they found out.
link |
And so the Wall Street bets people,
link |
you know, the memes are like the Terminator robot
link |
with the $600 STEMI check and the hedge funds
link |
that make little girl hiding under the desk.
link |
There is a problem, which I talked about
link |
in a recent podcast, which I'm conscious of
link |
from the history of the web, and that is,
link |
you could say it's monopoly,
link |
which antitrust wasn't enforced
link |
after USB Microsoft for a long time.
link |
And a lot of this was due to the money interests
link |
buying control of politicians.
link |
And, you know, in Plato's five regimes, that's oligarchy.
link |
That's where we are.
link |
And now we're seeing a fight against the oligarchs.
link |
I don't know if it'll work,
link |
but you're definitely seeing it.
link |
And it's also kind of hackerish, right?
link |
It's got a hacker ethos.
link |
You know, hey, Robinhood, no fees.
link |
Hey, you know, I could buy a fraction of a share
link |
in this thing, or I can keep buying with my stimulus check.
link |
So I mentioned Hegel seeing Napoleon on the horse, right?
link |
Hegel also talked about the cunning of reason
link |
that you have this sort of, you know,
link |
God sees history in full, and if you believe in God,
link |
or, you know, we don't know the future,
link |
but there's always this sort of fly in the ointment,
link |
this unintended consequence that confounds
link |
the best plans of the powers that be.
link |
And we're living through it.
link |
I'm glad it's not, you know, street warfare
link |
or mechanized warfare, because it has been in the past.
link |
It's more like soft power, and people are fighting back.
link |
Do you think it's possible?
link |
So JavaScript used to be for the front end of the web.
link |
It's now increasingly so being used for back end,
link |
like running stuff that's like behind the scenes.
link |
And it's also starting to be used quite a bit
link |
for things like TensorFlow.js.
link |
So starting to actually use like these heavy duty
link |
applications that are using neural networks,
link |
machine learning, and so on in the browser.
link |
Is it possible in 10, 20, 30 years
link |
that basically most of the world runs on JavaScript?
link |
This is a dystopia and a nightmare to some people.
link |
When we did Asm.js and WebAssembly,
link |
I would joke and mean people with scenes like
link |
Neo waking up in his pod in the matrix,
link |
and he's all skinny and weak and hairless.
link |
And, you know, you realize in the future
link |
that you're living in some simulation
link |
that it's all running on JavaScript,
link |
and you just scream forever.
link |
Gary Bernhardt does these funny talks.
link |
He did watch.js, and then he did this
link |
life and death of JavaScript, I think it's called,
link |
where he took some clever ideas that actually have
link |
a thread of credibility to them.
link |
But I mentioned software fault isolation.
link |
In the old days, when we were using computers,
link |
we said we're gonna use the Unix monolithic monitor,
link |
and it's the privileged program.
link |
This is before you even had hardware rings of protection.
link |
Those, some of the early 60s operating systems
link |
used hardware protection zones.
link |
But Unix is privileged, and the program
link |
that runs user code in a process is hosted.
link |
It's the guest, in the host, and you get to suspend it.
link |
You get to kill it.
link |
If it crashes, it doesn't take down the whole OS.
link |
It's a wonderful idea, but the call into the kernel
link |
is expensive, the system call, so called.
link |
And this has even been optimized now
link |
for things like getting the time of day,
link |
so it doesn't actually enter the kernel.
link |
And meanwhile, hardware architectures
link |
and virtualization techniques have gone
link |
in a different direction, even to the point
link |
where you can do software fault isolation very cheaply
link |
without entering the operating system kernel,
link |
and so you get unikernels and exokernels
link |
and very lightweight VMs.
link |
And so Gary took this idea and said, JavaScript
link |
will take over computing, because the system call
link |
boundary's too expensive, so everything ends up
link |
in JavaScript with these lighter weight
link |
isolation enforcement mechanisms.
link |
It's not totally beyond belief.
link |
It'd be WebAssembly too.
link |
It's nice to ask you sort of for advice to,
link |
there's so many people that are interested
link |
in starting to learning about programming,
link |
getting into this world.
link |
Is there some number of languages,
link |
three to five programming languages
link |
that you would recommend people learn,
link |
or maybe a broader advice on how
link |
to get started in programming?
link |
Well, so you asked about machine learning,
link |
and JavaScript is a general purpose language,
link |
and it's a language that's not that great
link |
for doing matrix operations or doing parallel programming,
link |
I would say, without using some extensions
link |
or some libraries that have some magic in them.
link |
So if someone wanted to learn,
link |
there are amazing languages in sort of the APL family
link |
that are very useful for, I would say, linear algebra,
link |
which gets to a lot of the kernels in machine learning.
link |
And so APL had like J and then K and their K variants
link |
because the guy that did K is still going,
link |
and they're proprietary, but he's still innovating there.
link |
There are, you know, Python is used.
link |
So people talk about TensorFlow.js.
link |
Well, it's not that surprising
link |
because Python was heavily used for machine learning,
link |
and Python was always, you know,
link |
they didn't have this fast just in time compiler tradition.
link |
There were some projects that tried this,
link |
and some of them were interesting.
link |
PyPy was interesting,
link |
but the philosophy with Python was,
link |
oh, you need to go fast, write a C plugin,
link |
and drop into C code.
link |
So I think people should look at multiple languages
link |
because there are different tools in the belt.
link |
If you're trying to do supervision or rapid prototyping,
link |
you want a dynamic language.
link |
You want to throw things together and see what works.
link |
If you are trying to go down to the metal very fast,
link |
well, I'm an old C hacker,
link |
but I was also the executive sponsor of Rust at Mozilla,
link |
and Rust has now escaped, you know,
link |
from that sort of nest where it was born
link |
to be adopted by a bunch of companies
link |
that have a foundation in the works.
link |
Some of the key core team members
link |
are working now at Amazon and other places.
link |
So it looks like Rust has reached escape velocity,
link |
and Rust is an interesting language
link |
because one of our goals there,
link |
one of the reasons I sponsored it was we were all tired
link |
of seeing those remote code execution vulnerabilities
link |
due to C and C++, and we thought,
link |
can we have a sort of safety property
link |
through a type and effect system or an ownership system,
link |
and Rust has that.
link |
And that ownership system is interesting
link |
because it doesn't just give you memory safety.
link |
There's a sort of theorem for free,
link |
a dual that falls out for protection against data races.
link |
So Rust is better for low level programming.
link |
You delimit your unsafe code
link |
where you do have to be unsafe,
link |
and you can prove certain facts about memory safety
link |
and race condition avoidance.
link |
And so I think people should learn these new languages.
link |
I think Go is a great language.
link |
I admire, you know, the Unix people who did that.
link |
Ken Stoll was involved, Rob Pike, of course, David,
link |
what's his name, and other people.
link |
Go is a huge success, really on the server side,
link |
anywhere you have a lot of networking to do,
link |
and it's garbage collected, but it's also very pragmatic.
link |
It has that sort of C flavor.
link |
As an old C hacker, I can't get used to the fact
link |
that they swapped the type and declarator
link |
in the declaration order.
link |
I haven't used Rust, but this is one of the most respected
link |
and loved languages currently, so it's interesting.
link |
Yeah, and it's still young.
link |
You look at these things, JavaScript is now considered old.
link |
It's gone through so many versions
link |
that you can fall in love with it all over again.
link |
25 plus years, you know, it's an adult.
link |
It should be out of the house.
link |
But it could be around another 25 years.
link |
Cannot rule it out.
link |
So Rust will be around for a long time.
link |
The longer you're around, the more likely you're Lindy,
link |
and you're around your wife.
link |
A lot of people ask me, like,
link |
I'm often torn between recommending either Python
link |
or JavaScript as the first language to play with,
link |
because, I mean, it's difficult,
link |
because it's so easy to do JavaScript incorrectly.
link |
It's much easier to do it correctly these days,
link |
or like, well, learn about programming.
link |
But the cool thing about JavaScript
link |
is that you can create stuff
link |
that will put a smile on your face.
link |
Like, as a developer, you can create stuff,
link |
and it'll visually look like something,
link |
and it'll do stuff, and it makes you feel good.
link |
It makes you fall in love with programming.
link |
With Python, you could do the same.
link |
It's a little slower.
link |
And with C++, it takes five to 10 years
link |
to write a program that actually does something.
link |
So, like, there's that tension between
link |
is JavaScript the right first step, or is it Python?
link |
And I've been going back and forth on those two.
link |
My Python, right, it came from a lineage of ABC,
link |
which was a pedagogical language in the Netherlands.
link |
it was a good teaching language, too.
link |
I think it is a good teaching language,
link |
and it's a little more restrictive
link |
in that if you misspell something
link |
in a way that JavaScript might let run,
link |
let reach runtime, it'll get stopped
link |
at syntax check in Python.
link |
That's good for beginners.
link |
I think the sloppiness that some people object to,
link |
like, people were just tweeting at me,
link |
having just learned JavaScript.
link |
They said, I can take a number, and I can index into it,
link |
and get undefined out of it as a property.
link |
A number's not an object.
link |
And I explained why it is,
link |
because like in Java, the primitive types,
link |
which unfortunately are not objects,
link |
can be automatically boxed or wrapped by an object.
link |
And I made that implicit.
link |
In Java, it's typed, and you have to declare things,
link |
and you'll get type errors.
link |
But there are cases in Java where you get auto boxing
link |
or auto wrapping, because you've declared that you want it.
link |
In JavaScript, it just happens.
link |
And so once I explained it, like, oh, wow, I get it.
link |
But it also means that you can commit a blunder that just.
link |
You don't get punished for it, you don't detect.
link |
You get an undefined value,
link |
and you don't know where it came from.
link |
I've been reading a lot about military history recently.
link |
And one way to paint the picture of browsers,
link |
internet browsers, is through the various wars
link |
throughout its history.
link |
I don't know if that's a useful way to look at it,
link |
but we've already talked a little bit about Netscape
link |
and Internet Explorer in the early days.
link |
Can you tell the story of the different wars,
link |
if that's at all an interesting way to look at it,
link |
of the 90s and to today?
link |
So I mentioned that Microsoft, you know,
link |
which was convicted for it, did abuse its monopoly,
link |
but they had a pretty good team by the time they did IE4.
link |
And Netscape, unfortunately, I was like second floor,
link |
and I was friends with all the first floor people,
link |
the front end guys who did the JavaScript event hookup
link |
and things like that,
link |
that that team was fairly burnt out.
link |
And I think having gone public,
link |
the upper management wanted to buy a bunch of companies
link |
to try to go head to head with Microsoft.
link |
Didn't work, but buying a bunch of companies
link |
usually doesn't work.
link |
I think the modern sort of approach roughly
link |
is like Mark Zuckerberg took,
link |
which is to keep them at arm's length
link |
and let them do their thing.
link |
And now that he's pulling WhatsApp in
link |
and people are fleeing it
link |
because it's tied into the ad surveillance.
link |
But, you know, for a while,
link |
they're keeping it separate really does work
link |
because you bought it for its value,
link |
it's complimentary, and you're not messing with it.
link |
With Netscape, when they bought a bunch of companies,
link |
they had some of the first floor people
link |
or the founders burned out.
link |
They had newcomers who wanted their turn to do the browser,
link |
and they hadn't really done browsers or understood them.
link |
And so Netscape 4 was originally supposed to be 3,
link |
and it was so late, they renumbered it.
link |
We did a 3 release.
link |
Jamie and a few others put some extra effort into.
link |
SecureMine was supported in the built in mail program.
link |
And Netscape 4 was late,
link |
and it was only on Windows at first,
link |
and Microsoft had really started doing better,
link |
They copy, and the first version's trash,
link |
and the second one, you're starting to feel threatened.
link |
The third one, you can tell what's gonna happen,
link |
and the fourth one's good.
link |
And plus there's the benefit, like you said,
link |
that it comes as a default browser.
link |
Yes, and yet Netscape's screwing it up,
link |
and Microsoft really putting some quality people on it.
link |
On Windows, it was good.
link |
And they did the dynamic HTML innovations.
link |
Scott Isaac's my old buddy,
link |
a former accountant who programmed in BASIC
link |
and became what Microsoft calls a program manager,
link |
which is kind of an elevated position.
link |
You can be a programmer or an engineer and track,
link |
but you switch to it,
link |
and you sort of lead a lot of design and standards efforts.
link |
And so Scott Isaac put in a lot of those funky DHTML APIs
link |
that didn't quite have the same flavor
link |
as the stuff that I did, and neither of them
link |
was like the later sort of verbose Java,
link |
like DOM W3C standardized.
link |
But IE4 was pretty darn good.
link |
I remember a friend, Scott Furman and I,
link |
got invited by Scott Isaac to Gordon Beers in San Jose.
link |
They were doing a preview of IE4.
link |
This must have been 1997.
link |
And Scott said, yeah, here's the new graphics stuff
link |
We've got something like your Netscape layers.
link |
We've got VML, a vector markup language.
link |
We can do virtual reality.
link |
And Scott and I looked at each other and said,
link |
we're doomed, right?
link |
Microsoft was starting to fire on all cylinders.
link |
So I have to give them credit for that,
link |
even though they abused their market power.
link |
And maybe I shouldn't give them credit
link |
for having the resources to hire talented people,
link |
but they did a credible job on IE4.
link |
What really was bad was that phase of the browser wars
link |
ended with monopoly and perhaps due to the antitrust case,
link |
perhaps due to regulation in Europe,
link |
perhaps just due to Microsoft not liking
link |
dealing with standardization, they let it rot.
link |
They just abandoned it, IE5, 5.5, IE6 later,
link |
but these were not well maintained.
link |
They had a lot of security bugs.
link |
It felt really closed and outdated too,
link |
even though it's getting updated, it's just weird.
link |
Browsers like Mozilla and then Firefox were adding tabs.
link |
Opera had a version of tabs and they didn't add tabs.
link |
And they pop up blocking,
link |
something I should have done from the start.
link |
People realized that you can tell
link |
when the user clicks something
link |
and it goes in JavaScript to open a little window,
link |
that you can sort of inspect the stack
link |
and see that the click originated that,
link |
and it's probably okay.
link |
Whereas if you're just loading a script
link |
and it opens a new window, that's a spam technique
link |
and you should block it.
link |
Tabs were a brilliant innovation.
link |
Like you said, Opera had it,
link |
but I remember I fully switched to Firefox the moment.
link |
I remember the moments of first using tabs in Firefox
link |
and not liking it for the first few minutes,
link |
and then like, wait a minute.
link |
You get the groove, yeah.
link |
You get the groove and you understand.
link |
So that timing, what year was this?
link |
Because also as a aspiring web designer,
link |
I use Table, so we didn't mention Layout or CSS much.
link |
There's also a change in the way
link |
the frames were going away.
link |
So there's a change in the way websites looked
link |
and behaved and all that kind of stuff.
link |
CSS finally, which Microsoft embraced with IA4
link |
and Netscape never really did right.
link |
CSS became a better standard over time
link |
for doing Table Layout that relieved you
link |
of the need to use what are called spacer GIFs,
link |
spacer GIFs, right?
link |
Images, you would throw into space at tables.
link |
The typographic power of the web has gotten better,
link |
but it's still not on the level of PDF
link |
and you can't do advanced typography,
link |
but it's gotten really better.
link |
And even then, tables were getting better.
link |
If you were using Firefox, that would have been 2004
link |
because it was called Firebird until earlier that year.
link |
No, yeah, I think it wasn't.
link |
I don't remember, it was a Firebird, which had tabs?
link |
We had tabs the whole way.
link |
So it started out as Mozilla slash browser in 2002,
link |
There's a BIOS that has an embedded version of IE
link |
and they said, we're called Phoenix Technologies,
link |
you can't use Phoenix.
link |
And so we said, okay, we'll call it Firebird.
link |
And then this Australian centered
link |
open source database project started really like
link |
in the true Mad Max style, just screaming at us saying,
link |
you can't use Firebird.
link |
And I had to sort of be the ambassador and say,
link |
okay, we're gonna rename.
link |
And they're like, we don't believe you,
link |
you shouldn't have used it, we hate you.
link |
And then we renamed it to Firefox.
link |
And they're like, ah, we love you.
link |
And then I haven't heard of them ever since.
link |
But Firefox was a clever name.
link |
We had to think of something distinctive.
link |
We wanted to keep the fire going.
link |
And it turns out there's a red panda, right?
link |
That's the nickname for it.
link |
So that's the second set of browser wars.
link |
So how was Firefox born, how was Mozilla born?
link |
There's a long story there too.
link |
So Netscape got acquired by AOL,
link |
which as I say was a reasonable happy ending
link |
for a lot of people,
link |
because Netscape otherwise was gonna go out of business
link |
because Microsoft was just killing its market.
link |
There was no way to charge for a browser.
link |
Windows came with IE, IE4 was pretty good
link |
and Netscape 4 wasn't that good.
link |
It took a while to get better.
link |
But the Netscape executive said,
link |
let's do an open source escape pod.
link |
And like in Star Wars, A New Hope,
link |
the gunner won't shoot it
link |
because there's no life forms on board, right?
link |
It's not a threat.
link |
And so we did Mozilla in 1998
link |
and it looked like it was going to initially
link |
just give the world an open source browser.
link |
But it's really hard to get people to work
link |
on this sort of hairball that had been hacked up
link |
over by that point four years.
link |
And it also couldn't have the crypto module
link |
for secure sockets, so called,
link |
or now transport layer security.
link |
That was an electronic munition.
link |
We were not allowed to release that
link |
in the full 1024 bit key strength.
link |
And yet people, one of whom I happened to meet previously
link |
at SGI when I went on a sales support engineering trip,
link |
Tim Hudson in Brisbane, Australia,
link |
and Eric A. Young did what became open SSL.
link |
It was called SSL EAY after Eric's initials.
link |
And Tim and Eric took their open SSL
link |
outside of the purview of the NSA
link |
and the Department of Commerce,
link |
and they stuck it into Mozilla's code.
link |
And that was perhaps the best hack that was done
link |
in the first few months after we open sourced the browser.
link |
We had other problems.
link |
The politics inside Netscape were riven
link |
by these acquisitions.
link |
So the one acquisition that kind of messed up Netscape
link |
for also wanted to keep doing a proprietary mail
link |
and groupware program, not Jamie Zawinski's mail program
link |
that was in Netscape two and three.
link |
And they held it back from open source.
link |
We didn't have a mail program, it was just a browser.
link |
We didn't know what AOL will do to us.
link |
Turns out they didn't interfere with us for a long time.
link |
But Netscape wasn't the best steward of Mozilla.
link |
We were operating Mozilla as a pirate ship
link |
without a legal entity.
link |
So most of us worked for Netscape
link |
under a separate organization.
link |
And initially the first engineering manager,
link |
Tom Paquin of Netscape was the Mozilla founding manager.
link |
But he left pretty quickly
link |
and he left me as the acting manager,
link |
which is more like method acting in my case.
link |
And that was my first management stint.
link |
But then someone who'd written the licenses,
link |
Mitchell Baker, she was a lawyer at Netscape.
link |
She was involved in the open source license decision making
link |
and the actual writing and construction of those licenses.
link |
That was Mitchell's job, Netscape public license
link |
and the truly open Mozilla public license.
link |
And there were two because Netscape needed,
link |
because of some encumbered code, needed some special rights
link |
but that went away over time.
link |
Mitchell was always interested in Mozilla
link |
and she came back from maternity leave
link |
and she said, I'll be the manager if you want.
link |
And Jamie and I said, sure.
link |
And then Jamie quit, he quit after a year.
link |
He said, this didn't work, I'm sorry.
link |
He acted like it was a total failure
link |
because Mozilla didn't restart the browser market.
link |
But there's no way it could have, right?
link |
Netscape was still shipping variants of Netscape 4,
link |
which was based on the old code.
link |
Mozilla was trying to react to the code
link |
to make greenfield for developers.
link |
So it was one of my big goals.
link |
It wasn't a technical goal so much as again, a social goal.
link |
People wanted a more standard spaced browser.
link |
They wanted less of a hairball that had been hacked on
link |
by ex grad students starting four years prior.
link |
So we said, we're gonna make a modular code base.
link |
We're gonna use a variant or an open source version
link |
of Microsoft's component object model,
link |
has reference counting and standardized V tables,
link |
virtual calls and C++.
link |
And we're gonna use JavaScript.
link |
We're gonna have a bridge between those two
link |
so you can script those components
link |
just like Java components.
link |
We're going to make a portable front end
link |
with a markup language for the user interface.
link |
Not tables, not HTML, but custom menus
link |
and dropdowns and toolbars.
link |
And that was called Zool, XML user interface language.
link |
And some real talent on the Netscape side delivered that.
link |
Dave Hyatt, who was instrumental in Zool,
link |
Chris Watterson, Joe Hewitt, Blake Ross.
link |
And Blake was an intern.
link |
He was like a high school aged intern at Netscape.
link |
And at some point we were innovating rapidly
link |
in the Mozilla world and Netscape was still caught up
link |
in this management mess from these acquisitions
link |
and it wasn't delivering.
link |
And every year they were wondering if ALO was gonna come
link |
and start beheading the executives
link |
because it didn't do anything useful.
link |
And there was this thought
link |
you should take the Netscape browser engine
link |
and put it in the Windows ALO client,
link |
which was the dial up client
link |
that all the increasingly aging users of ALO were using.
link |
It would have been too big a change.
link |
So it wasn't clear why ALO bought Netscape,
link |
but as I said, they left it alone.
link |
But Netscape didn't leave Mozilla alone.
link |
And so in 2001, Mitchell called me up and said,
link |
I'm no longer employed.
link |
And I was like, what?
link |
No, no, this wasn't my choice.
link |
And there was a layoff which maybe accidentally
link |
or on purpose got rid of Mitchell.
link |
But the funny thing was we had an open source project.
link |
We had a lot of the engineers on staff on our side
link |
and we had people we'd hired through the Mozilla community
link |
who were top notch.
link |
They'd risen, they came in high quality, they knew the code
link |
and they actually were better than the average
link |
or median hire of Netscape.
link |
And so the funny thing was the executive
link |
who thought they'd gotten rid of Mitchell in the layoff
link |
on the next week's community call around Mozilla
link |
and what to do, there's Mitchell.
link |
And so this showed you can kind of transcend
link |
your boundaries of corporate open source
link |
if you get a project that has enough loyalty,
link |
even among the paid staff.
link |
Because we had outside people contributing.
link |
We had people at Red Hat and a few other places,
link |
but the majority of the hackers were employed by Netscape.
link |
But a lot of them at that point had come from the community
link |
and others got the community and wanted to work with it.
link |
And it was really the weakest engineers at Netscape
link |
who didn't like Mozilla and didn't like the crucible
link |
of competing with the better programmers.
link |
So if the project is good enough, it will rise,
link |
the Phoenix will rise out of the...
link |
That's exactly right.
link |
And so we had this Mozilla code base
link |
that was getting better.
link |
In fact, I think at some point in 2002
link |
when we declared Mozilla 1.0, I engineered a roadmap
link |
that successively through similar sort of six week,
link |
five week releases, like we all do with browser releases
link |
nowadays, Chrome does and Firefox braved us three weeks.
link |
We got to a point where we said, you know what?
link |
This is like the 1.0 that you want to release
link |
because if you hold it back any longer to polish it,
link |
you're denying others the ability to use it.
link |
It's like pro engineer, the mechanical CAD tool
link |
embedded the code, they embedded the layout engine.
link |
And Mozilla 1.0 was like a Netscape communication suite.
link |
We had at that point gotten male people
link |
to reintegrate mail and news and we had an editor for HTML.
link |
And it felt like a 90s suite, suiteware.
link |
And it felt kind of bloated.
link |
And the people who were taking that Mozilla open source
link |
and then adding Netscape flavor to it
link |
were not calling the shots right.
link |
And they were also under AOL's thumb a little bit
link |
and that they said, well, we should probably put
link |
the AOL instant messenger chicklet on the toolbar.
link |
We should put the ICQ, the other messaging system
link |
that AOL had acquired.
link |
We should put the ICQ button on the toolbar.
link |
And pretty soon Netscape looked like a bit of a NASCAR
link |
badged version of Mozilla.
link |
And that also made Mozilla more popular.
link |
And yet they had contrived to fire or lay off the leader
link |
and we carried on with an open source structure
link |
where Mozilla was still, you know, Mitchell was calling
link |
sort of management or project level shots
link |
and I was calling technical shots.
link |
And we had a popular suite, but we thought,
link |
why not make it just a browser?
link |
Because it'll be simpler, it'll do one job well.
link |
And even then we can strip it down by having extensions.
link |
So Dave Hyatt and Blake Ross, the high school aged intern
link |
did the first version, which was called Mozilla slash browser.
link |
It was very, the small group of us, Ian Hicks
link |
and Asa Dotzler, me and Joe Hewitt and Hyatt and Blake.
link |
And Hyatt was really the senior hacker.
link |
He'd done all these things like amazing cross platform menus
link |
through the user interface, markup language.
link |
And he knew how to do tab browsing.
link |
He'd implemented it natively on Mac OS at the time
link |
in Camino originally called Chimera.
link |
He'd written multiple implementations,
link |
which was a thing programmers should do.
link |
It's like the V8 team did for those missing years
link |
when the rest of the Chrome team's like, where's V8?
link |
In fact, Dave's wife, Rebecca told me a story
link |
about when they were at UIUC,
link |
they were also University of Illinois grad students.
link |
There was an assignment, it was a programming assignment
link |
it was supposed to do at the end of the semester.
link |
And Dave's friend was this, I'm gonna go think
link |
and I'm gonna design and I'm gonna make this
link |
platonic perfect form of the program.
link |
And then I'm gonna write it at the end when it's due.
link |
And Hyatt just went there and started hacking.
link |
He wrote one version, he wrote a second version,
link |
a third version, end of the semester comes around.
link |
The friend's not doing too well.
link |
It wasn't perfect and it wasn't written.
link |
I'm not sure how that story ended for him,
link |
but Dave's version was a fifth iteration, it was great.
link |
And so he'd done that with everything you need
link |
in a tabbed browser.
link |
And this really showed well in Phoenix,
link |
what we called Phoenix and I had to rename two more times.
link |
And Blake went to Stanford, he became a Stanford student
link |
and couldn't work on it.
link |
Dave Hyatt went to Apple in 2001.
link |
He was one of the founding Safari team members.
link |
But he was still blogging about tabbed browsing.
link |
I think Apple at some point said you should.
link |
Safari have tabbed browsing?
link |
Yeah, but it was because of Hyatt.
link |
Hyatt was quite a feather in their cap.
link |
Don Melton, who had been the engineering manager
link |
for Safari from the beginning, had been in Netscape also.
link |
And so there's this diaspora of talent
link |
and yet Hyatt was still kind of writing blog posts
link |
about how to do tabs right.
link |
And at some point Apple said, don't blog about that.
link |
That's our proprietary tab technology.
link |
And I was like, no, it's not.
link |
It was an opera and I've refined it.
link |
So we had to replace people and we had Ben Goodger,
link |
a New Zealander we hired at Netscape.
link |
And he stepped in to be the Firefox lead.
link |
And we also had this weird circumstance
link |
where AOL finally did notice that Netscape
link |
was kind of an albatross,
link |
that they bought it for no particular benefit.
link |
And even then the AOL politics were also heinous,
link |
sort of East Coast politics.
link |
I remember taking two trips there
link |
because I was a principal engineer.
link |
And so us principal engineers got trotted out
link |
to do dog and pony shows in Dallas, Virginia.
link |
And the AOL opera management was very East Coast in flavor.
link |
And they were at that time merging with Time Warner,
link |
which did not go well.
link |
So one of these years we went out there
link |
and we were all doing dog and pony shows
link |
and there were these characters
link |
that were sort of like marketing guys.
link |
One of them was wearing a cravat
link |
and one was named Reggie.
link |
And they were very you rather than non you.
link |
Or they were like what's what's Stoneman's
link |
metropolitan film, UHB, urban haute bourgeoisie.
link |
They were haute bourgeoisie.
link |
They were funny and they were kind of useless
link |
and kind of preppy.
link |
And then the next year we went back
link |
and I said, where's Reggie?
link |
And it's like, oh, Reggie's not here anymore
link |
because Time Warner realized that the merger
link |
wasn't in their interest either.
link |
And then the sort of knives came out.
link |
And these mergers rarely work, right?
link |
This is very difficult.
link |
You get these giant companies
link |
and they think there's gonna be synergy.
link |
That was the 90s, late 90s watch word.
link |
And there wasn't synergy with AOL buying Netscape
link |
and there wasn't synergy with Time Warner and AOL.
link |
But did AOL ever really work?
link |
Was it ever really cool?
link |
Like the same kind of fire and excitement
link |
that Firefox eventually created,
link |
was that ever there in AOL?
link |
AOL was the right time to do a dial up service
link |
that got distribution by basically
link |
leaflet bombing compact discs on the country.
link |
And they beat out CompuServe and the other ones,
link |
Prodigy, and then the web happened.
link |
And so you had almost like this isolated continent,
link |
like some of the evolutionary biologists I follow
link |
make fun of the funny large marsupial mammals of Australia,
link |
how silly they are.
link |
And so AOL is like Australia.
link |
And you saw it over time because they kept aging
link |
and they were using AOL to get online
link |
and they couldn't really use a web browser.
link |
And it became sort of a valued cohort
link |
because they still have relatively high
link |
socioeconomic status and they have grandchildren,
link |
but it's going away, it's dying at some point.
link |
Towards the end of the aughts, that decade,
link |
and then to the decade 2010 plus,
link |
that Firefox became this incredible,
link |
I forget when Chrome came out, but.
link |
2008, but Firefox was the sexy cool thing
link |
that represented a lot of the cutting edge technologies
link |
and all that kind of stuff.
link |
Web 2, it was amazing.
link |
Kim O'reilly and John Battelle did the first Web 2 conference
link |
which eventually became huge and they split it.
link |
But that was in 2004, it was right when Firefox was out.
link |
Craigslist was huge, it was killing classified revenue
link |
for newspapers, but there was just this ferment.
link |
Wikipedia along there somewhere.
link |
Gmail was already done and it was an impressive web mail.
link |
There were others before it like Hotmail,
link |
but Gmail was really impressive from Google.
link |
And Google Maps, people started seeing what could be done.
link |
They thought how can you drag the map around
link |
and how does that work?
link |
And it was all JavaScript and images and.
link |
So Gmail was 2003, four?
link |
Yeah, it actually started quite early.
link |
It might've been 2002 or three,
link |
but by the time we started dealing with Google and Firefox
link |
to get the search deal,
link |
which was the main revenue source for Mozilla,
link |
and still is, 2004, early, Sergey Brinz,
link |
one of his trusted engineer guys, Fritz Schneider,
link |
made contact with me at Mozilla and we started talking
link |
and we realized search and browser need each other.
link |
And this is deeply true, right?
link |
This is still true.
link |
This is why a lot of the search engines
link |
have their own browsers.
link |
Yeah, so in case people don't know,
link |
the main revenue source for the browser
link |
is the default search engine,
link |
which is kind of incredible to think about
link |
that that is a revenue source.
link |
It's a little bit sad.
link |
Yeah, it leads to this capture or kill effect
link |
where you have the search engine own its own browser
link |
and other browsers may struggle to get the distribution
link |
we talked about earlier.
link |
So where, and you said you've figured out
link |
that Google is working on its own browser
link |
at some point there.
link |
2006, so would you say Firefox versus,
link |
was Internet Explorer part of the war here
link |
or was the Firefox versus Chrome?
link |
So Firefox didn't quite cause Microsoft to reconvene IE.
link |
They did do IE7 and I remember being on a plane
link |
back from the standards meeting,
link |
JavaScript standards meeting from Seattle, from Redmond,
link |
and there was some Microsoft guy in front of me.
link |
Turns out my wife knew him from her past life
link |
before we married and he was just this bearded big guy
link |
we should have just killed Firefox in the cradle.
link |
All we needed to do was add pop up blocking in tabs
link |
and we could have made Internet Explorer kill Firefox.
link |
And it's like, shoulda, coulda, woulda, pal.
link |
And I was right behind him during this.
link |
But they didn't, they were slow
link |
and IE7 wasn't that great.
link |
And what really got them started I think was Chrome.
link |
And I talked to Larry Page in 2005,
link |
I think I said, we're talking about the Firefox relationship
link |
but he was also saying, what about WebKit?
link |
This was Apple's version of the old KHTML engine from Linux,
link |
the KDE side of Linux that was used in the Conqueror browser
link |
also with Ks that Apple had forked.
link |
And in 2005 was when Apple's principals
link |
including Dave Hyatt, Maciej Stokowiak,
link |
some of my friends who are still there said,
link |
we must stop patch bombing this poor KHTML project.
link |
We should make a proper Mozilla like organization,
link |
Now it wasn't a separate nonprofit or anything.
link |
It was still Apple, it was Apple controlled
link |
but they made their fork first class
link |
and they made it be something that they all worked in
link |
And that was before Chrome.
link |
And then Chrome, Larry Page said, what about WebKit?
link |
I said, yeah, it's nice.
link |
I have friends who work on it.
link |
You might use that if you do your own browser.
link |
Why don't you do your own browser?
link |
Don't worry about Firefox.
link |
You should do your own browser.
link |
You can have your own opinion of how it should work.
link |
And sure enough they did.
link |
So by 2006, we knew they'd been working on it.
link |
Some of my friends who'd been at Netscape
link |
did the original demo.
link |
And the demo wasn't what you thought.
link |
It didn't have the fast JavaScript yet.
link |
That was still off in Denmark on a farm.
link |
It had tabs because all browsers had tabs at this point.
link |
And it had this software fault isolation I mentioned.
link |
It was through process isolation.
link |
So in theory, each tab has some operating system process.
link |
And so what's gonna take your tab down?
link |
Well, WebKit has bugs that can crash it
link |
but Flash was still big then.
link |
All the restaurant sites remember.
link |
And Flash crashed a lot.
link |
So the demo that I heard about,
link |
my friends at Netscape as a lot of people did,
link |
inside Google was the sad tab.
link |
They showed an early version of Chrome
link |
which is just this bare bones tab browser.
link |
They loaded a site with a known Flash volume
link |
and then suddenly Flash crashes.
link |
And everyone expected the whole browser to go down.
link |
But instead you got this little sad face in the tab
link |
and you could reload it and there it is again.
link |
So this was an improvement.
link |
It was a real move for security.
link |
It was based on a company they acquired
link |
called Green Border.
link |
They had some really big brains like Olfar Erlingsson
link |
I think was involved.
link |
And they had done some exotic security stuff
link |
but they ended up simplifying it to this process isolation.
link |
And Firefox didn't have it at the time.
link |
So we were still struggling with security bugs.
link |
So we knew Chrome was coming
link |
but it took two more years to come out.
link |
And we were still getting the Google search revenue
link |
and we were still making Google the default engine
link |
and Firefox was still growing.
link |
Firefox grew I think until 2011.
link |
That was when it peaked.
link |
And as it started falling, it was because of Chrome.
link |
Chrome came out in 2008 and it had a comic book
link |
that leaked accidentally that showed some of the people
link |
Lars Bock was in there and so on.
link |
It was kind of soft launch
link |
because they didn't market it heavily.
link |
They didn't push distribution.
link |
But Google had reason to worry about distribution
link |
because Microsoft was doing a search engine, Bing,
link |
In fact, when they came out with Bing,
link |
Google was worried that Microsoft would just brute force
link |
switch the default browser in everyone's Internet Explorer
link |
or even Firefox on Windows to Bing from Google.
link |
And Microsoft wasn't I think ready
link |
to dare the antitrust cops that way
link |
even though they'd gone to sleep.
link |
And I don't think Bing was ready either.
link |
But just in case it happened, Sundar Pichai,
link |
who rose very well based on this work,
link |
was sort of in charge of getting distribution deals.
link |
And he got Google toolbar
link |
and Google desktop search distribution.
link |
And if you remember those pieces of software,
link |
those were like desktop extensions,
link |
toolbars or operating system extensions
link |
for doing desktop search, searching your local files.
link |
Kind of like Mac OS Spotlight, right?
link |
And there were some features that we still missed
link |
that didn't make it into Chrome.
link |
But Sundar got OEMs to bundle those.
link |
And then he got enough of those deals
link |
that by 2007 or eight, Google felt,
link |
well, if Bing, Microsoft does the worst
link |
and tries to force Bing,
link |
we can reach in and reset it with that point of presence.
link |
So that was good for Sundar's career
link |
and it was good for Google,
link |
but it never came to pass that they had to defend.
link |
Microsoft was still slow.
link |
And by the time they saw Chrome come out,
link |
then they did what would have been IE9.
link |
And then they said,
link |
we're gonna have a fast JavaScript engine
link |
to Chakra, Chakra core.
link |
And they did okay.
link |
They were another process isolated,
link |
fast JavaScript browser, tab browser.
link |
So it sounds like there's a deep fundamental coupling
link |
of search engine and browser
link |
that's mixing this whole thing up.
link |
And obviously Firefox doesn't have a search engine.
link |
That's like, I mean, you're partnering with somebody
link |
with a search engine.
link |
With Yahoo or with Google or so on.
link |
They tried Yahoo, that was unfortunate
link |
because I think even though Marissa Mayer talked about it,