Here, There, Everywhere...
A quick self-introduction: I’m Alex Mallet, one of the development leads on the Live Mesh project. I’ve been at Microsoft since ’97, except for an abortive [but instructive] side trip to graduate school in an attempt to get a PhD in computational biology. Just about all of my time has been spent working on distributed systems, of gradually increasing scale – I started out working on IIS, moved to Application Center 2000, worked on our P2P API toolkit and finally ended up on the Live Mesh team about a year and a half ago. On Live Mesh, my team and I are responsible for making sure our datacenter services are easy to deploy and manage, and for providing common functionality needed by our cloud services. So, on the heels of the previous blog posts that have introduced the “big picture” view, I thought I’d give you a bit more insight into some of the details of the “services” part of “Software + Services”, by talking about our services that run in the cloud.
Our general philosophy when building our cloud services was to adhere to the tenets of Recovery-Oriented Computing (ROC): programs will crash, hardware will fail, and they will do so regularly, so your system should be prepared to deal with these failures. While it’s easy to espouse these principles in theory, the obvious next question is how to turn them into practice, and here we were aided by a great “best practices” survey paper written by James Hamilton, namely “On Designing and Deploying Internet-Scale Services”. I won’t claim that we managed to do everything that’s in his paper [we’re only at the Tech Preview stage, after all J], but I think we’ve done a decent job so far, and are heading in the right direction overall.
Enough philosophy, on to some more detail.
From a functionality perspective, our cloud services can be grouped into four buckets: dealing with feed and data synchronization, providing authentication and authorization, maintaining and fanning out the system’s transient state [like the various notifications provided in the Live Mesh Bar], and the connectivity services for synchronization and remote desktop access to work across any network topology. Sliced along the “state” axis, we have stateless front-end services, back-end services that maintain in-memory state, and persistent storage layers that handle both structured and unstructured data. From a scaling perspective, our plan is to scale out, not up. Thus, we’ve invested in making sure that we have as many stateless services as possible, as well as having facilities that allow us to partition our state [both persistent and transient] across multiple machines, and reconfigure these partitions as necessary. Overall, we have close to 20 different services, with each service consisting of multiple, redundant instances of a particular bit of code, striped across several racks of machines in the datacenter – in keeping with the ROC assumptions, our goal is to be resilient to multiple hardware and software failures.
Our front-end services are accessible [only] via HTTPS – all of the traffic that flows in and out of our system is encrypted. Our back-end services use a mixture of HTTPS and custom protocols layered on top of TCP. The vast majority of the services are written in C#, with the only exceptions being services that needed deep integration with Windows functionality that isn’t [easily] accessible to an application written in managed code.
All of our services sit on top of a runtime library that contains facilities commonly needed by each service: process lifetime management, HTTP and TCP listeners, a debug logging facility, a work queue facility, APIs to generate monitoring data like performance counters, etc. This common runtime also contains debugging, testing and monitoring hooks; for example, we have the ability to inject random delays and failures into our HTTP pipeline, which allows us to test our failure monitors and the overall response of the system to slow and failing services.
Building a full-scale datacenter deployment and management system is a huge undertaking, so we chose the lazy smart route and went with an existing, battle-tested system, namely the Autopilot framework, which was developed, and is being used, by the Windows Live Search team to manage their tens of thousands of datacenter machines [we’re not at that scale yet, but we hope to be, with your help J]. We use Autopilot to manage our code and data deployments, for [some of our] failure monitoring and self-healing, and to give us insight into the current state of our datacenter machines and services.
On the monitoring front, we actually monitor the system at several levels – via simple Autopilot-style watchdogs, with more extensive tests called “runners”, by hitting our service from various points outside our datacenter, and also using a variety of tools that scan our logs for error messages, highlight machines that appear to be having problems, look for crashing services etc. Of course, all these monitors are still somewhat untested – I’m sure we’ll be making lots of tweaks, and adding new tools over the coming weeks and months as we start having to troubleshoot and keep a real live system up and running. J
Ok, I think that’s enough for one post. If this is a topic of interest to you, and you’d like more detail on some of the stuff I’ve talked about, please leave suggestions and questions in the comments, and I’ll address them in follow-up posts.
And, of course, don’t forget to sign up for Live Mesh and give us feedback !
I’m John Macintyre, the Group Program Manager for Live Mesh Client Platform & Runtime (it fits on a business card if you use 6 point type). I wanted to talk about how Live Mesh client install works, and address the questions we’ve seen about why User Account Control (UAC) must be enabled on Windows Vista in order for Live Mesh to work.
The design challenge we faced with Live Mesh client deployment was to make it simple to install, while providing rich client experiences that are deeply integrated with the device experience i.e. today your Windows Shell, tomorrow your Mac, Mobile device etc.
It’s worth taking a quick look at the client footprint before we cover how it is deployed. The Live Mesh client can be separated into two distinct components:
There is a further subcomponent breakdown but at a conceptual level you can think of the client as a runtime engine with an experience layered on top of it. Today the client is deployed as a single unit but in subsequent refreshes we will enable other configuration and distribution scenarios.
We’ve tried to keep the client deployment model as seamless and simple as possible. It can be broken into three separate stages …
1) Add Device …
The Live Mesh client is deployed through the Devices page of www.mesh.com. Clicking on “Add Device” will initiate the download of the Live Mesh installer. The first thing that you may notice is the installer is relatively small. The initial install of the Live Mesh client is actually just a bootstrap component that reaches out to a server and retrieves the latest version of the client. This provides the benefit of small download from the browser and an always up-to-date client footprint.
2) Run LiveMesh.exe …
Why does Live Mesh require UAC?
At this point it’s worth talking about UAC and why the Live Mesh client requires that UAC be turned on. If you’ve tried to install Live Mesh on a system with UAC disabled you’ll have found that the installer blocks on this configuration. There’s a technical reason why we impose this restriction: In Vista RTM with UAC off, COM does not read the per-user hive, meaning COM objects registered per-user do not work. Since Live Mesh installs per-user without elevation it is subject to this restriction. To prevent users from installing on unsupported configurations we added a block in our installer when UAC is off. Fortunately there’s light at the end of the tunnel for users that run with UAC disabled. Windows Vista SP1 has a change that allows per-user COM when UAC is disabled. With the release of SP1, we have begun validating that Live Mesh fully functions with UAC disabled, but haven't yet finished our testing. Expect this configuration to be supported in a subsequent refresh. As you can probably guess, this also means that even after you install, UAC must remain enabled for Live Mesh to work correctly. If you turn UAC off, we won’t be able to find any of our COM objects.
3) Add Device …
After installing the Live Mesh client, users are prompted to sign-in with their Live ID. This Live ID is used to link the device to your personal mesh. By “device” we generally mean Windows user account. Multiple Live IDs can independently use the same Windows account (similar to Messenger). Once the device is part of your mesh you can initiate sharing (or synchronization) with your other devices, the cloud or other users. Vista users will see an additional option on the Add Device dialog. This option is to enable features that require administrator privileges including system level Live Mesh Remote Desktop (accessing the system while it is locked or an account is not logged in) and peer to peer file transfer. By default this option is selected and users will be asked to elevate to proceed with the device claim. If the user is not an administrator they can disable this option.
Once the user goes through this client deployment flow they are up and running with their mesh-enabled device. The runtime and experience components will continue to update themselves as new versions are available. As much as possible we try to do this without affecting the overall experience or disturbing the user.
The Web 2.0 folks have posted a recording of Amit's keynote from Wednesday night. It's a 10-minute "higher order bit" session. Check it out at http://blip.tv/file/854328 .
Our mantra for designing the Live Mesh platform has been "comprehensive, simple, open." We've released two more Channel 9 videos this week to show what we mean.
As far as comprehensive goes, check out Ori Amiga's video showing off some sample apps and a peak at how the platform works under the covers. Clients and services, online and offline, files and applications...it's a pretty impressive set of demos to give some weight to our comprehensive claim.
When it comes to open and simple, you can see some of that in the demo where Ori browses through the resource model, starting around 11:40. You see a RESTful model, you see feeds, you see ATOM, JSON and other formats, and you see FeedSync. Which brings us to...another channel 9 video!
We got Steven Lees, one of the guys behind the FeedSync v1.0 spec, to sit down with the developer who built the Live Mesh client runtime that consumes/publishes FeedSync, plus the PM and dev who built the corresponding Live Mesh cloud storage service. Have a look here.
Using FeedSync as the basis for synchronization is a key to making the platform open and accessible. It was developed with community feedback, and is covered by Creative Commons ShareAlike and Microsoft Open Specification Promise. Which enables folks to work on projects like Mesh4x.
- Jeremy Mazner
Program Manager (and blog oversight guy), Live Mesh
We are releasing a batch of video content this evening to provide more details on Live Mesh. Here's what we have lined up for your viewing pleasure:
Platform experience quick tour
Embed it: <iframe src="http://silverlight.services.live.com/invoke/60130/lm_demo/iframe.html" scrolling="no" frameborder="0" style='width:640px; height:480px'></iframe>
Platform quick tour for developers
Embed it: <iframe src="http://silverlight.services.live.com/invoke/60130/lm_demo_dev/iframe.html" scrolling="no" frameborder="0" style='width:640px; height:480px'></iframe>
Jon Udell's interview with Ray Ozzie
Overview of Live Mesh architecture
Overview of Live Mesh platform experience
Embed it: <iframe src="http://on10.net/blogs/nic/22038/player/" frameborder="0" height="325" scrolling="no" width="320"></iframe>
Hi everyone, I’m Noah Edelstein, Group Program Manager for Mesh Platform Experiences. I wanted to share some of the thinking behind the platform experience we’re releasing today as part of the technology preview.
It might be worth describing what I think a “platform experience” is – and to do this, I’ll use Windows as an example. Windows contains platform services that both allow your computer to function, and applications developers to write apps. This includes things like device drivers, memory management, etc. In addition, Windows contains a set of user gestures that define how customers interact with the platform and applications written on the platform. This includes the ability to open, close, and resize windows, manage files in folders, and find applications in the Start menu. Live Mesh is a platform with rich and deep services, including synchronization, device management, online storage, and communications. We’ve also built the platform experiences for real people to interact with the platform to realize real value. As Mike explained in his post, Live Mesh is built to be a broad platform, and as he said, “the easiest way to express the fundamental potential of a platform is with an experience that delights and generates even more ideas”.
This thinking was central to our efforts as we designed the platform experiences for Live Mesh. Releasing these experiences early as a Technology Preview gives us an opportunity to collect feedback about both the platform and the experiences we’ve built on top of it. We’re hoping that you find the experiences we’ve designed useful and delightful.
We’ll be posting more thoughts about this over time. For now, let me point you to our First Look whitepaper, an overview of the platform experience we’ve built and how it relates to the underlying platform. To whet your appetite, below is an excerpt from the beginning of the doc. I’m looking forward to hearing how you use your mesh!
Today we live in a world of the Web and a world of devices. Although the Web is at the center of our experiences, those experiences are delivered through a diverse range of increasingly powerful devices. As we take advantage of this new digital world, our experiences often become fractured and complex. We create and accumulate massive amounts of data, with the information and applications we care about residing on different devices and spread across the Web. We also interact with a broader array of people, struggling to stay connected with them and informed of the latest happenings. We are in need of, and increasingly demand, seamless “just works” computing experiences that bring it all together.
Microsoft is starting to solve these and many related problems with Live Mesh, a platform experience that uses the Internet as a hub to bring together your data, devices, applications, and the people you want to connect with into your own personal “mesh” that is always up-to-date and available from anywhere. With Live Mesh, Microsoft believes that:
… your devices should work together.
… your data and applications should be available from anywhere.
… the people you need to connect with should be just a few clicks away for simple sharing, collaborating, and learning more about them.
… you should have all the information you need to stay informed.
Live Mesh is a “software-plus-services” platform and experience that enables PCs and other devices to “come alive” by making them aware of each other through the Internet, enabling individuals and organizations to manage, access, and share their files and applications seamlessly on the Web and across their world of devices. Live Mesh includes:
§ A platform that defines and models a user’s digital relationships between devices, data, applications, and people—made available to developers through an open data model and protocols.
§ A cloud service providing an implementation of the platform hosted in Microsoft data centers.
§ Software, a client implementation of the platform that enables local applications to run offline and interact seamlessly with the cloud.
§ A platform experience that exposes the key benefits of the platform for bringing together a user’s devices, files and applications, and social graph, with news feeds across all of these.
What differentiates Live Mesh is its underlying platform. As a platform company, Microsoft believes in the power of the operating environment—and that if that environment is built correctly, the entire ecosystem will benefit. Live Mesh is built on the Live Services Platform, providing a Web-centric Mesh Operating Environment that evolves the user experience from one of “My Computer” to one of “My Mesh,” with the user at the center of that experience.
While many existing offerings may appear similar in that they utilize hosted services for storage, sharing files, or peer-to-peer connections between PCs, most of those products fulfill only one specific need. Live Mesh is unique in that it takes a more robust approach, bringing together all of this functionality in one offering. By weaving together the best of software and Internet services, Live Mesh delivers a platform and experience that is comprehensive yet simple and open.
Live Mesh provides a seamless “just works” experience that puts you at the center of your digital world by connecting you with the people you care about and putting you in control of your information, applications, and devices. As such, it can benefit anyone who uses the Internet and has more than one device—or has only one PC but wants to access its data or applications from nearly anywhere. Early adopters will likely be technology-savvy individuals who today struggle with multiple devices. However, this user base will expand over time as more and more individuals see the benefit of a Live Mesh approach to simplifying their computing experiences, sharing information, and staying connected.
Specific benefits of Live Mesh include:
§ Devices Working Together. Live Mesh brings the Web to your devices so that your data and applications are seamlessly synchronized and aware of each other, communicating over encrypted channels to help keep user data secure.
§ Anywhere Access. The information you put in your mesh is available from any of your other devices, including your own personal Live Desktop that resides on the Web. Live Mesh also provides remote desktop functionality for situations where you need to take full control of a device remotely.
§ Simple to Share. With Live Mesh, you can simply invite a friend or colleague to share a folder, giving them access to view or edit only the files you put in the folder. Live Mesh keeps track of and synchronizes the changes across your mesh.
§ Stay Informed. Live Mesh has a robust news feed system that allows you to easily keep track of the activities you care about, including the online status of your friends or colleagues, changes to files and folders in your mesh, and the status of your devices.
I've been undercover for two years. After helping to get XNA off the ground, I took an opportunity to learn some new things from some very good people. The pain of working on version 1s fades after a few years, so I decided to try another one. The pain is again fresh in my mind. But that’s not what this post is about – it’s about the excitement of launching version 1.
This project requires deep domain experts on distributed systems, scale data centers, web, Windows, Mac, mobile, networking, app protocols, file systems, databases, synchronization, peer to peer, security and more. We not only had to find these people and convince them that it would be cool to pull heavy Gs on a version 1 “for a year”, we had to establish a common vocabulary and then all agree on some things. One of the very cool things about Live Mesh is that is has a broad scope, but is at the same time respectful of the specialization needed to succeed on the web, Windows, Mac and mobile. We couldn’t have achieved this without a team with deep but different experience, knowledge, practices, jargon and opinions – and that still managed to cooperate even when it got hard.
We introduced Live Mesh at the Web 2.0 conference in San Francisco this evening. We are shipping working code to a community size that we think we can support while still working on the product. I look forward to the feedback.
We operate at such a scale at Microsoft that we have developed an instinct to specialize and focus. One of the typical early conversations in a new project is the target audience: consumers or enterprise? Large or small organizations? Web, Windows, Mac or mobile? What mobile targets? We rejected this early and focused us on adding value to individuals: people who may work in enterprises and belong to multiple organizations, but who also make choices as consumers, and use multiple technologies (and who are probably frustrated with the productivity barriers that exist as a side effect of the seams the industry imposes on them). We’ve thought a lot about adding value to enterprises too, primarily by empowering individuals while keeping in mind the confidentiality expected by organizations.
Our goal was to build a platform that spanned individuals, organizations and technologies. But we didn’t want to fall into the trap of assuming that we could get it right without using and proving it ourselves. And we also believed that the easiest way to express the fundamental potential of a platform is with an experience that delights and generates even more ideas.
To that end, we built both a platform and a set of basic horizontal experiences on multiple endpoints in parallel. As someone primarily concerned with the platform, the opportunity to “see it in action” as we build it has been very valuable and made the process more fun. I like them because they blend the web, Windows and other computing endpoints in a way that preserves the “it just works” feel of the web with seamless integration into my common workflows. The coolest thing about Live Mesh is how it smashes the abrupt mental switch that I have to make today as I move between being “on the web” and “in an application”.
This post is about the Live Mesh platform. We are not yet ready to release the Live Mesh platform, but I would like to share some of the core metaphors and building blocks we’ve been working on.
The focus for Live Mesh version 1 is to establish a Software + Services platform and ecosystem that enables unique new customer value, is unexpected by our competitors and will support broad innovation across multiple future releases. The core philosophy is to make it easy to manage information in a world where people have multiple computing experiences (i.e. PCs and applications, web sites, phones, video games, music and video devices) that they use in the context of different communities (i.e. myself, family, work, organizations).
My favorite example of a Software + Services application is Live Messenger (iTunes is another good example). The customer experience combines the best of local applications: always running, integrated with the shell and other applications, able to do background work and access local peripherals with the easy access to information that the web provides. Mesh is a Software + Services platform.
At the core of Mesh is concept of a customer’s mesh, or collection of devices, applications and data that an individual owns or regularly uses. The Mesh Account Service persists the relationship among these resources and authorizes access to them. The mesh is the foundation for a model where customers will ultimately license applications to their mesh, as opposed to an instantiation of Windows, Mac or a mobile account or a web site. Such applications will be seamlessly installed and run from their mesh and application settings persisted across their mesh. The device ring inside of the Live Desktop is a simple visualization of the mesh, and provides a view of all devices and current device availability. The Live Mesh platform provides the ability for applications to connect to any other device, regardless of network topology (network transparency), within the mesh. This infrastructure enables the Live Mesh Remote Desktop experience today.
A key design goal of the Live Mesh data synchronization platform is to allow customers to retain the ownership of their data that is implicit with local storage while improving on the anywhere access appeal of the web. The evolution of the web as a combined experience and storage platform is increasingly forcing customers to choose between the advantages of local storage (privacy, price, performance and applications) and the browser’s implicit promise of data durability, anywhere access and in many cases, easy sharing. A side effect of the competition to store customer data in the cloud and display it in a web browser is the fragmentation of that data and subsequent loss of ownership. Individual sites like Spaces, Flickr and Facebook make sharing easy, provided the people you are sharing with also use the same site. It is in fact very difficult to share across sites and equally difficult to work on the same data across the PC, mobile and web tiers.
The fundamental unit of synchronization in Live Mesh is a mesh object. Access to mesh objects is via the common web metaphor of a feed. These building blocks provide low barriers to adoption in addition to enabling appropriate customer experience metaphors in different technology, organization and business domains. As an example, one instantiation of a mesh object is as a local (shared, aka Live) folder on a PC. This same mesh object might be instantiated as a slideshow on a web site, and as preview and upload UX on a mobile device with a built-in camera. A Live Folder is but one specialization of a mesh object. A mesh object could also represent a range of cells in Excel or a To Do list that can be accessed from anywhere. You’ll see more on this in an upcoming Channel 9 interview with our storage and synch team.
Live Mesh has been designed with the goal of enabling explicit control over the location and custody of data even in a sharing environment. Mesh objects (i.e. files, lists, etc. and associated information) are physically stored in a Live Mesh Storage Server and exposed as authenticated feeds. The Live Mesh cloud implementation of a storage server is intended to be a peer to large number of Mesh Enterprise Storage Servers that can be offered in subsequent releases. This storage and feed architecture supports a completely enterprise scoped sharing across all tiers: PC, intranet browser, and mobile in addition to home - home and home - work scenarios.
Live Mesh provides the building blocks to support the notion of groups, or communities (member lists) of people associated with a mesh object. These lists are managed via the simple email-web confirmation exchange that is popular on the web. Member lists provide both a simple permission model and a natural scoping for the collaboration features of Mesh. The basic group mechanism can be trivially extended to add entities such as organizations to participate (in an assigned “role”). Similarly, you might invite a SpellChecker bot into a group.
Every layer of the mesh is built on top of APIs in the form of feeds. These layers enable:
The ability to add / remove devices (and someday applications) to a mesh and manage groups (by initiating invitations).
The ability to open a mutually authenticated raw communications channel, to any device in a group, regardless of current location or network topology. This channel always works, by way of cloud relay if necessary, but will automatically and transparently take the cheapest and fastest possible network path.
The ability to subscribe (“tell me when it has changed”) to resources and publish (“I changed it”) notifications against resources. The pub/sub infrastructure eliminates polling the cloud to become aware of changes. The sync engine itself uses pub/sub for sync change triggering.
An extensible “awareness” infrastructure which is scoped to the group and the information being shared. The first Live Mesh experiences provide a very simple notion of awareness – who is “using” a Live Folder now, but the infrastructure is designed to support much richer notions. The programmer sees a “durable for a login session” extensible XML document (unique per mesh object/group) that can be queried/updated at a very high rate and scale. Like everything in Live Mesh that needs to be queried, the programmer uses the pub/sub engine to signal interest in changes, and waits for notification of such changes.
A durable news event stream. Unlike awareness, which is level triggered against a schema, news is message based. The goal of news and awareness are to create a very real time intimacy around the collaboration experience.
A FeedSync based sync infrastructure that enables any device that is capable of web protocols to participate in bidirectional sync, again in the context of (fully authenticated) groups. One of the “devices” that can participate in this experience is a 3rd party web site. While the version 1 experience is primarily around syncing folders of files, FeedSync and the Live Mesh infrastructure is far more flexible. It could sync lists, tables, photo galleries, playlists, calendars, etc.
A scale blob store that can be referenced (as an enclosure) in the sync feed.
Because this is all built on feeds, all of this functionality is accessible from every endpoint that can run a browser (i.e. darn near everything). The Live Desktop, Windows Live Folders, Mac and mobile experiences are the first examples of the potential of this platform.
It’s just the beginning.
Product Unit Manager, Mesh and Storage Platform
I’m Amit Mital, General Manager of a great team of people that has created some really interesting technology that I’m excited to tell you about – Live Mesh.
There’s been a bunch of buzz about “the mesh” since Ray Ozzie alluded to it at last month’s MIX Conference. As Ray said there, we’ve been exploring the concept of “the mesh” for a couple of years now.
We started by asking ourselves a series of questions about our own digital lifestyle experiences, and examining the role of the web in our lives. We examined many of the ways the web is becoming more central to us – both workstyle and lifestyle. We’re friending, twittering, digging, tagging and linking to stay in touch, share photos, be entertained, meet new people, express our opinions, learn, and the list goes on.
Devices are how we interact in this new “web connected” world and we use a variety of them, including PCs, laptops, media devices, phones, digital picture frames, game consoles, music players and the list grows at every CES. However, as we discover, adopt and use more of these digital devices, it becomes increasingly difficult to keep the people, information and applications we depend on in sync.
I don’t know about you, but I’ve got two work laptops, a home PC, a SmartPhone, a Media Center, and a growing list of new devices. Unfortunately, at least initially, every new device I add makes my life a little harder not easier. There have been countless times where I’ve been in a situation where “that file is on my work machine” or “that photo is on my SmartPhone” or “I can’t access it because I’m offline.”
It can be frustrating for users and don’t even get me started on how hard this new world is for developers.
We looked on the Horizon
So two years ago when we began our journey, we started from a there-has-to-be-a-better-way perspective and asked ourselves questions like, “How can we make this multi-device world easier for users and developers?” As we started thinking about this, we brainstormed some “what if?” scenarios.
What if we could provide:
· “Unified Device Management” - enabling your devices to report into a common service, for status, for health, or to report their location.
· “Unified Data Management”- or the transparent synchronization of files, folders, documents & media, the bi-directional synchronization of arbitrary feeds, of all kinds, across your devices and the web.
· “Unified Application Management” - for centralized web-based deployment of apps across the devices you own.
· “Centralized Management” - where you could configure and personalize your devices and remote control into them from just about anywhere.
As our team set out to explore these areas we realized we had a unique opportunity to use the magic of software and internet services to connect and bring devices together into your own personal “mesh” enabling them to work in concert with one another.
In order to deliver these capabilities, we had to tackle a series of complex problems and computer science challenges. We did, and today it’s my pleasure to share and announce the Live Mesh – Technology Preview.
This new software-plus-services platform enables PCs and other devices to “come alive” by making them aware of each other through the Internet. Our goal is to provide a “just works” experience by making it much easier to access the information, applications, people, and devices you care about.
Our design goals for Live Mesh are to have…
· …your devices work together
· …your data and applications available from anywhere
· …the people you need to connect with just a few clicks away for sharing and collaborating
· … the information you need to stay up-to-date and always be available
We’re achieving these design goals by combining the power of ‘cloud services,’ with the convenience and rich experience of your many devices.
The Platform is the Core
I’ve spent some time talking about the experiences we want to enable, but what really differentiates Live Mesh is that it’s a platform. That’s no surprise, I guess, since building platforms is part of Microsoft’s DNA, and our team is really comprised of a bunch of platform specialists.
We started with a vision of creating an open, comprehensive and accessible platform that enables developers to tackle increasingly complex problems no matter the device, connection or experience.
Our guiding principles were:
· Services Are the Core of the Platform – the Live Mesh platform exposes a number of core services including some Live Services that can all be accessed using the Live Mesh API; these include Storage (online and offline), Membership, Sync, Peer-to-Peer Communication and Newsfeed.
· Same API on Clients and in the Cloud – the programming model is the same for the cloud and all connected devices, which means a Live Mesh application works exactly the same regardless of whether it’s running in the cloud, in a browser, on a desktop, or on a mobile device.
· Open, Extendable Data Model – a basic data model is provided for the most common tasks needed for a Live Mesh application; developers can also customize and extend the data model in any fashion that is needed for a specific application.
· Flexible Application Model – developers can choose what application developer model best fits their needs.
Today the Technology Preview provides access to the foundational experience that exposes the core functionality and common gestures of the platform. In the near future, we’ll provide more details on the platform including access to an SDK. Nevertheless, today you can get some deeper details on the platform directly from Mike Zintel, Director of Service Infrastructure for Live Mesh. In addition, head over to Channel 9 where throughout this week we’ll be posting some great videos from the team, on topics like Architecture, Sync and Storage, and the Developer Platform.
Take a Quick Peek
I’ve spent some time discussing the why and what of Live Mesh. Now I’d like to give you a brief overview of how it works.
Several times I referenced how Live Mesh enables “your devices to work together.” But how? With Live Mesh, your experience starts by adding devices to your personal “device mesh” and making them aware so they work together. This is what "software-plus-services" is all about, devices, software and services working together, on your behalf.
Adding a device to your mesh is easy; after you sign up for the service using your Windows Live ID (I’ll tell you how later), you’ll be directed to your personal Live Mesh page to get started. Here you can add, manage and remove your devices.
After you add a device (or several) to your mesh, you’ll notice a few, small changes on the device, in particular, a new notifier icon in your Windows Taskbar.
When you hover over it, you’ll see a pop up, that includes a list of the devices, news feeds and folders in your mesh.
Now the fun begins. With a couple of mouse clicks, you can easily add an existing (or new) Windows folder to your mesh. As you add a folder to your mesh, it quickly replicates it to your other mesh devices. “Cool,” you might say, “but there are other products that do this, too.”
You’re right, but it gets more interesting. We’ve integrated Live Mesh into your Windows experience by including a “fly out” Mesh Bar next to Windows Explorer.
The Mesh Bar gives you additional information about the Live Mesh folder, such as user activities and notifications. So in addition to having your devices “work together,” you can also stay uptodate with any changes.
So Live Mesh enables your devices to work together and allows you to add and sync files and folders across your mesh of devices. But the team didn’t stop there; we took it a step further by adding “social” elements.
With Live Mesh, it’s easy to share the contents of folders with others. For example, I can create a folder called “Vacation Pictures” and with a few mouse clicks easily share it with friends (and the devices in their mesh). When I do, Live Mesh keeps me up to date on what’s happening with that folder by notifying me of any changes (e.g. new files, removal of files, user comments, etc.). We call this News and it’s another way Live Mesh makes an otherwise ordinary folder “come alive” for users.
Let me quickly share with you two other things in Live Mesh: Live Desktop and Live Remote Desktop. While the two have similar names, each doessomething different, but both add amazing conveniences. Live Desktop enables you to easily access your mesh anytime, anywhere, using only a Web browser.
Live Remote Desktop builds on the capabilities of Windows Remote Desktop, giving you the ability to directly access and control other devices within your mesh. So, if you need to access and control your home PC, it’s no problem. With one click from any device in your mesh, you’re in control.
I’ve just briefly highlighted some early experiences the underlying Live Mesh platform provides. There’s plenty more. For a quick tour of the Live Mesh experience, visit www.mesh.com to view some screencasts or drop by http://on10.net to see a couple team members, Noah and George, talk more about the experience.
Getting "Into the Mesh"
Before you get started, I want to give you some other tips and information.
First, this is a limited Technology Preview and we’re seeking your feedback. There’s some pent-up demand, so we appreciate your patience and understanding as we scale the system. We’ll do our best to scale as quickly as possible, but we also want to make sure the system is reliable and responsive.
Second, initially the user interface will be English only and we are hosting the service from our United States data center; this may have impact on some users. We’re working on this, and will announce broader availability in the coming months.
Third, this Technology Preview initially supports Windows (Vista & XP) machines but our vision of your device mesh extends far beyond this. In the near future, we’ll add support for the Mac and mobile devices, and then we’ll build upon that foundation.
It’s been a fun and interesting journey for the team and we’re excited to hear what you think. I hope you take the opportunity to learn more by visiting www.mesh.com.
As I mentioned at the outset, Live Mesh has been developed by a great group of individuals who I have the privilege of managing. Many of them are excited to tell you about what they’ve been creating, so I invite you to visit the team blog at www.mesh.com/blog or stop by Channel 8, Channel 9 and Channel 10 to see a series of “deep dive” videos. Also, you might want to check out Jon Udell's interview of Ray Ozzie on Channel 9. Ray discusses his role as Chief Software Architect, and provides his perspectives on utility computing and Live Mesh.
We hope this marks the beginning of an ongoing dialog with you that spawns lots of new ideas and opportunities. We appreciate your interest in Live Mesh and look forward to “meshing it up” with you.