Working in Virtual
Worlds, we are often given to wonderful discussions about what
the future will hold for the Internet, and when and how various
technologies will converge.
One popular school of thought is that virtual worlds should be
embedded in existing web browsers as "light" plug-ins -- in order
to make installation easy, and leverage history's most popular
connected application platform.
The other is that there should be a "heavy" viewer designed
completely around a unique virtual world experience; which happens
to contain a superset of features, including web-browsing.
I belong to the second school; and in fact that opinion had lead
to conflicts within my
previous company. Thankfully, my current employer very
much shares my vision.
However there are many in the first camp, and I am sometimes asked
why I will not join them, especially in light of
recentdevelopments specifically
aimed at bringing 3D to web browsers. Let me try to explain why
despite all the momentum for adding 3D to web browsers:
I believe placing a 3D virtual world viewer within a 2D web viewer
is somewhat comparable to embedding a gopher viewer, or ftp viewer,
or email viewer within a web browser -- it's of course been done,
but it's backwards, leads to awkward results, and has never proven
to be very popular.
In the long term, computer code is plastic. If the world decided
to morph a web browser into a 3D application platform overnight,
there is no technological reason why it couldn't happen. So the
question of where to put certain features is more ideological,
metaphorical, or about user interaction concerns
What is a web browser?
Is it the ultimate convergence point for anything internet-related?
Is it a new OS that should have it's
own version of
OpenGL? Is it just a safer sandbox for internet applications
that the OS itself?
For me, issues of security or specific features are not
interesting. Clearly any application platform needs to constrain
the ways in which hosted applications can access raw resources. And
clearly the needs of the platform evolve over time, and that
requires adding new APIs.
For me, the question of what makes a web browser is a question of
design, and mental modes; and how the totality of those decisions
affect the expressiveness of applications written for the
platform.
A web browser, for me, is
a
transaction-oriented
2D
document-centred internet application platform. A
virtual world viewer is
a
stream-oriented
real-time interactive
3D scene-centred internet
application platform. I am not sure there exists any easy
abstraction that allows one to fluidly translate concepts between
categories. The commonality that they host applications that run on
the internet is not enough to unite disparate modes, and inform the
design of a coherent platform.
Web browsers will indeed need 3D features. But they way in which
3D will be used on the web will be document-oriented, and happen in
transactions (not real time). Things like e-commerce catalogues can
be made available in full 3D. Any number of static scenes relating
to the host web document will add a lot of value -- the way
embedded streaming video adds value to many current websites.
But World of Warcraft will never run in Firefox (not at least
without a severe redefinition of "browser", "runtime", or
"OS").
What is a platform?
What might the average computer look like in
10 years from the perspective of application platforms?
I feel that each computer will consist of
several rings or layers of runtime platform:
- Native: applications are programmed against the native OS
libraries, and constrained by native OS security model (ex: win32,
POSIX, OpenGL, etc.)
- Managed: applications are programmed against a large, general
purpose, coherent, high-level API; and run in a virtual machine
with detailed, explicit, and programmable security model (.NET,
Java, Python, etc.)
- Internet: applications are programmed against a special-purpose
API, with clearly defined semantics, which is exposed though a
common data model (the DOM for web) and standard set of operating
primitives (HTTP for the web); security model is highly sandboxed,
limiting access to private data where not explicitly required by
the data model or operating primitives (IE, Firefox, and one day
Virtual World Viewers?)
I expect that in the future, each computer will come equipped with
one OS, a handful of managed runtimes, and precisely two internet
application platforms: a web browser and a virtual world
viewer.
How would the web look in a VW viewer?
I think it would be wrong to assume that because 2D embeds in 3D
mathematically, that the web browser should go away -- entirely
subsumed in a 3D viewer. That really ignores the long and ongoing
history of humans quite preferring to do a lot of their most
abstract work in 2D documents. It would also really undermine my
own argument that the web and VWs are really very different modes
of interaction.
Instead, I believe that the VW viewer will know of the system's
web browser, and rely on it directly for all web-related tasks.
Examples might be embedding a browser window for the purpose of
authenticating with an OpenID or oAuth provider for some network
resource, such as gaining access to your facebook profile, or to
send emails through gmail. Web applications like Google Apps would
also make a simple and effective document sharing service available
from within a virtual space.
So from a user's perspective, the web browser would be rendering
elements of the regular user interface, or displaying discrete web
pages in an integrated manner without appearing as a full web
browser. There will also be cases of rendering to texture in order
to display web pages as in-world objects, but their purpose will be
peripheral.
As a some what related aside, I find it constantly amusing to see
VW implementers try to embed 2D documents in 3D spaces. With few
exceptions, there is no benefit whatsoever to being able to see
your spread sheet in perspective projection as a texture. Give me a
use case where having 2D documents in 3D is more than a gimmick,
and I'll give you a modified use case where dimensionality is
irrelevant, and the interaction feels much more natural.
Not just the browser
Other internet applications that I feel should not be subsumed
within the virtual world viewer, but instead should integrate
smoothly with them using an
inter-process
communication channel are things like E-mail, IM/Chat
networks, Streaming Media, Office programs, etc.; all of which are
regular desktop applications that the viewer calls out to in
response to in-world stimulus; or alternatively, will respond
in-world to a stimulus from the user's desktop.
Imagine a "meet in-world" button on your IM client, or having the
streaming audio in your virtual home synced with your current
desktop play-list (or vice versa).