The first real release of Croquet is nigh….
David Reed describes Croquet as “invention in public” of a technical model for “enabling cooperation at all levels.” For example, the two main non-Croquet models of collaboration are to either: 1) have members of a collaboration work individually on their own computers and then sequentially pass saved data around to the other members using some out-of-application system (like email), or 2) have a central big-iron computer run an application that all members of the collaboration can view and perhaps participate in, up to the engineering limits of the server/network architecture. By contrast, the principle idea of Croquet, dating back in part to David’s1978 PhD thesis, is that rich computing applications can run in a virtual, collaborative environment rather than on a central server. This is achieved by running the identical shared model on each member’s machine, and using Croquet’s “secret sauce” (called Tea Time) to correctly coordinate all the individual user’s inputs so that the same thing happens at the same virtual time on each machine.
The “Jasmine” proof-of-concept version shows how this might work for a shared 3D simulation, but it had a number of technical limitations that kept it from being used for real work. All users have to be on the same local network and must start the collaboration at the same time. A user can only participate in one collaboration at a time. There is no error-detection or recovery. There is no good way to end the collective session so that it can be restarted from the same point. We’ve also learned of several simplifications that can be made to the 3D rendering and event model in Jasmine.
David has been working on a general collaboration solution for a long time. It’s damn hard, and he continues to make progress. But last summer, David Smith and Andreas Raab began working in earnest on a Simplified Tea Time, together with a ground-up rewrite of Croquet’s 3D rendering and event architecture. Man, these guys are good, and they now have this new Hedgehog version working that addresses all the Jasmine issues. All that remains is to resolve a well-prepared existing bug list and to package up the software and documentation for distribution. That’s a still an awful lot of work for two guys, no matter how productive, and so they will be joined in this by the teams at the universities of Minnesota and Wisconsin. At this writing, no date has yet been set. We’d hoped to complete the work over roughly the next month, but all the parties have been delayed a bit with paying activities. That’s the way it goes. But in any case, I don’t see any serious impediment to making this stuff available before the snow is gone.
Hedgehog currently has roughly everything that is in the original Jasmine demo application. There’s a lot of other stuff that has been developed over Jasmine. Voice, video, and text chat communication. Spatialized sound. 3D threaded multi-media annotation. Componentized behavior that can be recombined and shared. Publication of components to a searchable database. Virtual displays within Croquet that access the 2D desktops of other computers on the network. Animated characters. A Virtual Private Network that allows ad-hoc collaborations to be coordinated from any user’s machine. Each of these will need at least some rewriting to take advantage of Hedgehog. I imagine that Hedgehog will be released as quickly as possible with just the single clean original demo world, and that all the other stuff will be added in a series of updates. There’s no reason to hold things up, and there is reason to start with as simple and clean a core as possible.
Croquet runs as an application window (which can be full-screen) within Squeak. Any programmer can create their own variation of this Croquet application, e.g., with a menu of their own design or with some other specialized user interface. In Jasmine, a lot of the things that have been added were delivered in their own specialized application and they define their own specialized user interface. Having to stop one application and start another is not so ideal for doing demos, but it’s not that big a deal in the context of Jasmine’s requirement that all members of a collaboration start at the same time. In Hedgehog, however, one would like to go from one collaboration to another, and carry objects (or copies of objects) from one virtual world to another. This may not work so well if each application is designed only for a specific virtual world, where the objects in that world can only be manipulated by the user interface provided by the intended top-level application. I like how the minimalist user interface in the current Hedgehog application does not impose such limitations, but I’m sure that we’ll want to add more helpful interfaces as we add in all the other cool stuff. We have a model (Brie) that allows user interfaces to be distinct between users in the same collaboration and between worlds, and yet also shared between different worlds. Realistically, though, it will take a couple of iterations before this is really “production ready”, and so I imagine that Brie won’t be present (or useably present) in the first release of Hedgehog, and that there will therefore be a period of separate applications developed with separate worlds whose components might not interact with each other.