
Dan Ingalls
380
make a kernel, what other kernels could we build that are even simpler,
even more uniform.
It’s like what math did. Math found by symbolizing things that you could
simplify a lot of stuff. Then, because of that, you could start to think about
bigger constructs. That’s my hope.
Seibel: When you say a kernel, you’re talking about a programming kernel.
What’s the core of the Lively Kernel?
Ingalls: What I mean by a kernel, typically, is you put together enough stuff
that it can, in some sense, build itself or build other useful things. Squeak is
one that really can build itself. The Lively Kernel presumes the existence of
JavaScript and some graphics, but it ends up with the ability to edit the
graphics so that you can make new graphical things and to edit the programs
so you can make new programs. So it’s enough to build all the applications
that you might want to build in a browser.
I think in playing this game you get to hide layers that you want to. The
question is, where is your playing field. In Squeak the whole language is part
of the kernel so it’s got its own compiler and byte-code interpreter. And it’s
got its whole graphics system—it’s got BitBlt and all the stuff around that.
It looks like those are an important part of any kernel but you can take
them out. You can say, “Let’s assume that we have a dynamic language; let’s
assume that we have graphics.” In my old thinking, I would have thought,
“Well, there is nothing else.” But it’s not true. What’s left is, how do you
put the graphics together to make an interesting user interface
environment? And how do you bring programs and scripts up to the level
that you can change them?
I was forced, by trying to come up with something that would run without
installation, in a browser, to take what was in the browser. What’s in the
browser? Well, we’ve got JavaScript and we’ve got a graphics environment.
It was a chance to step back from all this and say, “Well, yes there are
language kernels, there are graphics kernels, and then there’s this other kind
of self-supporting user-interface environment kernel.”