[General] [Ann] Lively kernel 0.8 is out!

Dan Ingalls Daniel.Ingalls at sun.com
Sat Feb 2 08:27:49 CET 2008

[Folks -
I know this is a bit long, but it articulates some seeds of this community,
and, for that reason, needs your criticism as well]

Hi, Mark -

Thanks for your candid response.  This is the beginning...

>Dan, as you know, I'm eagerly looking forward to seeing a system that
>brings together the strengths of our respective projects. We would
>both like to see lightweight, interactively created active content
>become as prevalent and easily shared as html text is today. As
>section 2 <http://google-caja-discuss.googlegroups.com/web/caja-spec.pdf>
>argues, I believe security problems have been the fatal flaw which
>killed most previous attempts at active content. Caja gives us a basis
>for addressing these security problems. Lively gives authors a medium
>for creating active content worth sharing.

I'm looking forward to this convergence too.  Don't give up...

>However, your recent message has me concerned that Lively is deviating
>ever farther from programming patterns that can be secured. Before
>making these changes, what thought was given to their possible
>compatibility with object-capability security?


... and therefore we owe you (and the higher value of secure architecture that you represent) an apology for this slight.  Yet we do not feel at all apologetic for the following logic of how we are trying to bootstrap this project...

Our first goal for this project is survival, and it is not a slam dunk by any means.

We are following our intuition regarding a number of sub-goals where we are trying to maximize the impact (/utility/novelty/coolness...) divided by the effort required in each case.  Here are my favorites among those "sweet spots"...

1.  A real (and lively) development environment for JavaScript

2.  A cool demo of "simple things are simple"

3.  A educational playground like EToys for JavaScript

4.  A useful PIM like Hypercard, and able to handle content like our engine demo

5.  Some way to encapsulate arbitrary (not just LK) web content in LK so it becomes
	a mega-malleable mashup framework

6.  A compelling demo of a collaborative web page

7.  A really easy to use application builder along the lines of Fabrik, but with a parts-list
	spreadsheet alternative to wires

My feeling is that if any of these really works, then it/they can carry the project for a while as it matures and gathers interest.

Of course one of these could be,

N.  Demonstrate a Caja-based version with true modularity and security properties,

and another could be,

M.  Rewrite the whole Morphic framework along the lines the Viewpoints folks are exploring with Lessphic(tm) and their simplified outline-based graphic kernel.

The only reason these are not on our list, is that, when it comes down to priorities, we'll first try to get bootstrapped in a manner we understand and can pull off ourselves

Now let me tell the story of the first four Lively Kernels

#1:  Canvas model with  random JavaScript, transcribed from various other (Java) apps

#2:  Morphic architecture on top of Java2D graphics engine

#3:  Morphic on SVG extended by JavaScript

#4:  Morphic on SVG with wrapper API

Wow, there have been four generations already?  That's right, and here is how it has unfolded:  In every case we did an experiment that was a little proof of concept.  We started with #1 around October of 2006.  It was just a year ago that I wrote the first Morphic kernel that gave us #2.  It worked, and so we continued and made it real.  Then in May of last year Krzysztof wrote just enough to demonstrate the Morphic in SVG, and we realized we could run LK with no installation.  There too, we followed the experiment with a full rewrite and moved forward to full SVG.  Then last October we faced the non-portability of our SVG interface, and Krzysztof did another experiment to demonstrate the Morphic kernel running with wrappers (and thus able to run in, eg, Opera or Batik/Squiggle).  Here again, we moved forward with the result knowing that Opera would eventually work, and Batik would allow us to make a plugin for, notably, Internet Explorer.

So, every experiment worked?  No, not really.  There was another one in there between #1 and #2 where we tried integrating everything with Dojo.  Here we did the kernel experiment in a week as usual, but we discovered that Dojo was not lightweight, and was (at least at the time) full of circumlocutions to deal with all the old HTML models and the incompatibilities between browsers, and this simply scared us.

The point is...
LK is relatively small, and you can experiment with new versions in a week or so.  We could help by restructuring a few files to make this inner kernel more apparent.  Basically what is needed is a single world along the lines of the "Simple example morphs" world, and just the classes needed to support it.

And to return at last to your concern, Mark, we should then be able more easily to scrutinize that smaller corpus and actually rewrite it a couple of times as an experiment in Caja.  And this is just the approach we anticipate in the case of the Viewpoints rewrite of Morphic.  We want all these things to happen, we just need to follow our "survival agenda" for a while, and hopefully more folks will join up and help to carry out those other experiments.

	- Dan

More information about the lively-kernel mailing list