Bob's Perfect Virtual World as the 3D Web

In this blog entry, I'd like to address Bob Sutor (of IBM)'s three blog posts about his requirements for a perfect 3D World, implemented as a direct extension to the World Wide Web, as described in my 3D Web design concept.

A pure offline Mode

I think this is part of a wider requirement for certain web applications to work offline. With the recently announced Google Gears and other projects from major industry players like Adobe's Apollo, Mozilla's Firefox 3 (and Parakey, currently vapourware), Django's Offline Toolkit, Microsoft's Silverlight and Joyent's Slingshot I think this is going to become an extremely hot topic. I think we're going to see the boundary between web server and web user agent blur considerably into "Web Servents". So in short, an offline mode can use the same technology as an online 3D web, with a local server or a local cache of data, logic and presentation.

A peer-to-peer model

By using web technology, we can take this for granted to the extent that anyone can run their own 3D web server and we can make hyperlinks between them. The peer to peer idea could be taken a lot further than this though, by users in the same virtual space swarming the data between each other. I don't know about that bit.

A model of many planets

Again, this is basically what the web is.

Much better zoning

This almost touches on the contraversial subject of the .xxx domain.

However, with Second Life the geography works in much the same way as First Life with blocks of land having permenant neighbours. This is a limitation of real physical space that while it might be nice to reflect in virtual worlds, is not necessary. We could have lots of areas of "virtual land" who's boundaries are defined only by their own content and then have portals (hyperlinks) which allow you to move into another space, there is no reason to have permenant neighbours because your neighbours are simply whatever you link to, which is under your control. In this way zoning just becomes a result of the links people make, which works reasonably well on the current web.

If you do want to build a planet with geography like the real world (like Second Life), you can still do so, but you could decide to ban certain activities in that particular planet. That way, if there's some content you don't like you simply don't link to it, and it is only as close as 6 degrees of separation dictate.

In-world Secure Chat

I would argue that secure chat in general isn't particularly widespread on the Internet yet, so this is an issue for the Internet in general. However, see later for more discussion on in-world chat. In short, XMPP encryption extensions.


This would just be part of a web application. A 3D web application that is a 3D game may have AI controlling faux avatars and objects, a sales site may have an AI shop assistant or human-AI hybrid. Server side scripting languages and javaScript manipulating X3D files.

World-to-world communication

XMPP (Jabber) and either Jingle or SIP for voice (and video?) would be great for person to person chat. A couple of interesting points spring to mind:

Firstly, should the jabber client be part of the 3D Web user agent or should it just be another web interface like Google Talk in GMail? Especially with regards to advertising prescense or status of the user (available, away, busy, offline).

Secondly, how do we deal with the issue of hearing people around you in a virtual space and adjusting the sound as people move, in addition to person-to-person conversation between worlds. We certainly don't have standards for this yet so it wil be interesting to watch Linden Labs.

World to world teleportation


Do I need a membership in the other world or is there a notion of guest?

We have the same issue on the web. I think distributed authentication like OpenID is a giant leap forward in this field.

How do I deal with cross-world identity?

By using a URI as a person's identity as in OpenID. You can still have your friendly screename in Jabber, but the URI uniquely identifies you.

Can I bring my money with me?

That's a good question, but I think the answer is that if you want some kind of virtual currency, it simply becomes a service like PayPal where you buy credits of some kind and they sort out "exchange rates". You could then use that currency in any world or any web site by using that service as a broker for payments. I'm obviously making this sound a lot more simple than it really is, nothing is straight forward where money is involved.

Can I bring my clothes with me?

Yes, your avatar and everything your avatar wears is hosted on an avatar server (just an 3D web server) and can simply be included into a scene. This only works if all the worlds use the X3D (or other) standard, which is one of the fundamental requirements of a 3D web in my opinion.

Can I bring more general objects between worlds?

The same as above, "objects" can be an X3D file hosted somewhere on the web which can be included into another X3D file dynamically. This requires a certain level of write access to all 3D web servers, which is probably going to cause all sorts of spam problems like we have on wikis. (Imagine a spamming company putting up billboards everywhere).


Don't worry, Google will sort that out ;). Seriously though, it could work the same way as the web with spiders and giant indexes.

Device and world compatible link redirection

Now that is a very interesting topic which you could call the Device Independent or Multimodal Web. I think this can be solved with HTTP Accept headers and content negotiation. This is a major part of what my Webscope project is about, a Multimodal Web User Agent.

Google Gears @ Google Developer Day 2007

London Google Developer Day

I spent yesterday at the London Google Developer day, one of 10 simultaneous events in cities around the world. This international event was the first of its kind and Google took the opportunity to launch some new products relevant to developers. By far the most interesting project for me was "Google Gears", a web browser extension that allows web applications to work offline. I seriously believe this web browser advancement is as significant as the APIs which put the "A" in "AJAX".

Google Gears

Google gears is interesting not only because of what it does (there are plenty of projects tackling the "offline problem"), but because of the way Google are going about it. Google are collaborating with important industry partners like Mozilla and even Adobe to try to create a standard API for offline applications that they hope all web clients will use. All major browsers are already supported, with Opera support in the works. Adoption of the standard by projects like Adobe's Apollo platform and discussion with projects like the Dojo Toolkit greatly increase the chances of proliferation of the standard.

Google Gears consists of three main parts – LocalServer, Database and WorkerPool.

LocalServer acts as a local HTTP server inside the web browser and caches and serves resources locally.

The Database part uses SQLite as a local store, a kind of giant cookie implemented as a relational database that web applications can access both online and offline.

WorkerPool creates a kind of multi-threading in JavaScript so that processor-intensive operations can run asynchronously, with a particular focus on preventing user interface lock-ups. This is useful not only for offline operation but also to increase the responsiveness of the user interfaces of online applications. The idea of Google Gears is that web applications will be usable offline when network connectivity is intermittent or non-existant and changes made by the user will be passed to the server opportunistically when a network connection returns.

The missing component

However, Google Gears is missing a key part of the solution required to make web applications work offline. Currently, if you write a web application which modifies data in the local SQLite database there is no provided method for synchronising those changes with the server. This is left for the developer to figure out on a per-application basis.

After the event I had a chat with Chris Prince over a pint (paid for by Google of course). Chris is one of the main engineers who has been working on Google Gears in Mountain View. He said that three separate teams were given the task of figuring out a standard method for synchronisation and all three came up with completely different answers. It turned out that they couldn't figure out a standard synchronisation method that worked well in most cases so they just left that bit out, for now.

I asked Chris whether he thought a dominant standard would emerge or whether things were always likely to be this way. He said that he expected a standard to emerge which worked well 80% of the time, with different methods for special cases, financial transactions being an example. He thinks that once Google Gears capability has been added to around three major applications (I suggested GMail, Google Calendar and Google Docs!), a useful standard method may emerge.

Other Happenings at GDD07

I attended a talk by Chris DiBona, Google's Open Source Programmes Manager, about Open Source in Google. I grilled him about how Google decides whether a project be open source or not (with particular reference to hosted services like GMail and software bundled with Google Appliances) and asked him about GPLv3. I then sheepishly asked him to sign my copy of "Open Sources" which he co-edited.

I also attended talks on Google Gadgets and GData APIs and asked whether Google plans on supporting authentication mechanisms other than Google Accounts in their APIs, but was basically told to make a feature request.

I met up with Darren from PHPWM and talked with a Cambridge PhD student about his work on AI in virtual learning environments. I explained my business idea to him and had an interesting conversation about intellectual property in universities.

Sergey Brin gave an international live webcast to all the event attendees and gave an amusing and bizarre talk about how the Internet is now fuelling its own growith through relationships formed on dating websites which lead to offspring who go off to work on making the Internet better. He was referring to the fact that a child born as the result of the first dating sites would now be around 12 years old, and presumably old enough to use Google's web based IDEs for developing mashups and Google gadgets!

The food at the Google event was characteristically fantastic and the "Blogger Lounge" was full of lava lamps and floor cushions, with free WiFi and coffee. A goody bag was provided including a Google branded T-shirt, mouse mat, USB stick, yo-yo, notepad, pen, sweets and silly putty! All in all it was great to rub shoulders with Googlers and I had some extremely interesting conversations with lots of smart people. The food, coffee and beer was all provided by Google and was brilliant. The train journey and mianderings around the London Underground weren't even that troublesome.