Sometimes someone tickles a bug, and you find you cannot connect to the Collaborative at all. I that happens, send mail to croquetcollaborative at charter dot net and we’ll reset it.
But even when things are working, it can often take as much as three or four minutes to connect. Here’s why.
One issue is that the Collaborative is deliberately left running for days or weeks at a time, but this version of Croquet does not have distributed garbage collection yet.(*) When you first join a simulation in progress, your machine needs to get a snapshot of the memory associated with that simulation. This snapshot includes a table of all the objects that anyone has interacted with. For the Collaborative code, we have created a simple “stop the world” garbage collector, which rebuilds that table based on what is reachable from the few “root” object “globals” known for that world. It gets rid of everything else. But this simple collector will not work if anyone is interacting with the simulation, so we only run it on “startup”. (I suppose we could lock the system up and run it after the last visitor leaves, but we haven’t done so yet. Anyone want to code it?) So as it is then, the world gets bigger and bigger the more it is running, and it can thus take quite a while to make a snapshot of it and get that snapshot to you when you join. For the initial “common” world, this is typically 10 MB or more, while it’s freshly booted version is less than 2MB. (See the bug report)
Another issue is that the snapshot still has a lot of stuff in it that doesn’t really need to be there. We’ve done a lot of work in the Collaborative code to move media outside of the simulation. We call that being “off the island.” But meshes are still on-island, and the full-resolution textures created by the free-hand sketch tool are still on-island. I think this is another factor of four to 10.
Another thing that aggravates this is that we dump every visitor into the same spot. We do this deliberately for now in order to increase the chance that you’ll see someone, and to increase the chance that user-created content will be somewhere nearby. But that creates a lot of user-content in the island that really shouldn’t be there “in practice”, and it creates transient garbage there that ought to go away. I’d like to address this by having a private (non-replicated) home space in which you maintain your own portals to wherever you want. You would startup quickly in your home space. You would then deliberately open one of your own portals to the place of your choosing. If it isn’t available, or just slower than your patience allows, you would join some other world instead. If everyone chooses the same “commons” world anyway, this would actually end up taking longer (starting your home world plus connecting to the commons world as a second step), but at least you’d have more immediate and satisfying initial feedback. And assuming people don’t all pick the same place, then the other issues, above, would be mitigated. (We still need to address them, of course.)
(*) The first version of this blog misleadingly said that there was no garbage collection (full stop). This was confusing, and Andreas pointed out, below, how to qualify that. The text now reflects that change.