Open Source and the Federated Social Web
The Structure of Communications Revolutions
Evan Prodromou
StatusNet Inc.
Agenda
- Federation
- Protocols
- Projects
Communications revolutions
- Email
- Documents
- Personal publishing
Email: 1993
- large consumer systems: AOL, CompuServe, GEnie
- University networks on Internet
- Government systems (Minitel)
- Proprietary systems in corporations, government (VINES, Notes,
Microsoft Mail)
- X.400 - ITU recommendation, government-mandated
- ad-hoc bridges
- BBSes (FidoNet) for customers or communities
Email: 1995
- Unified around Internet email
- Hierarchical addressing: user@domain
- BBS → ISP
- Telecom companies
- AOL opens up (1995)
- BBSes almost disappeared
- Open Source: Sendmail
Documents: 1992
- Proprietary, complex, internal in enterprise
- File sharing
- BBSes for customer download
- AOL, CompuServe, etc.
- Some FTP systems
Documents: 1997
- Web almost ubiquitous
- Hierarchical addressing: http://domain/document
- Intranet/Internet/Extranet
- HTTP + HTML
- Open Source: Apache
Personal publishing: 2001
- "Home page" on ISP
- Geocities, Tripod
- Frontier, Blogger
- RSS confusion
- Personal vs. Business
Personal publishing: 2005
- Hosted blogs ubiquitous
- URLs for identity
- Feed readers
- Podcasting (enclosures)
- RSS 1.0, 2.0, Atom: more than we need!
- Personal and business
- Open Source: Moveable Type, WordPress
What's my point?
- Revolutions happen quickly.
- Unconnected islands → federated networks
- Commercial adoption drives need for control
- Open Source implementation is key
Why Open Source?
- Low- or no-cost to install
- Bottom-up adoption (requires skill not capital)
- Rapid innovation as things scale
What is federation?
- Network of networks
- Open protocols (usually a lot)
- Uniform namespace
- Hierarchical addressing
- Anyone can play
Other federated networks
- Postal system (country + postal code + local addressing)
- Telephones (country + area/city code)
- SMS (ditto)
- TCP/IP (IP addresses)
- DNS
What drives federation on the Internet?
- TCP/IP
- DNS
- Scale
- Globalism
What drives federation?
- Control
- Distrust
- Greed
- Innovation
Metcalfe's Law
- Value is proportional to the square of the number of nodes.
- V = cN^2
- "The more, the merrier."
- Much, much merrier.
Metcalfe's Law and federation
- Makes big networks stronger, easier to resist
- Makes federation important for small networks
- Once network of networks > big networks, makes them join too
Social software: 2010
- Facebook: 500M users
- Twitter: 100M+ users
- Application-specific networks threatened: Flickr, Digg, YouTube
- National networks threatened: Orkut, Friendster, Bebo, Hi-5
- Niche networks threatened: LinkedIn, Ning
- Social gaming
One vision
- Some networks become defacto substrate for Internet.
- Facebook: "Open" Social Graph
- Twitter: Social messaging, "real-time"
- "Open" means "Use our API"
- Compare: Skype for voice
- Compare: Google for search
Another vision
- Commercial adoption of social messaging
- Need to connect
- Threatened networks fight to survive
- Open government requires 100% engagement
- Business needs of providers
Social software: 2012?
- Email-like identity evan@status.net or URL-like http://evan.status.net/
- Distributed real-time follow
- Combination of small and large networks
- Application-specific networks → general representations
Federation
- Adds players
- Builds value
- Stimulates innovation
Changing the game
- Winner take all
- Winner take some
The monolithic model
- Get venture capital
- Make social network software
- Get everyone in the world to use it
- WIN!
The federated model
- Have people
- Make or buy or install social network software
- Connect to the rest of the world
- WIN!
New players
- Big portals
- Universities
- Enterprise
- Mobile carriers
- Governments
Why should hackers care?
- Most important parts of our life: family, friends, romance
- Politics requires open discourse
- Making software that matters
Protocol suites
- "Email" = SMTP, RFC 1822 messages, addresses, MIME, ...
- "Web" = HTTP, HTML, CSS, JavaScript, favicon.ico, robots.txt ...
- "Blogging" = Web, RSS or Atom, Atom API, enclosures, pingback/trackback, ...
- "Social Web" = ???
Protocols: OpenID
- http://openid.net/
- Authentication (AuthC)
- URL for identity http://evan.prodromou.name/
- Devolving to a few identity providers (Google, Yahoo)
- Whitelist oriented
Protocols: OAuth
- http://oauth.net/
- Authorization
- Widely implemented
- Whitelist oriented (consumer keys)
- Not a lot of social parts
- Authentication (Sign in with Twitter)
Protocols: PubSubHubbub
- http://code.google.com/p/pubsubhubbub/
- Real-time publishing ("PuSH")
- Atom- or RSS-based
- Web hooks
- Great support: Google Buzz, Posterous, Tumblr, WordPress,
LiveJournal, StatusNet, Cliqset, ...
Protocols: ActivityStreams
- http://activitystrea.ms/
- Represent social actions in Atom with XML namespace extension
- Subject, Verb, Object
- "Evan published a photo"
- Powerful when combined with PubSubHubbub
Protocols: Salmon
- http://www.salmon-protocol.org/
- Subscriber to publisher ("upstream")
- Comments and replies
- Activities
Protocols: WebFinger
- http://code.google.com/p/webfinger/
- Email-like identity for the Web user@domain
- XML document format matches identity to URLs (My photo service
is X, my social messaging service is Y, my profile is Z, my OpenID is W...)
- LRDD uses URLs instead of Webfingers
Protocols: Portable Contacts
- http://portablecontacts.net/
- Define social relationships
- Static social graph
- User-controlled sharing of contact data
- Compare: XFN, FOAF
Protocol Suite: OStatus
- http://ostatus.org/
- Webfinger + LRDD = discovery
- PuSH + ActivityStreams = follow
- Salmon + ActivityStreams = reply
- ActivityStreams + PoCo = profile
Protocol Suite: XMPP
- http://xmpp.org/
- Originally developed for IM ("Jabber")
- Distributed system with email-like identifiers (evanprodromou@jabber.org)
- Social relationships == buddy list
- Profile == vcard
- Supports publish-subscribe
- Not widely implemented, not HTTP-based
What's missing?
- Privacy
- Client API
- Microapps
The Open Source enabler
- Who will be the Apache of the Open Social Web?
- Not sure yet
- Many contenders
- Trying to work together
Projects: Diaspora
- http://joindiaspora.com/
- 4 students in NYC, 1 summer, $200K!
- OStatus-like stack
- Ruby on Rails
- AGPLv3
- No working version... yet
Projects: DiSo
- http://www.diso-project.org/
- Based on WordPress
- Chris Messina, Steve Ivy
- XFN
- Leading ActivityStreams
Projects: Elgg
- http://elgg.org/
- General-purpose social network
- LAMP
- Commercial version http://elgg.com/
- Some federation (PuSH), more coming
- Lorea fork/branch/whatever
- GPLv2
Projects: GNU Social
- http://groups.fsf.org/wiki/Group:GNU_Social
- General-purpose social network
- LAMP
- AGPLv3
- No working code yet
- Will be based on StatusNet!
Projects: BuddyPress
- http://buddypress.org/
- General-purpose social network
- Automattic project, very nicely done
- LAMP
- GPLv2
- Very little federation
Projects: StatusNet
- http://status.net/
- Microblogging server
- LAMP
- AGPLv3
- OStatus for federation
- Twitter-like API
- Plugin architecture
- Identi.ca + 25K other sites on the Web
Projects: OneSocialWeb
- http://onesocialweb.org/
- Vodaphone project
- Use XMPP as core protocol
- Java plugin for OpenFire server
Projects: Appleseed
- http://opensource.appleseedproject.org/
- Indie
- LAMP
- JSON
Others
- AroundMe
- Appleseed
- Crabgrass
- NoseRub
Federated social web summit
- July 18 2010
- 45 people
- 30 projects
Outcomes
- http://federatedsocialweb.net/
- http://groups.google.com/group/federated-social-web
- SWAT0
SWAT0
- Social Web Acid Test, Level 0
- Simple use-case for federated social web
- Requires at least 2 implementations
- http://federatedsocialweb.net/wiki/SWAT0
What next?
- Projects working together
- Integration testing
- Real-life usage
- Innovation
- Growth
How to help
- Hack!
- Translate!
- Theme!
- Implement!
- Use!
- Spread!
Thank you!
- Follow me on the Internet!
- evan@status.net