Live Mesh and Live Framework - orand

burnwholeInternet and Web Development

Feb 5, 2013 (4 years and 6 months ago)

135 views

Live Mesh and Live Framework

Oran Dennison

@
orand

orand.blogspot.com

odennison@gmail.com

the consumer experience

the developer experience

future experiences

What is the mesh?

Live Mesh

Live Framework

Wild Speculation

Live Mesh on the Mac

Live Framework


the developer experience


What’s new


The platform


The programming model

Live Framework as a Platform


User
-
centric data & services


Over 460M users, 30B relationships


Simple standards
-
based web architecture


Sync, communications, and P2P


Identity,
authN
,
authZ


App management


Analytics





User
-
centric data


Users own their data


Can grant access to:


Other users


Roles: Full, Writer, Reader


Devices


Apps


Can see who has access to what


Can revoke access


Apps & devices access data
on behalf of
users

User
-
centric services


Contacts


Profiles


Calendar


Mail


Photos


Groups


Favorites


Geospatial


And much more…

Standards
-
based architecture


HTTP


REST


Atom, RSS, JSON, POX


Atom Publishing Protocol (
AtomPub
)


FeedSync

Verbs


Standard HTTP methods


POST


Create a new resource entity


PUT


Update an existing resource entity


GET


Read a resource entity/collection


DELETE


Delete a resource entity


OPTIONS


Discover the capabilities


HEAD


{GET


entity body}


Consistent across the entire Resource Model


AtomPub

for CRUD and
FeedSync

for sync


URI
-
LINQ mappings for queries



Uses HTTP 1.1 semantics for…


Caching


Change notification


Incremental state transfer

REST In The Mesh

Resources, collections and links

resource

collection

resource

Uri

EntityTag

SubscriptionUri



Uri

LastUpdateTime



resource

link

Uri

Title

RelationshipType



FeedSync


Synchronization via RSS and Atom feeds


Bi
-
directional sync (multi
-
master)


Preserves conflicting data


Creative Commons


Microsoft Open Specification Promise

<
rss

version="2.0">

<channel>

<title>To Do List</title>

<description>A list of items to do</description>

<link> http://example.com/partial.xml </link>

<item>

<title>Buy groceries</title>

<description>Get milk, ... </description>

<
sx:sync

id="item_1_myapp_2005
-
05
-
21T11:43:33Z" updates="3">

<
sx:history

sequence="1" when="2005
-
05
-
21T09:43:33Z" by="a9"/>

<
sx:conflicts

...>


<item>


...


</item>

</
sx:conflicts
>

</
sx:sync
>

</item>

</channel>

</
rss
>

FeedSync

example

It’s feeds all the way down!

News

Contacts

Folders and files

Custom app data

Apps

Devices

Sharing

User presence

Change notifications


Live Framework Resource Model

Devices

Media
Resources

Data Entry

Members

Mappings

Data Feeds

News

Subscription

Applications

News

Notification
Queue

Mesh
Objects

Scripts

Profiles

Mesh

Contacts

Live Operating
Environment

Data Entry

Live Operating Environment


Live Framework’s service composition engine


Takes care of the hard problems…


Offline and sync


Communication


Device management, user/device presence, notifications


Exists in cloud and on all devices


All the incarnations look and feel the same


Provides a unified and consistent programming model


“I consider lack of data sync in Gears one of my greatest
personal failures. I was not able to convince Google to
take on the data sync problem. So I moved on.”


“Live
Framework imposes a data schema (Atom) on you,
but for that price of admission you get free automatic data
sync between devices and the cloud, as well as cloud
storage and associated services such as authentication
.”


Sync is a big deal.

Danny Thorpe


founding member of Google Gears, now at Microsoft working on Live Framework tools

Live Operating Environment


WL
Services



WL
Services



WL
Services




Web Apps

Device

Cloud

Always Online

Live Operating
Environment

(https://user.windows.net)



WL
Services



WL
Services



WL
Services



Device

Cloud

Occasionally Connected

P2P to

another device

Live Operating
Environment

(https://user.windows.net)

Mesh Resource

Partitioning

https://accounts.mesh.com/Identities/FKEXBSLJR3VUXEXMTPSSOVO6GM/DeviceClaims/CSOW2TEBYUSE5BD3I5QOS724UU

each resource lives in a ‘home’ datacenter

each resource has a stable canonical
URI based on its resource identifier

each resource has a location URI that routes
requests directly to its ‘home’ datacenter

https://accounts.clus9.bay.mesh.com/Identities/FKEXBSLJR3VUXEXMTPSSOVO6GM/DeviceClaims/CSOW2TEBYUSE5BD3I5QOS724UU

requests to the ‘wrong’ datacenter get redirected,
and clients cache the redirect URI for future use

mapping a resource identifier to its ‘home’
datacenter requires a lookup in a replicated database

you are here

Authentication & Authorization

Mesh Apps Overview

Mesh
-
Enabled
Web Application


Pre
-
authenticated


Pre
-
authorized to only
access data in its own
Mesh Object


Pre
-
authorized to only
access user data that it
is granted access to

Web Apps


App runs with specific
permissions
specifically granted by
the user (Delegated
Authorization)


Authentication
through Domain, App
ID & Secret

Rich Client Apps


App runs as the user,
with same privilege


Need Device ID & App
ID


Access to Cloud or
Client Live Operating
Environment

Mesh
-
Enabled Web Applications


Same app
on website, Live Desktop, and devices


HTML/JavaScript,
Silverlight
, Flash, etc.


Auto d
eployment and update


Socially aware and easily shareable


Accessed by originating website with user consent


Runs in a sandbox

Mesh
-
Enabled Web App Packaging

YourApp.zip


index.html


Manifest.xml


Logo.png


[folders, other static content]

Live Framework Programming


HTTP


AtomPub

client


Microsoft SDKs


.NET,
Silverlight
, JavaScript


Tools for Visual Studio


PHP library


Roll your own

Coding time:

Let’s party on the mesh with .NET!

JavaScript SDK


MeshApp.run

=
function

MeshApp$run
() {



Microsoft.LiveFX.MeshApplication.loadAsync
(
windows.location.hostname
,

Delegate.create
(
null
,
function
(
meshApplicationContext
)


{





if

(
meshApplicationContext.state

!==




Microsoft.LiveFX.OperationState.Success
)



{





MeshApp._showError
(
'
MeshApplication

Load Failed'
);





}



else



{



var

meshApplication

=
meshApplicationContext.resource
;



meshApplication.get_runtimeEndpoint
().
get_mesh
().
loadAsync



(
Delegate.create
(
null
,
function
(
meshOperationContext
)



{





MeshApp._onLoadMesh
(
meshOperationContext
);




}));



}



}));


PHP Helpers

<?
php


require_once

'LiveFX.php'
;



$token

=

"<delegated authentication token>"
;


$
livefx

=

new

LiveFX
();


$
loe

=

$
livefx
-
>
connectWithToken
(
$token
);


$contacts

=

$
livefx
-
>
getContacts
(
$
loe
[
'
ContactsLink
'
]);


$
livefx
-
>
printArray
(
$contacts
);

?>


“A whole new world…



A new fantastic point of view…”


Data
deeply
owned by users not apps or devices


Just feeds? I want my RDBMS/
filesystem
/… back!


Hierarchies


Transactions


Referential integrity


Eventually consistent systems


Conflict resolution: the dark side of sync

Getting Started

http://developer.mesh
-
ctp.com

Click on Join, Continue, click
click

click
,
type
type

type
, pretend to read
EULAs, Privacy Policies, Terms of Use,
click
click

click
, etc.

This step is the non
-
obvious one.

Tokens are no longer required.

Sign in at
http://developer.mesh
-
ctp.com

Speculative stuff ahead

Warning

^

New Device Types


Media Center


Ultra Mobile PC


Windows Home Server

New Devices
P
rinters

New Devices

Cars,
Zunes
,
XBoxes

Even More Speculative Device Stuff



Mesh
-
enabled picture frames


Mesh
-
enabled Eye
-
Fi

cards in cameras


Mesh
-
enabled NAS appliance


Intel Remote Wake Technology


Listens to Mesh Services while the device is asleep


Note: this is an early mockup and doesn’t imply actual product plans (but wouldn’t it be cool)

New App Types

MSI,CAB, and more

Visual Resource Script Designer

SDKs for More languages


ActionScript


Python


Ruby


Java


Perl

New Resource
TYpes


Calendar


Mail


Photos


Groups


Favorites


Mapping / geospatial


Search


Messenger

More Operating Systems


Windows Mobile


Zune


XBox


Embedded


Symbian


Linux

External Data Sources


Custom external service proxies


Facebook


Twitter


Flickr


Photobucket


SmugMug


TripIt


Dopplr


eHome

ETC.


App Marketplace


Office


Enterprise support


Streaming video & P2P


WebDAV

Get
meshified
!


As a user
(you, your friends & coworkers, your mom)

http://www.mesh.com


As a developer

http://developer.mesh
-
ctp.com


Live Framework Forum

Thank you.


Any questions?

Oran Dennison

@
orand

orand.blogspot.com

odennison@gmail.com