|
First before I get into the details, some background on myself. I am obsessed with all aspects of networking including everything from the low-level details of packet-switched networking all the way up to social networking phenoms (for better or worse) such as Twitter. I recently wrote an article in MSDN magazine about how to share state among peers in a pure serverless peer networking application... one could say that peer networking and social networking are my passions.
With that out of the way, you can probably tell how excited I am about the forthcoming offering from Microsoft called Live Mesh. Regular enough to set your watch by, Microsoft is on the road to bungling the marketing for this offering as well. Their sample application includes File synchronization and I don't think they are hyping the development framework loudly enough.
Live Mesh is a cloud service. An application using the Live Mesh SDK can synchronize with the live mesh using technology based on FeedSync, a Microsoft technology that allows for the description and serialization of bi-directional asynchronous data synchronization using RSS and Atom technology.
Microsoft Watch has called sync the killer application for connected applications. While I agree, that's like looking at a sphere from the perspective of someone trapped inside a piece of 2-dimensional paper. It's not the whole picture and doesn't represent the true potential.
Sync is a necessary activity when communicating with a cloud service. Cloud services are the future of the operating system. That's right, you heard me. Take a look at the planned session list for PDC 2008 and notice how you've got a nearly 50/50 split between Windows 7 and Live Mesh with some other stuff thrown in for color. Now extrapolate on that and consider how people are increasingly relying on "feeds" of "stuff" to come to them rather than them actively hitting the web. People don't have time for web surfing as much as they used to - there's too much to follow and too much to do. People tell "the intertubes" what they're interested in and data flows to them in a passive trickle of goodness.
Years ago, we were all trying to solve the problem of storing data on the desktop. Microsoft gave us various versions of SQL Server that ran in single-user mode for a flat file. We got sqlite, which is one of the persistence options available for Apple's Core Data. At some point, people decided that there were enough readily available options that cheap, developer-friendly local storage was a solved problem.
Then we started connecting to Web Services and extending the reach of our applications to central servers. Whether we were using those servers for central state persistence or for pulling aggregate information to enhance our app (like stock quotes, weather reports, mapping services, comic book prices, critical hit charts for our favorite tabletop RPG, etc) - we were still extending the networking tentacles of our app. Today, it is hard to find a really good desktop application that doesn't have some kind of functionality that allows it to extend its reach to the Internet for some reason.
Now that all of these apps are extending their reach to the Internet and people are using these apps on multiple devices, we are all craving a synchronization solution. We want some way to keep our information in some kind of cohesive, consistent package that looks the same whether I am looking at my data from my laptop, from my desktop, from my mobile device, or even from a website.
MobileMe and Live Mesh both promise to give us solutions to this problem. The difference that I can see from where I sit now is that MobileMe is designed, in typical Apple fashion, to fix very specific synchronization needs such as files, contacts, calendars, and preferences with extensibility being a possibility if you really want it. Live Mesh, in typical Microsoft fashion, is a developer platform designed to generically solve the problem of synchronization through the use of cloud services and its rather uninteresting initial implementation of Live Desktop is really just a commercial-quality sample of what you can do using the Live Mesh SDK.
At the moment it is hard to do a comparison because MobileMe (despite the recent rebranding and feature enhancements) has been around for quite a while and Live Mesh is still in beta and only a select few developers even have access to the SDK.
An incredibly powerful feature built right into Leopard that most people (note: that means most people that I know or are willing to speak to me... not most people as in 51% of the world) simply don't know exists is Sync Services. Sync Services works by allowing your application to synchronize with something called a "local truth". Then, when you synchronize to MobileMe, the local truth is compared with what I would call the "cloud truth" (deltas stored in a private section of your MobileMe storage allocation/iDisk). These two truths are synchronized and reconciled. This effectively gives your application the ability to store local data, synchronize it with MobileMe, and have MobileMe propagate your data around to all of your other devices that have the same MobileMe account configured.
Here's the tricky part: from what I can tell, this is nearly identical to what the MOE (Mesh Operating Environment) is planning on doing. With MOE, there is a "local MOE" which is a RESTful service running on a local HTTP port. When you synchronize with that, the Live Mesh service will synchronize the local MOE data with the remote (cloud) MOE data and reconcile. Sound familiar?
So.. the ultimate question then really is - which one is easier to code for and provides more robust collaboration and synchronization capabilities? Time will tell, but I am currently looking into writing a Sync Services example so that when we finally do get the Mesh SDK handed to us, I can write a sample and compare the two.
The great thing about competition is that its always a good thing for the consumer. Theoretically, Joe User who is using both MobileMe and Live Mesh will never have data that is out of sync again.
<soapbox>
Finally people are starting to get the concept that the user is the center of the universe. Their data should follow them, they should not have to manually cut/paste (or worse, e-mail or thumb drive) their data from one place to another. Information that the user needs for their current task should be available to them and they shouldn't have to give a crap about how that information got there, and they certainly should not need Cisco certification in network management to make it happen.
</soapbox>
Stay tuned for the MobileMe and Live Mesh throwdown as I compare both end user experiences and developer experiences and wax philosophical about the future of application development :)
I've been using Live Mesh for some time to sync pictures from my laptop to
my media server which is then picked up by iTunes and sent to my AppleTV,
it works really well. A couple missing menu items etc but since its a beta
I guess we can forgive them for now :)
On another thought, I wonder when the storage space available on these
services will catch up. I'd like anywhere access to my ISOs which would
mean 400Gigs of storage ;)