3d web
Call for Collaboration between Web3D Consortium and Browser Vendors
About a week ago, a question was posed on the X3D-Public mailing list: "Is Web3D beyond its infancy?". The following is my belated response.
I'd like to answer this question from the point of view of someone who is very new to the X3D community.
In terms of technology I don't think it's fair to say Web3D is in its infancy, it's very mature by software timescales. X3D is an ISO standard with multiple implementations and has a good pedigree.
However, in terms of adoption I think X3D is very much in its infancy. The truth is, I've been interested in X3D for about 5 years and in that time I've not come across a single person who isn't a software engineer who has an X3D browser installed on their computer. Why is this?! People have Flash, Java and PDF plugins in their browsers, they even have limited support for SVG, but not X3D.
In my opinion, it has very little to do with how good the technology is. There are only two ways I can think of to raise X3D adoption significantly. One is the egg, and one is the chicken.
- A killer Web3D app.
- Collaboration with browser vendors (by browser vendors I mean Microsoft, Mozilla, Apple, Google etc.) to get native support for X3D into existing web browsers
I'm sure that many members of the Web3D consortium are trying very hard on number 1 (Vivaty for example), but who is working on number 2?
Samuel Degrande touched on this in the thread [on the Web3D mailing list] about Khronos' new initiatitve to create a standard for accelerated 3D on the web. He said "the ultimate choice would be to have a native 3D renderer, just as SVG is natively embedded in Gecko".
I think there's an important lesson to learn from SVG here. SVG support is slowly getting native support in Gecko and Webkit based browsers, but unfortunately the demand isn't really there. In the case of SVG, a proprietary alternative (namely Flash) got there first. Flash is not only widely used for 2D vector graphics, but is also used for embedding video in web pages. Proprietary solutions - 2, web standards - nil.
There are many competitors to X3D out there for interactive 3D graphics on the web. Third party 3D engines for Flash, direct use of Java3D in an applet, Acrobat3D, a possible Canvas3D element in HTML5, Khronos' new initiative, a significant other I know of going on behind closed doors and lots of proprietary gaming plugins.
The one thing all the competitors seem to have in common (please correct me if I'm wrong) is that they use an imperative approach rather than the declarative approach taken by X3D. The XML-based solution implemented by X3D seems to me to fit much better with the architecture of the web. (The exception is that X3D has presentation and logic mixed in with content, whereas best practices have emerged on the web which create a clear separation between data, logic and presentation - namely XHTML, ECMAScript and CSS).
Many competing solutions take the approach of creating a JavaScript API which (to my untrained eye) looks very much like a slightly higher level abstraction of OpenGL! If you're going to bother creating a high level graphics language, then it seems much more worthwhile creating a declarative approach which operates in the descriptive realm of the content creator rather than the logical realm of the software engineer.
So what do you think? Should there be a "Mozilla X3D" or "Webkit X3D" project? I think such a project would massively increase the chances of X3D beating a proprietary competitor to the post.
I'm not sure which will come first on the 3D web - the chicken or the egg - but what I do know is that the chances of either coming about are greatly increased by the existence of the other.
Vivaty Everywhere
Vivaty, the web based community of 3D social scenes. has escaped the confines of Facebook and AIM with the introduction of Vivaty Everywhere. Vivaty Scenes can now be embedded in any web page and you can sign up directly on the Vivaty website (or enter as a guest) instead of entering via a social networking site.
3D Internet vs. 3D Web
There are a couple of things I've found out about recently which I think are significant developments in the 3D web.
Second Life Architecture Working Group
The Second Life Architecture Working Group are publicly working on a defining a set of protocols which will open up the next generation of the Second Life "grid" to allow others to host Second Life style worlds. Second Life is a popular (the most popular?) online virtual world and currently has an open source client and closed source server. All servers are currently run by Linden Labs, but the company recognises that if Second Life is to become as ubiquitous as the World Wide Web, they have to open up the technology.
What I find interesting about this standardisation effort is the willigness of the group to investigate the use of existing open Internet standards where possible. Examples include HTTP, REST APIs, XMPP, FOAF, XFN and OpenID. I think this is a much more sensible approach than trying to define new protocols for every part of the technology.
The basic approach of the group currently appears to be to take each feature of Second Life and either match it to an existing open standard, or if none applies then define a new one. Meetings happen online, even inside Second Life itself, and the chat logs are available to view on their wiki.
Vivaty
Vivaty were previously known as MediaMachines who created the FluxPlayer for X3D viewing and FluxStudio for X3D authoring. Under their new brand they have recently launched a beta of a new 3D social networking service which uses X3D technology to provide online virtual worlds similar to Second Life, but with a greater emphasis on social networking. This is really a flagship for the X3D standard and it will be interesting to see how well it performs.
This new direction for the company appears to be an evolution from creating developer tools and implementations of Web3D standards, to providing end user web services which use those standards. I think this speaks volumes about the maturity of the technology.
3D Internet vs. 3D Web
What's interesting about contrasting these two developments is that they are both working towards building distributed online virtual worlds, but going about it in different ways. One is creating a 3D Internet and one is creating a 3D Web. Also, one is taking a commercial service and turning it into an open technology, the other is taking an open technology and turning it into a commercial service.
Here's my question. Are virtual worlds and the web different uses of the Internet in the same way that email clients and web browsers are different, or are virtual worlds one possible application of the 3D Web? It could be that both are true, similar to the fact that both email clients and webmail exist. In which case, the 3D Web is a web interface to virtual worlds. This then strays into the much wider debate of desktop vs. web browser as a software platform.
The Second Life client includes not only the real time rendering of interactive 3D vector graphics, but also a huge array of other technologies including authentication, instant messaging, prescense, friends lists and even currency. I would call this a rich Internet client, because it involves much more than just a web browser. It's something which implements many different protocols over the Internet and is designed to be installed on a desktop PC, separate from a web browser.
The pure 3D Web approach I envisage would be slightly different. The client (web user agent) would include only the downloading/uploading (over HTTP) and rendering of 3D scenes (in X3D), with a client-side scripting engine (ECMAScript). HTTP authenticaion might also be included, as it is currently included in web browsers, but application specific protocols like instant messaging, exchange of currency and friends lists would be left to server-side web services. An instant messenger client may well use the Jabber protocol (XMPP), but would not require the user to download an IM client, it would simply be used via a web interface much like Meebo. Currency? 3D PayPal perhaps.
The pure 3D Web option fits very neatly in the context of other web standards - we already have XHTML and the start of SVG implementations in web browsers, X3D could be the next step, with CSS and ECMAScript playing their parts.
XMPP for the 3D Web?
As an aside, one interesting idea which has been mentioned in the Second Life Architecture Working Group discussions is the idea of using XMPP not only as an instant messaging protocol but as a general purpose point-to-point protocol. I've thought about this before - the idea of using XMPP in place of HTTP to overcome the limitations and synchronous nature of HTTP. I know XMPP is extensible, but I don't know enough about it to know whether this would work. The 3D Web is surely going to be a big stretch for the hack that is AJAX and XMPP could hold the answer to truly interactive 3D scenes.
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.
AI
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
Hyperlinks.
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).
Search
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.
Why *not* to make the "Metaverse" a direct extension of the web
Further to my previous blog entry, Why I would make the "Metaverse" a direct extension of the web I have found a strong argument to the contrary in the documentation of the Virtual Object System.
In a section of their manual called The 3D Web the authors point out "three basic limitations of HTTP which have caused 10 years of pain, suffering and hacky workarounds for developers trying to build interactive applications over the web. These are that HTTP is a stateless protocol, that URLs represent opaque handles to resources, on which no reliable introspection is possible, and that HTTP is explicitly asymmetric so that a server typically cannot initiate sending new data to a client."
The reponse of the Virtual Object System community is to create an entirely new protocol stack which is a mirror of the technologies used on the web, but with a new technology for each layer:
- VIP is like TCP
- VOS is like HTTP
- A3DL is like HTML
- CSVOSA3DL is like an HTML rendering engine such as Gecko or KHTML
- Ter'Angreal is like the web browser
The fact that HTTP is a synchronous, stateless protocol has come up in the past with regards to web applications - raising the possibility that AJAX is just a hack, waiting for a new protocol to replace it. Perhaps a replacement or extension of HTTP is due.
The current approach I am taking to a 3D Web client for Webscope is:
- TCP is TCP
- HTTP is HTTP
- X3D is like XHTML
- FreeWRL (and others) are like an HTML rendering engine such as Gecko
- Webscope is the web browser.
Because of the limitations of HTTP I have considered building a protocol like XMMP into Webscope, and the argument the Virtual Object System community make will certainly prompt me to explore alternatives further.
What I think I would like to see is a solution that sits somewhere between the plain X3D over HTTP approach and the radical VOS approach of replacing the whole protocol stack. I don't want to throw away HTTP entirely because of its Content Negotiation abilities and the vision of the Multimodal Web.
I'd like to see some discussion on this by some people who know more about networking than I do.
Tux Droid, 3D Web for Education
Tux Droid
The Tux Droid is finally alive! Mine was on pre-order as a late birthday present from my legendary mum, so I will soon have yet another distraction from work :)
3D Web in Education
Vicki Davis blogs about the 3D Web in education and calls for a new web browser which allows you to view web sites in 3D.
Why I would make the "Metaverse" a direct extension of the web
In answer to Bob Sutor's question "If we didn’t have web browsers as we do today and started today to do everything that you imagine [for a distributed 3D virtual world], what would you create to do all that?"
I would probably create something very much like Second Life and open source the server source code.
Anything anyone ever creates is based somehow on someone else's ideas (standing on the shoulders of giants and all that). If we didn't have the web but we had video games, I would start with an existing gaming engine. Then in the absence of a worldwide network of linked information resources, I would take the next best thing to existing technology, science fiction. I'd buy Snow Crash by Neal Stephenson and start writing network protocols and file formats!
I'd start by separating the storage of content, logic and presentation into different formats and come up with some kind of distributed TCP/IP streaming protocol with heavy compression.
I suspect that you're asking whether the web is really a suitable platform for all this, whether if we weren't stuck in the mind set of the existing world wide web we might come up with a better solution. Perhaps.
But if I was creating the web from scratch (but happened to benefit from the hindsight of all the great minds that came after me), I wouldn't use XML-like syntax for web pages, I would use something more efficient. I would try to make the DNS system more decentralised and URIs would be of the form http:uk.co.companyname.department/resource instead of http://department.companyname.co.uk/resource. I might make HTTP requests asynchronous, build comment spam protection and Denial of Service protection into the protocols of the web. However, I wouldn't necessarily attempt to make those changes now.
What's amazing about the web for me isn't that it's perfect technology that could not have been done better, it's that it's openness and adoption has made it almost ubiquitous in the world. Creating new protocols suited to new applications is definitely a good idea, but if the online 3D virtual world is to become as ubiquitous as the World Wide Web, we should learn from the lessons of how web technology was created and build on an already ubiquitous platform. Adoption of a well defined standard is more important than a perfect technology.
Another motivation behind making Stephenson's "Metaverse" a direct extension of the web is device independence. It's all very well creating a 3D virtual world which requires a large amount of processing to render, but what if I want to access the information on a small information appliance with little processing power? What if I live in a developing country and want to be able to access some information but only have a text based browser? What if I'm blind and can't see the virtual world and want to hear it instead? We need not carry over all the limitations of First Life into Second Life. I don't know about you, but I hate having to pay for physical objects and I love flying!
Metaverse Roadmap, Convergence at CES
In a comment on my last blog post I mentioned that:
"I have a vision of something which basically *is* the web, but in 3D. In fact, I think the user should be able to choose how they wish to view a given web resource - in plain text, 2D shapes, 3D shapes, simulated speech etc. This can be done with content negotiation in HTTP. The same resource could be rendered by lots of different devices, from a light switch to a 3D headset."
I then found the Metaverse Roadmap, a "public ten-year forecast and visioning survey of 3D Web technologies". They have a wiki where you can input your thoughts. I was going to add my own vision statement about how the 3D web could just be one mode of interaction with a multimodal web (as mentioned above). I found this vision statement which is a similar idea:
"The world will be the metaverse. People often think of Stephenson’s metaverse as an “other” place, and the web as a window onto cyberspace, but as Paul Saffo and Mike Liebhold of Institute for the Future note, the best model for the metaverse of 2016 may be an information-drenched world, where the 3D web is just one particular instantiation. Mixed reality is likely to be the dominant user experience. You will use virtual worlds when they are an appropriate mode of interaction, but they are not your primary mode of communication – you have your chat, your email, your augmented reality, your 2D and 3D browser, etc. While people will continue to use online spaces and media centers for particularly high quality 3D content, the pervasiveness of information access and augmented reality will give world itself new layers of “metaverse-itivity.” The ubiquity of small, portable Sidekick-like and wearable devices will enable immediate access. Voice will be used for many basic queries, but text, even IM text, is private and unobtrusive, so it will not disappear."
Someone also mentions the need for a new type of browser which will allow us to access "all our 3D access through one piece of software" and mentioned that "Open standards will be particularly important for this". I've downloaded FreeWRL, the X3D renderer I want to use for Webscope
In other news...
It seems CES is all about convergence again this year with Apple's iPhone being announced alongside the Nokia N800, Apple TV and Windows Home Server. The iPhone was inevitable but it sure is pretty now it's here, very nice design touches like motion sensors and multi-touch screen that I didn't expect to see yet. Note the lack of 3G and the presence of WiFi. This is the kind of hardware we should be thinking about for future web software development.
