Don’t get me wrong I think that it is a great user experience and a great leap in invention (putting aside concerns that I have about attention management) but I don’t understand why it was built the way it was built. Sure it allowed them to do that neat search trick, but frankly, who really needs that.
At some basic level wave is about getting notifications that a shared collaborative space has changed. The shared space is held somewhere in the cloud and has a set of capabilities. There are a set of capabilities that wave collaborative spaces have (live real time editing et al) and those were cool but quite frankly, who cares?. The shared collaborative space should be just a web page, any old web page and so it can do whatever a web page can do. It can do real time group chat or code editing or realtime document editing, but why should it be constrained to being some XMPP Wave thingy. You get a message in your inbox, you click on the message and go to a shared space in the cloud and in that space stuff happens. Maybe the space uses the wave protocol but maybe it doesn’t and it shouldn’t matter. It’s just a url.
So what would be needed if, instead of building wave the way it was built, we simply built an inbox that alerted the user when web resources of interest to them had changed and that launched web pages (in the context of the inbox) when messages were opened? I think it is a short list of standards and great progress is being made on all of them.
Single Sign On – A lot of the notifications in the inbox would probably be about data shared privately with a group of individuals, as such authentication will be needed before viewing the data. It would be a terrible user experience if every message that you received required a different login to a different site to view the pages. However, more and more sites are now standardizing on openid. If openid is widely adopted, and it is quickly becoming the only game in town then this barrier comes down and it becomes possible to launch urls that represent private collaborative spaces without the need to continually login. As an aside, the inbox may need to pass along the openid identity provider for the user to the site, but that is very doable.
Portable Contacts – The other thing that is needed is the user’s contacts to follow them around the web. The user should have their collaborators available to them on any collaborative space (i.e. url) they visit so that they can easily bring them into the collaboration. The opensocial rest api already provides ‘portable contacts’ so collaborative spaces can provide type ahead etc. against the user’s contact list when sharing with other collaborators.
Notification – The final piece of the puzzle is how changes to the collaborative space make their way to a user’s inbox. Given the inbox metaphor SMTP seems like the natural choice. However, traditional approaches to sending an email update when a web based collaborative space changes involve the user, opening the message, clicking on the url link in the message and then logging in, not pretty. Google Wave excelled here, opening the message opens the collaborative space immediately, no login, nothing. What if the SMTP message shipped the data in a format that describes the update and contains a link to the collaborative space. An inbox client that understood this data format would display the meta data in the message list and launch the site immediately when the user opened or even previewed the message. So we are looking for an existing standard that provides meta data about a url. Atom, seems like the most natural choice. So notifications can be sent to the user by sending atom entries over SMTP. As an aside the multipart message sent to the inbox could also contain text and html representations that contain a url link for compatibility with inboxes that cannot process atom entries.
Does this work, would this provide the main features of Wave or have I missed something fundamentally different about Wave? I really like the user experience of Wave but I don’t understand why it needs XMPP et al. What am I not seeing?