Wednesday, May 7, 2008

Is Live Mesh a hyped up architecture?

Top notch programmer-blogger Joel Spolsky is not too sure about Live Mesh. Typically I fall into the skeptical category too when it comes to new architectures and SDKs promoted in the marketplace as the next big thing. Most big things are not. That’s just the way it is.

However, this time around I think Microsoft might be onto something–though I think there’s more to go.

Live Mesh isn’t just about file sharing as Joel points out. It’s a platform. How good the platform is, I don’t know–I haven’t gotten into the beta program as of yet. So I’m just extrapolating with much of this.

However, this platform may be what we need as developers to really excel with our next generation of apps, which will be more communication and context focused than what we’ve been used to. Both are crucially important to us as users as well as to computers as we try to most efficiently exploit all of what they can do.

In the old days, people would say I’m talking about collaboration here and yeah, it is…kind of. But this term is not only stale it really misses much of what’s actually going on. It’s like saying that IM or RSS is about collaboration. It is, kind of. But it’s also used in ways that go beyond what collaboration implies. The term collaboration also doesn’t hint at the importance of being able to share and exploit context. I mean context in terms of people from disparate locations being able to really appreciate the “context” of what others are doing. Yes, this gets a bit essoteric, so I won’t dwell on this, but let me just say maintaining context is a lot easier to do if you don’t have to, well maintain it, but rather use it because it’s so easily accessible from another computer. OK, enough about terminology. Back to terra firma and the real world of trying to develop apps that can be connected. It’s not easy enough today.

For instance, why isn’t there a drop dead simple way to easily create collaborative apps that support something like OneNote’s share feature? I’m totally perplexed why in .NET I can’t trivally call a Session manager, open a channel, pump standard as well as custom messages through it with payloads of standard and custom types (text, pictures, sound, movies, ink), and then consume data as needed on each end. This pattern is so obvious I don’t understand why it’s not out of the box in .NET. Yeah, I know there are classes here and there that purport to do this stuff, but it’s not trivial to assemble them to anything on par with let’s say what OneNote does. It’ not even close. Some of the problem is that existing APIs are too abstract, where there’s little gain. Unfortunately, APIs too abstract are not efficient and don’t get used.

Of course, part of the issue is that when it comes to connecting devices there are so many networking issues to decide upon and handle–firewalls, security, discoverability, and on and on. I get that. So here’s where Live Mesh might step in and help. If its communication is unknockably sturdy–as I hope it is–then maybe we have a platform that we can all accept and then place the app sharing pattern ontop of. (Never mind we could always have created an abstract pattern that supports multiple connection methods.)

So you see, by setting aside the network issue, maybe, just maybe we can standardize on two or three patterns for communicating between apps and get on with it.

There is a 100 pound guerilla in the room, however. And that’s performance. How much data can we push through Live Mesh and how fast I don’t know. I get the offline/online part with the feeds, but I hope the exact same communication model can be used to push data through fast–at least at IM speed.

It’s also go to be scalable to some interesting number too. For instance, it’s got to be reasonable to be able to share across lets say 100 people. If it’s a nightmare to manage, it’ll not reach its potential.

Now I think there’s a whole pending problem that Live Mesh doesn’t solve–and here they may be asking for trouble. I’m not sure if it enables the scenario of an adhoc network. I don’t know if it assumes that some server has to be pinged. To really be successful, Live Mesh needs to facilitate people sharing wherever they are–whether two kids in the back seat of a car playing a connected game or students working together in a library or cross campus.

Anyway, my hope is that Live Mesh lives up to its potential as a communication platform that can become a standard. It’s from this standard that the magic can really begin.