Dan at SqueakLand.org
Fri May 7 04:46:39 UTC 2004
I just spent a while away from the computer (at the skate park actually ;-), and found this idea trying to take shape in my mind. It seems so obvious but, if it were, someone would have already done it and I think I'd at least have heard about it...
The idea is to start with a lightweight VM, then add a sort of combination image segment mixed with package (what I had hoped environment/project was going to become), and glue them all together like a wiki.
So, imagine that someone has a little Smalltalk VM in Java that can be attached to a web page, and that the web page also includes a mini image, or code that the VM can run to build such an image. So now we have a little Smalltalk kernel running on a web page (I know of at least one such project).
At this point you might say, well, it's less powerful than Squeak because it's a tiny kernel, and it's slower than Squeak because it's running in Java instead of C. To which I might say, well it all fits in 200k *on the page*, with no need to store VM or image. The point is that it's a quick click in any browser, and it runs *fast enough*.
OK, so now imagine you have loaded this kernel, and you build a cool project with it, and you want to save it. Supposing that part is just like a wiki. Like, poof, there's a new page, and anyone that browses to it is running your little Squeak project.
And now suppose that these things compose themselves like little packages with name spaces, so you could import what you need from other such pages to do something a bit more complex. If someone clicked on your project, it would just start loading those requisite pages, and then start running.
The idea itself is very simple -- all it needs is an equally simple architecture so that it could not possibly fail. The web serves as both the repository of packages and the wiki of cool projects. Because there is no difference.
If anyone has done this, then I'd like to hear about it.
The closest think I can think of is Mark Lentczner's WheatFarm.
And whether anyone has or not, I think we should do something like it with Squeak (or Squeak reborn as one of these nice small kernels).
A few of the architectural questions are...
What should each page hold? An image? A piece of an image? A binary object file? Source code?
How are the page/projects linked together for sharing and inheritance?
Does each page run as a separate image, or do they get knit together as needed?
If as a separate image, then how do they share objects and inherit functionality?
If knit together, then how, and how does it scale?
And so on. . .
I just have this feeling that it can't be all that hard.
More information about the Squeak-dev