Live Mesh and Live Framework Oran Dennison @orand orand.blogspot.com [email protected].

50
Live Mesh and Live Framework Oran Dennison @orand orand.blogspot.com [email protected]

Transcript of Live Mesh and Live Framework Oran Dennison @orand orand.blogspot.com [email protected].

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

Live Mesh and Live Framework

Oran [email protected]@gmail.com

Page 2: 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

Page 3: Live Mesh and Live Framework Oran Dennison @orand orand.blogspot.com odennison@gmail.com.
Page 4: Live Mesh and Live Framework Oran Dennison @orand orand.blogspot.com odennison@gmail.com.

Live Mesh on the Mac

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

Live Framework the developer experience

•What’s new• The platform• The programming model

Page 6: Live Mesh and Live Framework Oran Dennison @orand orand.blogspot.com odennison@gmail.com.
Page 7: Live Mesh and Live Framework Oran Dennison @orand orand.blogspot.com odennison@gmail.com.

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

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

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

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

User-centric services

• Contacts• Profiles• Calendar• Mail• Photos• Groups• Favorites• Geospatial• And much more…

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

Standards-based architecture

• HTTP– REST

• Atom, RSS, JSON, POX• Atom Publishing Protocol (AtomPub)• FeedSync

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

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

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

Uses HTTP 1.1 semantics for…

• Caching• Change notification• Incremental state transfer

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

REST In The MeshResources, collections and links

resource

collection

resource

UriEntityTagSubscriptionUri…

UriLastUpdateTime…

resource

linkUriTitleRelationshipType…

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

FeedSync• Synchronization via RSS and Atom feeds• Bi-directional sync (multi-master)• Preserves conflicting data• Creative Commons• Microsoft Open Specification Promise

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

<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

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

It’s feeds all the way down!

NewsContactsFolders and filesCustom app dataAppsDevicesSharingUser presenceChange notifications

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

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

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

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

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

“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

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

Live Operating Environment

http://<storage>

http://<directory>

http://<contacts>

<peer devices>

[Client|Cloud] Live Operating Environment

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

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)

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

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

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

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

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

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

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

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

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

Mesh-Enabled Web App Packaging

YourApp.zip– index.html– Manifest.xml– Logo.png– [folders, other static content]

Page 27: Live Mesh and Live Framework Oran Dennison @orand orand.blogspot.com odennison@gmail.com.
Page 28: Live Mesh and Live Framework Oran Dennison @orand orand.blogspot.com odennison@gmail.com.

Live Framework Programming

• HTTP• AtomPub client• Microsoft SDKs• .NET, Silverlight, JavaScript• Tools for Visual Studio

• PHP library• Roll your own

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

Coding time:Let’s party on the mesh with .NET!

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

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);            }));        }    }));

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

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);

?>

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

“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

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

Getting Startedhttp://developer.mesh-ctp.com

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

Click on Join, Continue, click click click, type type type, pretend to read EULAs, Privacy Policies, Terms of Use, click click click, etc.

Page 35: Live Mesh and Live Framework Oran Dennison @orand orand.blogspot.com odennison@gmail.com.
Page 36: Live Mesh and Live Framework Oran Dennison @orand orand.blogspot.com odennison@gmail.com.

This step is the non-obvious one.Tokens are no longer required.

Page 37: Live Mesh and Live Framework Oran Dennison @orand orand.blogspot.com odennison@gmail.com.
Page 38: Live Mesh and Live Framework Oran Dennison @orand orand.blogspot.com odennison@gmail.com.
Page 39: Live Mesh and Live Framework Oran Dennison @orand orand.blogspot.com odennison@gmail.com.

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

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

Speculative stuff ahead

Warning

^Unauthorized

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

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

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

New Devices Printers

Page 43: Live Mesh and Live Framework Oran Dennison @orand orand.blogspot.com odennison@gmail.com.
Page 44: Live Mesh and Live Framework Oran Dennison @orand orand.blogspot.com odennison@gmail.com.

New Devices Cars, Zunes, XBoxes

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

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

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

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

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

Visual Resource Script Designer

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

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

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

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

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

Thank you.

Any questions?Oran [email protected]@gmail.com