open standards
Leaping into the Cloud - Views on "Cloud Computing"
A couple of years ago I wrote about being "OS-agnostic" and using open formats for storing your data so that you never have to be dependent on one desktop operating system. This enables you to move between different computer systems relatively seamlessly while still being able to access the data that's important to you.
I mentioned that the next stage I was working towards was to host all my data across web servers and use a web application to manage each type of data. This would free me completely from dependence on any one device and allow me to access my data on any web-connected appliance. Since I wrote that blog post the notion of "cloud computing" has become increasingly popular and the proliferation of netbook computers seems to indicate that consumers are investing in this approach to computing as an alternative or as an addition to their desktop computer.
I thought I'd write an update on the kind of software I use today and my opinions on the advantages and disadvantages of cloud computing.
First, let me refer back to the table of applications I created back in January 2007 (with some additions) and list the web equivalents I use today.
| Application | Desktop | Web |
|---|---|---|
| Thunderbird | Google Mail | |
| Calendar | Sunbird | Google Calender |
| Contacts | Thunderbird | (Google Contacts) |
| Todo List | Thunderbird | Remember the Milk |
| Bookmarks | Firefox | Delicious |
| Documents | OpenOffice | Google Docs |
| Multimedia | VLC | (Ampache & LastFM) |
| Pictures | The GIMP/Inkscape | (None) |
| Code |
Eclipse | (Trac) |
| News | Thunderbird | Google Reader |
| Chat | Pidgin | Google Talk Gadget |
| Desktop | Windows/OS X/Gnome | iGoogle |
| Wiki | (None) | MediaWiki |
| Blog | (None) | Drupal |
| Microblogging | (None) | |
| Social Networking | (None) |
Access from Anywhere
All of these web applications can be accessed from any web connected device - PCs, internet tablets, netbooks, nettops, kiosks, mobile phones and all sorts of other emerging appliance form factors. This doesn't even have to be a device I own.
Commercially vs. Self Hosted
There is a mix of commercially hosted applications like Google Mail and Google Docs and self-hosted applications like MediaWiki and Ampache on this list. Before there were so many commercially hosted options it was my intention to host all of the web applications myself on a home server. I soon realised that this took up a huge amount of time for system administration because there was no good standard system for package management of web applications - they often use their own individual methods for installation and security and feature updates and this was just too difficult to keep track of.
The massive advantage of commercially hosted applications is that all of this system administration is taken care of for you. Security updates and feature additions appear automatically (this can be both exciting and confusing at times). Backup is taken care of for you and large organisations like Google have huge data edundancy a home user could not even dream of - plus a very good track record for uptime and not losing data!
The disadvantage of commercially hosted applications is a loss of a certain amount of control over your data and software and currently storage is a limitation. I choose to keep my music collection on a home server because there is simply no commercial organisation who would offer enough storage space at an affordable price and be willing to risk the potential legal issues of hosting so much copyrighted content. However, by hosting my own data on a home server my data is not truly in "the cloud" and I have to take care of my own backups - my data is much more vulnerable to risks such as hardware failure, fire, flood or theft.
What's Missing and What's New?
There are certainly gaps in what you can do on the web. I still use desktop applications for image editing - Inkscape (which I love) for vector graphics and The GIMP (which I don't love) for raster graphics. It's interesting to note that Inkscape actually uses the SVG format for graphics which is itself a web standard. I'd really like to see more web applications which utilise SVG and X3D to create 2D and 3D graphical web applications respectively - but this requires a serious increase in browser support. It's a bit of a chicken and egg situation. I also wouldn't currently use a web application for other graphically intensive tasks like video editing.
I've recently started looking into Google Contacts due to their new syncing features, but I still think there's a gap for a really good "Web 2.0" address book, perhaps supporting LDAP.
Multimedia in the browser is still a real pain point in my opinion - I see the use of Adobe Flash for audio & video as a temporary hack until something like HTML5 standardises embedded multimedia on the web. I think there's an awful lot of scope for improvement here to turn web browsers into 2D & 3D graphical tools which provide new opportunities for interactive IPTV.
There's no really good web based code editor or IDE that I know of for software engineers. Google have some modest offerings for JavaScript based applications that run on their own platform, but the recently announced Mozilla Bespin project looks like it might turn into more of a general purpose tool. I do use Trac for it's ticketing system and as a read-only front end to subversion repositories.
There are new applications which now exist in the networked world of cloud computing that never really existed on the desktop. Social networking, blogging and wikis are a few notable examples, but there are new ideas popping up all the time which leverage the "wisdom of crowds" and other great marketing terms like "the network effect" and "the long tail". See Tim O'Reilly's 2005 blog post on Web 2.0 and the book Wikinomics.
Offline Access
One of the biggest problems with web applications is what happens when you have no Internet connection? Although high speed network access is certainly becoming more widespread, it's hardly ubiquitous. For me, the big innovation here is Gears. Gears is a browser plugin (though the aim is to make it a standard part of every web browser) which allows web applications to preserve some functionality, even without a network connection. This means that I can edit documents, read my archived email and view my calendar and todo list even if I'm not connected to the Internet.
Performance
The trade-off for being able to access your data and software from anywhere is that the business logic is stored on the server. All that exists on the client is a user agent (a web browser) which downloads text, images, audio, video and scripts and renders them using layout engines, graphics engines and scripting engines. This traditionally has meant that web applications are inherently slower than desktop applications. A lot of the processing happens on the server side and has to be transferred over the network. It could be argued that this is a good thing because it forces software developers to keep their applications much more lightweight and avoid the ridiculous feature bloat we've seen on popular desktop applications. However, even a lightweight application can be made to run faster.
There are a few key changes happening in this respect. Firstly, although web applications reside on a server, a lot of the processing is increasingly being done on the client side using JavaScript and realtime graphics engines. The web browser is far from a dumb terminal, it is a very powerful piece of software in its own right which can take advantage of modern hardware and graphics acceleration. SVG and X3D plugins can use OpenGL to render graphics for example.
In some ways JavaScript/ECMAScript is becoming the assembly language of the web. Because JavaScript engines were never really intended to be used this heavily, they've historically not been terribly efficient or performed particularly well. One of the biggest innovations in Google's Chrome browser was the brand new V8 JavaScript engine which brings performance to a new level and introduces some clever new features. One major innovation is process separation. Each web application runs as a separate process on the underlying operating system. This might not sound like very much, but it means that a bug in one web page can't bring the entire browser down and it moves a step closer to the notion of a WebOS.
"WebOS"
"Whoa! Hold on there, what on earth is a WebOS?" I hear you say.
Sorry, yes. I acknowledge that in computer science "WebOS" is ludicrous and non-sensical term. I could go on all day about semantics if you like. I don't particularly like a lot of buzzword type terms like "web 2.0" (which I think is really "web 1.0") and "cloud computing" which is... well, what is it? But there are certainly new approaches to technology emerging and if we're going to talk about them we have to call them something.
So if there is such a thing as a WebOS, what does it look like? If we casually discard the real meaning of "Operating System" for a moment and use "OS" to describe an entire software platform - what does that include? Very simplistically you've got this thing in the middle that gives you access to the hardware via hardware drivers called a kernel, you've got a bunch of APIs for doing stuff with the hardware like networking and storage and you've got some kind of management of processes. For interactive systems there then has to exist some kind of user interface.
From the point of view of end users you don't need to worry about what "operating system" you're using. You're just using the web, with some kind of appliance. But developers can be OS-agnostic too. When you're programming for the cloud, it doesn't matter what kernel is being used underneath, what's important to you is the APIs (application programming interfaces).
If a WebOS exists, it exists as a series of web services which can be accessed programatically via APIs. This includes services such as the Google App Engine, Amazon's S3 (Simple Storage Service) and EC2 (Elastic Compute Cloud). They allow developers to create applications which are hugely scalable, have masses of redundnacy underlying them and require little low level system administration. The risk involved with current offerings is getting locked into a particular development platform and a mismatch between the scaling of revenue and costs.
If we're counting the user interface as part of the OS, then the equivalent of the desktop is probably the homepage. iGoogle is a personalised homepage which displays a collection of interactive "gadgets" or "widgets" that provide a summary of information aggregated from resources all over the web. This acts as a starting point for a browsing session and negates the need to constantly visit a whole range of separate web sites. There are other similar services like NetVibes and there are also alternatives which attempt to emulate the desktop experience on the web like EyeOS. I am very skeptical of this "desktop on the web" business and I think it's an unfortunate diversion until much more useful UI paradigms emerge.
Security
How do you know your data is secure? You don't. By hosting your data with a commercial service you are placing a huge level of trust in the organisation providing the service. It may be wise to look out for the usual things like HTTPS connections, but ultimately you are only as strong as the security team of the service provider. I remember MJ Ray mentioning that GMail doesn't support public key encryption to encrypt and sign emails which is another good point.
Privacy
If you store your data on another organisation's servers, you don't have physical access to that data. You are trusting them not to disclose any private information to anyone else and you have no way of knowing what a "delete" button actually does behind the scenes. Once you have stored a piece of data in the cloud, you have let go of a certain amount of control that you can never take back. For many organisations this a real issue, especially if they don't have a contractual relationship with the service provider.
There are some things the end user can do about privacy if it's something that concerns them. It's scary what can be achieved by piecing together lots of small amounts of information about a person spread across the web so you should always think about what information you are making public in total - not just in a single place. You should also think about how much you trust an organisation before you give them any personal details at all, though this is extremely difficult because you have no real way of knowing about their affliations. Overall all we can do is make decisions based on the information we have available. To a certain extent just the fact that information exists about every one of us on a networked computer system somewhere in the world means that our privacy is already out our control. We have to accept that privacy means something completely different to what it meant fifty years ago.
Openness
There was a time when my data was all stored on a single hard disk on a single PC running on software for which I could access all the source code. For me that situation will never exist again.
In some ways cloud computing is the most open computing platform we've ever seen, but in other ways web services are the ultimate proprietary software. As a programmer, if I'm sufficiently motivated I could change any part of my Open Source desktop operating system, but there is no way that I can change the source code of GMail - the only controls I have are the controls the service provider chooses to give me.
For a hacker (in the old fashioned sense of a tinkerer) cloud computing offers opportunities to tinker with computing platforms comprising of thousands of processors distributed across the world which simply wasn't possible before. But as the systems become more complex and depend on commercial organisations, we've lost a huge amount of control over our computing systems.
Whilst I'm really enthusiastic about software as a service, in many cases it effectively means that I'm moving away from open source software to something which is not only highly proprietary, but I can't even run it on my own system. This saddens me and I can only hope that service providers recognise the benefits of the open source development model and release the source code of their software for others to tinker with and improve. The Internet made the Open Source movement, and in return the Open Source movement provided the tools that made the Internet grow into what it is today. I hope that in the future we see more openness, not less.
Ownership
It's important to think about whether you "own" the information you put in the cloud. This might be in a legal sense where content you create using an online tool has certain copyright or licensing restrictions attached to it, or it might be in the sense of how easy it is to leave the service and take your data with you.
Future Innovations
As we see software migrate from the desktop to the web I think we will see lots of technological innovations to make the web better.
I've talked before about how I'd like to see 2D and 3D graphical interfaces using SVG and X3D and also voice interfaces using VoiceXML where natural language is used as a powerful means of interaction. I think the web in a few years time will be much richer, more immersive and more interactive than the web we have today. But equally I think the web will have incarnations which are much less visible and not at all immersive, but are instead a part of the world around us in a web of things. Electronic sensors will become part of the web and consumer appliances will be using the web without us even thinking about it. I think we'll see information appliances dedicated to a particular type of information or task for which the inclusion of networking is no more remarkable than the inclusion of say an electric motor. We'll have more of a focus on the task we're carrying out rather than the fact that we're using the web.
I hope that network appliances will leave behind the two-and-a-half-dimensional world of the "desktop environment" and will have UI paradigms which are much more relavent to the kinds of tasks computers are used for today. This might be through a physical interface or through different UI paradigms like a zoomable interface rather than overlapping "windows".
We're still very much thinking in terms of web "applications" like we have desktop "applications", but really the web is a collection of resources provided as services and there's no real reason to think in terms of applications. With a different UI the "cloud" doesn't necessarily need to be presented as a collection of distinct applications, but can simply be a collection of interactive information resources displayed as a literal cloud of information or presented through a continuous natural language discussion.
Conclusions
Behind the buzzword of "cloud computing" are some real shifts in how we think about computing and how we use our data. We're at the beginning of the transition from the desktop PC to the World Wide Web and there are lots more innovations in the pipeline.
With the new opportunities come new risks and there are certain questions you should ask yourself before choosing to use a web application:
- Can I access the app from any web connected device? Does it use web standards for its web interface?
- Am I happy with my relationship with the service provider (e.g. are they providing a free service in return for showing me advertising)?
- What happens when I have no network access, can I still access my data offline?
- Does the application perform well enough for me to achieve what I want to achieve?
- Am I happy with the level of security provided?
- Is my privacy under my control? Can I sufficiently control what I share with who?
- Is the app flexible enough for what I want to do?
- How well does the app integrate with other apps I use?
- How easy is it to leave? Is my data stored or exportable in open standards?
- Do I legally own any content I create?
Finally, the proof of the pudding is in the eating.
The day I realised I really had shifted my data into the cloud was the day the hard disk failed on my MacBook. I took the machine into the Apple Store in Birmingham and the "Genius" asked if I would like them to try and retrieve the data from the disk. I hesitated for a moment, but then politely declined the offer. "It's OK, it's all backed up" I said. But what I really meant was "It's OK, it's all in the cloud".
Native ODF Support in MS Office, Microsoft++
Microsoft has recently announced that it will add native support for the Open Document Format to Microsoft Office. Providing they keep this promise (and don't have any sneaky ulterior motives) then this is a very good thing for open standards.
Well done Microsoft, welcome to the party.
Google Docs Offline
I was able to try Google Docs Offline for the first time today and it's extremely cool.
The offline function uses the Google Gears web browser plugin which I talked about last June to keep an offline copy of all your documents. If you find yourself outside "the cloud" with no Internet access you simply point your web browser at the docs.google.com domain and your browser reverts to the offline version. You can view documents and spreadhseets and even edit your documents offline and it automatically syncs your changes when your conection is re-established.
It was a tiny bit buggy for me when I first used it, but I think this is a significant step forward for web applications. I really hope that open standards emerge so that this kind of thing becomes commonplace, there are certainly efforts to make this happen.
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.
Lazy Browser Development is letting Flash Kill the Web
Adobe's Flash technology which is fuelling some of the most innovative developments on the Internet is simultaneously putting the World Wide Web as we know it at risk.
The World Wide Web is ubiquitous
It has far surpassed the expectations of its creator, Sir Tim Berners-Lee, and has come to embody what we think of as the Internet. But what gave the web such an explosive growth and universal appeal was not technology alone, it was the open-ness with which the technology was developed. The World Wide Web Consortium (W3C) was founded to oversee the standardisation of the technology built on top of Internet technology already standardised by the Internet Engineering Task Force (IETF). This meant that many developers could write software which implemented these open standards, giving us the diverse web servers and web user agents we see today.
The web is no longer just text and images
It is a multimedia platform with audio and video and the early stages of 3D virtual worlds. But if we look at how the multimedia web is coming about, we can see that it is being developed in quite a different way. Instead of the open standards and human-readable markup of XHTML, CSS and ECMAScript that underly the original web, the multimedia web is being built on proprietary technology called Flash. Flash is currently the only widespread way of delivery audio and video across the web in a cross-platform way and is behind popular web sites like YouTube and Flickr.
Flash is not like the rest of the web
Flash was created by Macromedia and is now owned by Adobe, one of the big software giants of the world. Flash differs from web standards in that it is a closed, proprietary format owned by one company and when flash appears on a web page it appears as a cryptic "binary blob" that can only be interpreted by Adobe's software.
Web standards like XHTML mean that any web user agent or search engine can trawl the web and interpret the data stored on it. Search engines can index web pages, multiple companies can implement web user agents and web servers and the web has a certain level of accessability for the visually impaired user. Flash has none of these properties, it is a closed proprietary technology owned by one company that doesn't play nicely with the rest of the web.
What we can do
If we care about the World Wide Web we should be supporting the same standards organisations that created it to drive innovation of the next generation. The problem is that often companies can develop innovative proprietary technology a lot faster than standards organisations can standardise technologies. If we're not careful, such standards will never emerge and the web will become hostage to large corporations, holding our data prisoner in proprietary, closed formats.
So what is Flash used for today that should use open web standards and what technology should we be supporting?
Audio/Video
Web sites like YouTube use Flash to embed video in web pages because it is currently the easiest way to deliver video across the web and reach the maximum number of people. This is due to an underlying problem with digital audio and video, every computing platform seems to use a different standard. Giants like Microsoft, Apple and Sony are in a standards war over digital formats. This has happened before with cassette tapes, VHS, CDs and is also now happening with DVDs.
But in the backgroud a few sane people have defined some open standards for these things. Formats like Ogg Vorbis, Ogg Theora and FLAC are as close as we can get to open, patent-free formats for audio and video.
We should be building native support for these open formats into web user agents like Mozilla Firefox so that video can be delivered over the web in an open way.
2D Vector Graphics
Flash is by far the dominant technology for static and animated 2D vector graphics. But the World Wide Web Consortium already has a standard for this, it's called SVG. Not a lot of people realise that SVG has an equivalent feature set to Flash and is an open XML based standard like XHTML and is a W3C recommendation. For some reason there is not yet a widespread full implementation of this standard in any web user agent (to Adobe's credit they have probably come the closest, but have recently announced they are going to stop supporting SVG).
Mozilla are working on implementing SVG in Firefox but progress is slow on implementing such a huge standard and for some reason it doesn't seem to be a high priority for them. We need to give organisations like Mozilla more help in implementing SVG natively in web user agents.
3D Vector Graphics
3D virtual worlds are in their early stages on the Internet and are predominantly made up of applications like Second Life which are very much like the AOL of the web, before it was more open. They have a walled garden of a virtual world controlled by one company.
Just today I've seen an announcement claiming that MetaPlace is going to make virtual worlds work like the web. They're going to "democratise" virtual worlds by allowing anyone to create their own virtual world. At first glance, this appears to be the true 3D web. But actually Areae who make MetaPlace are going to use Flash technology to deliver these 3D worlds to the web browser. This is not how the web is supposed to work.
The Web3D Consortium exists to standardise formats for the 3D web and they are developing the X3D standard, another XML based standard like XHTML. If online virtual worlds are going to truly work like the web, they will surely use an open standard like X3D. We need to work on implementing X3D in web user agents.
Applications
Flash is very popular for applications online because of its programmable properties and its cross-platform nature. An alternative exists in a combination of technologies known as AJAX. Asynchronous JavaScript and XML is a way of using existing web technologies to create highly responsive web applications.
By applying AJAX techniques to SVG and X3D as well as XHTML, we can create some really interesting software.
The W3C is standardising web application formats in the Web Application Formats Working Group. WHATWG are contributing to this effort.
In conclusion
We've become lazy with our web user agents. The truth is,standardising a computer format, implementing it and promoting its adoption is a lot of hard work. Developers can hardly be blamed for choosing proprietary options which already work today, they are pragmatists and simply use whatver works.
If we care about the open-ness of the web (and by that I mean the freedom of our information) then we need to put a lot more effort into developing web user agents for the next generation of the World Wide Web.
To borrow a phrase from the Mozilla Corporation's advertising campaigns:
Take Back the Web!
Victory for Open Standards - OOXML denied ISO fast track
Microsoft's application for their OOXML office format to be fast tracked to an ISO standard has been turned down. There were lots of rumours flying around all day yesterday about what the result of the latest vote was, but it has finally been officially announced by ISO. Grocklaw has the details.
Standards for digital office documents might be a dull topic to discuss, but they're of a huge political importance. Microsoft currently has a monopoly with their Office suite and their proprietary office formats lock users' data in a single software vendor. This has the potential to cause huge problems for long term storage of data, let alone forcing computer users (including governments, schools and hospitals) into purchasing costly Microsoft software in order to read the documents others create.
An international standard already exists for documents, it's called the Open Document Format and it's an open standard used by many competing office suites including OpenOffice, StarOffice and KOffice. Microsoft is trying to push through a competing standard to ODF called OOXML which will complicate document standards and many believe is so technically complex that it could never practically be implemented by any company other than Microsoft. This would give the impression that Microsoft documents are in an open format, but actually perpetuate the problem of vendor lock-in.
To put it into perspective, the OOXML standard document is 6545 pages long. The existing ODF standard achieves the same goal in a document which is just 867 pages long. The reason for this is that ODF referenes existing ISO standards for things like date formats and mathematical formulae where as OOXML invents new ways of doing everything. In fact, despite the impossible length of the OOXML standard document, huge parts are missing because the document references Microsoft implementations which people implementing standards have no access to.
OOXML is the worst kind of standard. It was created for the wrong reasons, it is in competition with an already approved ISO standard, it is hugely complex to implement and up until now was being rushed through a standards process at an unreasonable speed. It gives me great faith in the international standards process that the ISO voted not to allow OOXML on a fast track to being a standard. Microsoft have been using some very underhand tactics to get the votes they needed and I'm pleased that their financial clout has not affected the result of the vote.
Reading Microsoft's press release you'd be forgiven for thinking that yesterday was a huge success for Microsoft, but it is pure spin. The reality is that they lost both of two votes required for the fast track to be approved and this is a set back for them.
But the fight is not over yet. The OOXML format was turned down for a fast track for now, but this does not prevent it from becoming a standard in the future. Many comments will have been made on the proposed standard which Microsoft can address and try to take the application further.
Microsoft are trying to make a mockery of the standards process, there is no need for a duplicate standard for documents and the proposed OOXML standard is completely self-serving. They should concentrate their efforts on adopting existing international standards rather than trying to force the world into using their own.
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.
Distributed Social Networking, Internet identity and trust
Distributed Social Networking
Social networking is a huge phenomenon on the Internet and web sites such as Facebook, MySpace and Orkut have enormous user bases. All of these social networks are currently centralised and controlled by a single company and do not allow users to interact between different networks. This can be frustrating for users who may have to sign up to several social networking web sites just to keep in touch with different groups of friends. Several efforts are in place to attempt to cross the boundaries between social networks, but most of these efforts work on the basis of another centralised system which aggregates all of the networks together using their respective proprietary APIs where they exist.
Open standards like FOAF and XFN already exist for expressing the relationships between people on the web, using semantic markup. In fact, I would argue that an open standard exists for every aspect of current social networking sites. By creating applications which use these open standards we can form a distributed social network which uses the web itself and does not require users to sign up to an isolated network. Each user need only create a personal home page using a service which supports the open standards to be part of the worldwide network.
I have started a new design concept on my web site listing common social networking features and corresponding open standards which could be used to implement them in Distributed Social Networking.
It's worth noting that services like Videntity are already supporting standards like FOAF.
Identity and Trust on the Internet
An interesting article in the New York Magazine a couple of weeks ago described how social networking sites are creating the biggest generation gap since Rock and Roll as teenagers are developing a completely separate concept of privacy to their parents. Teens can be very willing to talk about their personal lives and post pictures on public web sites. I don't even believe this is because they don't understand the issues of privacy, I just think they have a different attitude to privacy and are perhaps more open about their feelings than previous generations.
However, this did get me thinking. Whilst compiling this list I realised that one thing I wasn't sure how to achieve was the privacy features of social networking sites. Many of the sites allow you to define which information will be visible to which users. In a distributed system with no central authority to authenticate against it can be very difficult to define trust and granular permissions for information.
I searched the web for a solution and came up with OpenID, SAML and XDI.
OpenID
Being an ex-LiveJournal user I'm familiar with OpenID but hadn't realised how big it has become. AOL and Yahoo have now adopted the standard and even Microsoft are talking about integrating OpenID into Windows Vista.
"OpenID starts with the concept that anyone can identify themselves on the Internet the same way websites do-with a URI". Once someone has confirmed that they own a particular URI and they come across a web site which supports OpenID, they can use their URI to identify themselves. They are simply redirected to their URI's OpenID authentication if they need to log in. No more signing up for an account on every. site. you. visit!
XDI
An article called The Social Web: Creating An Open Social Network with XDI describes an ambitious project to create a new system of unique identifiers for information resources to create a Social Web of people, or more generally, a Data Web. The new scheme uses eXtensible Resource Identifiers (XRIs) to identify resources independent of a specific physical network path, location, or protocol - in a way which is compatible with URIs and IRIs. XRIs are then linked with "link contracts" which express authority, security, privacy, and data sharing rights in a machine-readable format.
Analogies are drawn with the identification and authentication system used in banking where "I-brokers" are "a trusted third party that helps individuals and organizations share private data the same way banks help exchange funds". The XDI project also has ambitious aims like anti-spam protection and identity theft protection.
SAML
According to Wikipedia, SAML is an "XML standard for exchanging authentication and authorization data between security domains, that is, between an identity provider and a service provider." Google are using SAML for Google Apps. Basically it allows a service provider to assert that a user has the permission to access a certain resource, by querying a separate identity provider (which could be common across all service providers).
Converging
It turns out that all of these technologies are converging and moving towards the holy grail of system administration - the "Single Sign On". OpenID can now use an XRI to identify a user and there is talk of using SAML in conjunction with OpenID to assert privledges.
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!
User Experience in a Horizontal Market
I read a blog post a while back called Reaction to the iPhone reveals how the electronics industry failed to beat the iPod. He talks about how the electronics industry is so obsessed with features that it forgets about user experience. Since then I've had a Design lecture from someone, who also looks a lot like an Apple fanboy, and talked about the same kind of things.
But the point they bring up about user experience is an important one. Much of the electronics industry can not understand why Apple products are so successful, they're overpriced and are easily matched by cheaper products with the same or even better raw functionality.
Engineers are unusual customers
I don't own an iPod, I do own an Apple laptop, but only because I know I can install other operating systems on it if I choose to. I'm extremely impressed with the iPhone, but I'm very unlikely to buy one. That's because I'm an engineer at heart and the opportunity for hacking on such closed systems is a lot less than for others. Apple is as proprietary as you can get. I'd rather own something I can hack on, even if that means sacrificing form for function. As an engineer I'm one of the worst placed people to judge the usability of a product.
This is a problem with the electronics industry, because the products are made by engineers like me. That's my first point, but there's a more important one.
Vertical Integration
The reason I believe Apple's products are so successful is because of the integrated user experience you get. The reason everything is so well integrated is because of the vertical market Apple have created. They provide the equipment, the peripherals, packaging and sales of their equipment, the operating system, the applications, the bundling and selection of content and there a links with the content creation itself.
When the button on your iPod is made by the same company you buy your music from, user experience is easy. I don't mean to trivialise the work that Apple put in to make this happen because they do an amazing job, I merely mean to point out that in a horizontal market it's going to be even harder.
Horizontalisation
A paper I read years ago by Milton L. Mueller talks about the economic consequences of digital convergence. He describes the transition from vertical market (like Apple) to a horizontal one where equipment, software, carriage, packaging and content will be distinct sectors of the market, run by different companies.
It's all the more interesting then that the company which just reached milestone in the convergence of computing, telecommunications and media did so with a vertical approach.
A horizontal market like the one described in that paper is my ideal for a converged market. It's good engineering and it's good for the consumer because it encourages a more competitive market. I think it's the market the Open Source community is heading for, which probably explains why they are notoriously bad at user experience.
The answer
So how do we achieve this level of user experience in a horizontal market where all of these functions are run by different companies? People who know me might guess that this is the part where I bring in my "open standards" mantra.
The only way we can hope to achieve this level of integration is by using open standards for the links between each level. Open hardware, open software, open networks and open formats for media.
If you want to converge different markets (which I believe is inevitable), those markets need to establish common languages to communicate with. If we achieve that ideal, everyone wins.
