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]

Upload: ferdinand-wilson

Post on 30-Dec-2015

214 views

Category:

Documents


0 download

TRANSCRIPT

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