Hah! I never figured Croquet and Lazlo to be in competition. See the comments here.
Author: Stearns
How do distributed systems work?
How do you coordinate activity across a network? People are doing this all the time, with varying degrees of success. But how is it supposed to work? What is the model to be followed? When I graduated mid-eighties, “Distributed Systems” was still a graduate specialty subject, not a pervasive guiding principle. Today, people like myself don’t seem to have a common ontology of approaches. Well, it’s about time.
“Turn me on dead man” (The Beatles)
The Collaborative for Croquet should be good to go, again. Get the new download.
We’ve lengthened the fuse on self-destructing deleted stuff and improved the error logging, and have not seen further “no such object” errors. (Except for one person who was using an older version. This beta release doesn’t check your version, but I could tell from the error report that it was something we fixed two versions ago.)
Also, the Macintosh VM that was included in the last download had gotten miscopied somewhere along the chain. Testing the new .zip confirms that it works on Mac and Windows. (Linux folks will have to test on their own.)
Anyway, this beta version still doesn’t have anything to reset itself if someone does manage to crash things, so if it takes longer than a minute or two to connect, let us know.
Computers suck. Film at 11.
There’s something wrong with what the Collaborative .zip file did to the Mac VM. Needs a new one this weekend. Stand by…
“Well, no one told me about her… She's not there…” (The Zombies)
Getting nothing but a red screen at CroquetCollaborative.org? Here’s why.
Croquet keeps track of everything ever created, so that anyone can tell each object to do stuff. Most of the demo applications in the current SDK keep track as long as they are running. That creates a problem for our KidsFirst Application Toolkit demo,
and its public space at the Collaborative for Croquet. The public space is meant to be a long-lived environment, in which you can come and create (or destroy) stuff and rearrange it, and come back later to see things as you left them (perhaps evolved by someone else).
So we resort to a very old programming technique. And if you’re a developer, we need your help!
The Collaborative For Croquet
We’ve got a bunch of Croquet stuff going on. We have the KidsFirst project in early education. There are a few folks who would like to work with the KidsFirst project as educators, academics, etc., but who need an entity to work with. We also have a fairly traditional open-source development project for the software used by KidsFirst, called the KAT: KidsFirst Application Toolkit.
And we REALY, REALLY, REALLY want a place that people can just connect to and try Croquet. To interact with others through Croquet. To come back another day and have some hope of finding the same 3d world, evolved though it may be, but still maybe having some of the same things that had been put there in the previous visit. A little open-source 3D-direction-manipulation real-time collaborative place on the Internet.
And so we have formed “The Collaborative For Croquet”.
Check it out at: CroquetCollaborative.org.
The KAT
Our KidsFirst project includes a great deal of what we’ve learned about Croquet. We’re making all the code available through the CroquetSource code repository, as part of the Contributions collection of code that will be distributed in the forthcoming Croquet release. (This repository is available to developers ahead of release, as part of what David Reed calls “Invention in public.” For info on updating, see this movie and this discussion thread. There will also be a new image distribution shortly.)
We call this code the KAT – KidsFirst Application Toolkit. It fits over all the other Croquet SDK code without changing it. All the KAT-specific classes begin with K – partly for the KidsFirst project that informs its development, and partly as homage to Alan. As the code matures, you may or may not see some of the KAT code migrate down to the base classes from which it inherits. (For historical reasons, the name of the Monticello package is “Wisconsin.” This may change.)
Child's Play
Croquet leader Alan Kay has noticed that making technology work well for children is often a good way to make technology work for everyone. This concept has informed his recent work with VPRI, SqueakLand and the One Laptop Per Child project.
We’re starting a project in Croquet called KidsFirst, in which we push the limits of ease-of-use and collaboration to the extreme by focusing on the three legs of an early-education community of practice: very young children, busy teachers, and non-specialist parents.
Digital Clutch
We’re getting some practical experience using Croquet away from of the confines of the lab and out on the wide open Internet. One problem we found is that our “outgoing” bandwidth (from each machine to the others) is often limited by, e.g., consumer Internet Service Providers. At my home, if I try to send more than about 30 KBytes/sec, my ISP kicks in a sort of governor in which it transmits the bits more slowly to keep my upload speed constant.
When this happens, it takes longer for the bits to reach the Croquet router that timestamps and redistributes them to all the participating machines. No participating machine, including our own, will act on this until it comes back to us from the router. So when the messages take longer to get to the router, they get timestamped for execution farther and farther from when they were sent. If we keep getting throttled, we end up falling further and further behind. It doesn’t take long before you do something and it seems like nothing ever happens in response. So you really don’t want to get your upload speed clamped.
Whenever we move the mouse around, the mouse position is sent along with a bunch of other stuff. When we send voice or video, much more data goes. This is fine on a high-speed Local Area Network, but not so good in the real world. We can and should send a lot less data. But how efficient is efficient enough? With different networks, there isn’t a single target number. The limits could even vary with the time of day or other traffic.
We’ve had some good preliminary results with a rather elegant solution.
Open-Source Curriculum
M.I.T. decided couple of years ago to put their entire curriculum on-line. Anyone can use it for free. They feel that the value they provide as an institution is not threatened, but enhanced by making their materials publicly available.
Our preschool, Little City Kids, is now doing the same thing. There’s a lot of stuff we do charge for – individual child-care, franchising to help you run your own Little City Kids, and educational toys that for schools or for home. We have a lot of folks using our curriculum, and quite often, it brings them to our other services as well. That’s plenty. For example, we have quite a few home-schoolers use our curriculum, and they buy toys to go with it.
One of my themes in software development is that platforms tend to not directly make money for their creators. I think a curriculum is the equivalent of a platform for schools. It’s expensive to produce, but necessary if you’re doing something different that doesn’t let you use someone else’s. However, I no longer think it’s wise to expect open-sourcing to reduce costs. It can happen in some fashion, but it shouldn’t be the driver. Instead, you produce the platform because you need to, and you share it because it’s a good idea for helping you with your real product. I think wider use can help improve the quality of the platform, and that this applies to our curriculum. But we are not, at this time, trying to provide a means for people to directly contribute to the curriculum content itself. (More about this later…)