Live Mesh and Live Framework Oran Dennison @orand orand.blogspot.com odennison@gmail.com.

Post on 30-Dec-2015

214 views 0 download

Transcript of Live Mesh and Live Framework Oran Dennison @orand orand.blogspot.com odennison@gmail.com.

Live Mesh and Live Framework

Oran Dennison@orandorand.blogspot.comodennison@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 MeshResources, collections and links

resource

collection

resource

UriEntityTagSubscriptionUri…

UriLastUpdateTime…

resource

linkUriTitleRelationshipType…

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!

NewsContactsFolders and filesCustom app dataAppsDevicesSharingUser presenceChange notifications

Live Framework Resource Model

Devices

Media Resources

Data Entry

Members Mappings Data Feeds News Subscription

Applications News Notification Queue

Mesh Objects

Scripts ProfilesMesh 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

http://<storage>

http://<directory>

http://<contacts>

<peer devices>

[Client|Cloud] Live Operating Environment

WL ServicesWL

ServicesWL ServicesLive

Services

Web Apps

HTTPHTTPHTTP

HTTP

Device

Cloud

Always Online

AJAX/SL/FlashApps

DesktopApps Mobile Apps

Live Operating Environment

(https://user.windows.net)

AJAX/SL/FlashApps

DesktopApps Local

Cache

WL ServicesWL

ServicesWL ServicesLive

Services

Device

Cloud

Occasionally Connected

P2P to another device

Live Operating Environment

(http://localhost:2048)

Live Operating Environment

(https://user.windows.net)

HTTP

HTTP

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 & AuthorizationMesh 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 deployment 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

<?phprequire_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 Startedhttp://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

^Unauthorized

New Device Types•Media Center•Ultra Mobile PC•Windows Home Server

New Devices Printers

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 developerhttp://developer.mesh-ctp.com

Live Framework Forum

Thank you.

Any questions?Oran Dennison@orandorand.blogspot.comodennison@gmail.com