Decentralized Social Networking Programmable Open Mobile (POMI) 2020 Monica Lam Stanford University

with Dan Boneh, Ruven Chu, Ben Dodson, Michael Fischer, Sudheendra Hangal, Bobby Georgescu, Te‐Yuan Huang, Chanh Nguyen, Debangsu Sengupta, Jiwon Seo, Seok‐Won Seong, Seng Keat Teh, Ian Vo Biggest (Last?) Personal Computer Revoluon

mainframe mini workstation PC laptop phone

10x cheaper, 10x more users 3‐Tier Architecture

天 servers data Tian (Heaven)

My key, cache, window into my digital cloud: 人 ID, personality, assets, and the internet Ren (Man) Personalize the generic PC, borrow the power, display, keyboard, memory, etc

地 PC,TV Di at home, on the road, (Earth) in hotels, on the plane Ad‐Supported Social Networking Ownership, Privacy?

EULA reserves the right to change the EULA Convenience? Data silos

Our Personal Cloud

Web

Loopt dropbox

PC Economics of Super‐Giant Star Topology? Openness? The Omniscient Monopoly Ad‐Supported Social Networking

• Privacy • Data ownership • Data silos • Cost of infrastructure for super‐giant star technologies • Closed proprietary systems Decentralized Open Trustworthy (DOT) Social Net www.dotsocialnet.org

Decentralized across different administraon domains • Choice of privacy—owned home server, paid vendor, ad‐supported vendor

Open API for distributed applicaons across administraon domains

Trustworthy: Sharing with fine‐grain access control

Online social networking without reservations! Inter-operability between MySpace & (like AT&T & Verizon) Hypotheses

An open, high‐level API and plaorm easy to devel makes decentralized applicaons easy to develop

A safe haven with access control PAYS easy to Privacy • in situ social networking use apps $ • privacy‐sensive apps

Decentralizaon is more scalable and cost effecve affordable Strategy

✓ ✓ ✓ Develop Basic In Situ Social infrastructure Applicaons Networking

Research Release Real Apps & Experiment Consorum

Privacy affordable easy to apps $ use Open API

easy to devel Decentralized Social Networking Architecture

Junction Platform

3rd Encrypted & Anonymous Unencrypted Big‐Brother Party Data, Computation, Data & Portal Messaging Computation

Personal‐ Personal‐ Unencrypted Cloud Personal‐ Cloud Data & Butler Cloud Butler Computation Butler

Web Web PrPl (Private-Public) Infrastructure Browser Browser Personal Cloud Butlers

My Personal Cloud Friends’ List Calendar GPS Trace Credit card history Email Phone record

Personal Cloud Butler: Mediates access to personal data Manages a semanc index poinng to data hosted anywhere Social Mul‐

iPhone Android

Mobile client API

Contact Photo GPS Music

SociaLite: Social DB Language

Data PrPl OpenID Friends’ Friend’s Manager Index Manager Friend’s Butlers Butlers Personal‐Cloud Butler Butlers

Data Steward API

home server facebook imap easy to devel SociaLite: Language for a Social Mul‐Database

• A distributed declarave social database language • Based on Datalog: programs are declared as rules • Example: FOAF(?p) :‐ FRIEND(?p) FOAF(?p) :‐ FRIEND(?x), FOAF[?x](?p) FOAF‐CurrLocaon(?p,?l) :‐ FOAF(?p), CurrLocaon[?p](?l) • Supports composion, recursion • Hides distribuon details: Messaging, credenals • Declarave: easy to opmize: caching, approximaon, incrementality Basic Applicaon: Peops

• Friends all run their own Butlers • Harvested friends from Facebook • Display selected friends photos, GPS locaons • Single query  personal Butler • Butler contacts other Butlers to return results easy to use In‐Situ Social Networking

• Extract groups from email Research Old Childhood (Jaccard similarity metrics) Group Buddies Grade • school Ask users for group names Stanford • Pre‐populate with email Friends Foodies High aachments school Rock Band

Former Family Co-workers • Access control: OpenID • Suggest new group members Relationship Map • Add new contents Proof of Concept on Planetlab

100 90 80 70 10 Friends 60 20 Friends 50 40 30 Friends 30 50 Friends

Results Received (%) 20 10 100 Friends 0 0 1 2 3 4 5 6 7 8 Time (s)

Distributed SociaLite query of tagged photos over the planet with 100 nodes (20,000 photos total from Facebook) Juncon: Plaorm for Ad Hoc P2P Apps

XMPP generic, anonymous server-side Yahoo scripting Poker

http://www.yahoo.com/ http://www.yahoo.com/ juncon://sb/sessionID=234 poker/sessionid=123 (by invitaon) poker/sessionid=234 Activ Script Acvity Acvity Acvity html/css/js Director Director Director Acvity Web Web Director Browser Browser

Cross- Platform Native app easy to devel Acv Script

Dealer Table Player

{ ad: "edu.stanford.prpl.poker”, friendlyName: "PrPl Poker”, roles: { "player": {platforms: {android: {package: "edu.stanford.prpl.poker”, url: http://prpl.stanford.edu/poker/downloads/poker.apk}}, {web: { url: "http://prpl.stanford.edu/poker/play" }}} "table”: {platforms: { web: {url: "http://prpl.stanford.edu/poker/table" }}}, "dealer”: {platforms: { java: {url: "http://prpl.stanford.edu/poker/downloads/dealer.jar" }}}}} Ad‐Hoc Game Between Phones

Start Activity Invite: QR code . . . Join my Bluff game!

Accept with a snap

408‐555‐5555 ACCEPT Download software Join activity Rolling Dice (with Replacement)

1. Commit Each picks a random r, b declares gr mod p where g, p are agreed upon. r b rb g 2. Give to owner r a If not owner, reveal . Owner a g r Public calculates value of die as ra (ra + rb + rc) mod 6.

rc g 3. Reveal (ra + rb + rc) mod 6 r c Owner makes his r public. 4. Verify c A revealed r is only valid if gr matches gr from step 1. easy to easy to devel use Collaborave YouTube

Web: < 250 lines of JS ~50 lines of Junction Phone: < 200 lines of JAVA ~60 lines of Junction Real‐Life Applicaon Ideas

easy to easy to affordable Edu‐Games devel use

easy to easy to Privacy Campus Biggest‐Loser devel use apps

Shopping Social easy to easy to Privacy devel use apps $ Music Social: Jinzora

Share and discover music easy to easy to Buy music devel use $ Online Social Networking without Reservaons

✓ ✓ ✓ PrPl, SociaLite Peops, Poker, Email Mining Juncon Dice

Research Real‐apps: Jinzora Music, Shopping Social, Consorum Edu‐Games, Biggest Loser

Privacy affordable easy to apps $ use Open API

easy to devel

Inter-operability between MySpace & Facebook