It’s been 1.5 years since I published my last blog entry.  It was about the fundamental problems mobile application developers face today: intermittent connectivity and the lack of stable and discoverable addressing. These problems aren’t specific to mobile device world  - we have to deal with these communication barriers all the time. We need to share data between computers at work and at home, computers on the Internet and computers hidden behind firewalls and NATs, between internet sites, providing cloud storage (Spaces, Flickr, Facebook). I’m pretty sure everyone could come up with good examples of situations when they needed to access data, but couldn’t because of some sort of connectivity barrier. How many times did you have to use email as the only available mechanism for sharing data between people and devices? Does emailing documents to yourself again and again sound familiar? On .NET Compact Framework team we built store-and-forward messaging channel on top of e-mail, so application developers could use it. Although that is an interesting solution, it was quite a stretch, a desperate attempt to adjust the only broadly deployed and generally available technology to address the asymmetric connectivity problems. And it was really pushing the limits of the channel.


So, how things changed in 1.5 years? I December 2006 I joined the Live Mesh team. We are building a v1 product that has a potential to help people solve many, if not most of  the connectivity and data availability problems I’m personally passionate about solving. The product brings together your data, people you share data with and various devices you use to process the data into a single “Mesh”. The bold statement is that you can access your data anywhere from any device. We provide multiple alternative access paths to your data through the Mesh. I’m working on the Accounts team – we are responsible for keeping track of users, devices and applications in the system, security, authentication and authorization.


There are multiple perspectives to look at Live Mesh.

First, I view the Mesh as a collaboration tool between individuals. Every person in the Mesh has a unique Identity. We require every Mesh user to have a Windows Live ID. This is how we identify people in Mesh, that’s what you use to sign into the system and that’s how other people in the system recognize you. Your Identity is the main security principal in the system. If you use multiple Live IDs, each Live ID will only give you access to different data set, associate with the signed in Identity. You won’t be able to access data associated with other Live IDs, unless you explicitly share/sync it.

That’s how I plan to use Mesh: I want to share my pictures with my family and plan to use it as a collaboration tool to work on documents with other members of Accounts team.


Identity Mesh


Second, I view the Mesh as a set of Devices people own or use. Device ring you see on the front page is a great visual representation of this view. So, what do we call a Device in the Mesh? For single user devices, like phones or PDAs, that’s obvious. For potentially multi-user devices, like PC (multiple people can share the same PC, each person may have different OS account) - the device is identified as a {physical computer, OS account} tuple. For example, if I have 2 different Windows user accounts on my PC, switching Windows user would imply switching between Mesh devices. I and my daughter share the same physical PC, but use different Windows accounts, there will be 2 distinct devices in the Mesh, there will be no way to tell if they in  fact represent the same physical device. Note that Device is also a security principal in the Mesh environment and  device can be delegated by a user to sync data on user’s behalf, even when user is not signed into Mesh. Each Mesh Device obtains a unique thumbprint from Windows Live ID that’s used for device authentication purposes (Devices are also authenticated with Windows Live ID, similar to Identities).

Mesh is a sync platform. Every time you add Device to a mesh, you create a new sync endpoint. You can then chose what subset of your data  you want to sync with the particular device by mapping Mesh Objects (such as Live folders) to the device.

Now how about the Live Desktop? Is that just another Mesh device? Is that a physical computer Microsoft runs for me in the datacenter? Well, not exactly. Live Desktop is a service that provides you with a projected view into your data stored in the cloud.  Your cloud storage is always a sync endpoint by default. You never explicitly add it to your mesh. And it’s always online.


 Device Mesh

There are yet some other perspectives to look at the Mesh I plan to blog about in the future.

Check out Live Mech technology preview and stay tuned...


- Roman


This posting is provided "AS IS" with no warranties, and confers no rights.


Technorati Tags: LiveMesh