Behind Live Mesh: What is MOE?
Howdy! This is Richard Chung, a client developer for Live Mesh. You can find me blogging sporadically as DevDuck over on red hot place. I was one of the first developers on the Live Mesh team—I’ve been working on this stuff for over 2 years now and have been itching to talk about it!
By now, you’ve read all about Live Mesh. Hopefully, some of it makes sense to you—you might even be able to envision how it can dramatically change the way you manage data across your devices, share and interact with your friends and family, and collaborate with peers or partners! If not, that’s ok. The whole concept of Live Mesh will become clearer in the months ahead, especially as more applications and experiences are created on top of the platform.
Software + Services
When you were first introduced to Live Mesh, you probably played with the Live Desktop. It’s pretty snazzy. Maybe you even uploaded a few files too. Hey, it’s a cool service! You can store stuff in a cloud somewhere and access it anywhere using a webpage. Great!
As I look at the statistics on the service though, I notice that a significant portion of our users have stopped here. This pains me, as there’s a whole lot more you can do with Live Mesh. Didn’t you hear all the hoopla about Software + Services? Ever wonder, “Where’s the software?”
You might have noticed that on the device ring there’s a big orange button with a white ‘+’ sign. The magic happens when you click that big orange button and opt to “add a device” to your mesh. Click “Install” and you’ll download and install a very small program onto your machine. Once set up, you may notice a process called MOE.exe running on your computer. What exactly is MOE?
MOE: Mesh Operating Environment
MOE is an acronym for the “Mesh Operating Environment.” MOE is a service composition runtime that provides a unified view of all Live Mesh services and a simple way for applications to interact with Live Mesh. MOE is everywhere—it’s on all devices in your mesh (as “client MOE”), and it’s in the cloud (“cloud MOE”). The two are quite similar; they provide a symmetrical and consistent programming model between client and cloud. If you’re a developer, you’ll be able to take advantage of these flexible points of entry to Live Mesh in the way that’s most natural for you.
That’s a lot to digest. I won’t go into the developer story today; you’ll see more of that in the months ahead. For the purposes of this post, I’ll only focus on client MOE. Client MOE is at the heart of every device connected to your mesh, be it your PC or Mac or mobile.
The goals for client MOE are simple. Here are some of them:
· To allow seamless access to a user’s mesh and all the data in it;
· To abstract away common functionality, like synchronization protocols;
· To allow existing applications to participate in a user’s mesh, by optionally leveraging the local file system;
· To provide a seamless online/offline experience (also known as “occasionally connected”) by synchronizing and caching metadata from the cloud;
· To update seamlessly, providing new features and fixes in the platform; and
· To use minimal system resources, running in the background all the time.
You’ll notice that the idea of “seamlessness” really runs through these tenets. Obviously, since what we just released is a “Tech Preview,” we have only just started towards achieving these goals today. Rest assured that we will get better!
Let me elaborate on a couple of these points.
Online vs. Offline
In today’s world, many applications just don’t work if they’re not connected to the Internet. It’s much easier to write programs that assume connectivity to a service, than not. But why should it be so hard? MOE abstracts all this behavior for you. It caches the metadata that’s in your mesh and automatically synchronizes it, so that talking to MOE is essentially like talking to the cloud. And talking to MOE will always work, regardless of whether or not you have Internet connectivity. MOE will do the heavy lifting for you by synchronizing changes you’ve made locally, whether you are online or offline, with your mesh (when you have internet connectivity).
As high as our hopes are for Live Mesh, we realize that there isn’t anything today that fully showcases the true power and potential of the mesh yet. This is one of the reasons we’ve built simple file synchronization capability as a rich experience on top of MOE. This way, any existing application that writes files to disk (virtually all applications) will suddenly be able to leverage Live Mesh, without *any* changes to the application.
For example, say you use Windows Live Writer to collaboratively write blog posts, but it often takes several iterations before posting. You can now save your blog drafts into a Live Mesh folder, and suddenly those drafts are everywhere—on each of your devices and those with whom you share the folder. An idea for a post pops into your head on the bus ride to work? Start a post on the bus, add content to it at work, have others read it over and revise it on their own devices, add your final touches, and post at home that very evening! All without even thinking about e-mailing attachments back and forth.
Working on Live Mesh
I’ve been working on Live Mesh for over two years now. Prior to this I was a developer on the Windows Live Messenger service. When I first started on Live Mesh, I thought it would be a piece of cake. After working on huge scalable services that support millions of users, how hard could writing a little lightweight client be? It turns out that it’s quite hard. Synchronization may appear to be an easy problem (and in fact, there are a ton of apps out there that do simple file sync already), but it’s actually really tough to solve it in a *generic* fashion so that other applications can be built on top of it. That’s what we’ve strived for. (We’ll have a future post on how Live Mesh uses FeedSync underneath the covers, and what types of extensibility and other advantages that provides. Stay tuned!)
Here, There, Everywhere
Live Mesh is about to become your new best friend. The one you can’t live without and is always in the background to take care of things for you.
Technorati Tags: LiveMesh