The social web is already reality! It makes applications available to more users, by providing common APIs that can be used in many different contexts. OpenSocial is an API that can be used by developers to create applications using standard JavaScript and HTML. These applications run on social websites that have implemented the OpenSocial APIs. Known as OpenSocial containers, these websites allow developers to access their social information. In return, they receive a large suite of applications for their users. Apache Shindig is a brand new incubator podling implementing the OpenSocial APIs. This talk describes Shindig in depth, and shows how it can be embedded into a larger web application to enable the web-app to host OpenSocial apps.
16. Shindig is not...
• A Full Featured Social Network
• A system to manage applications and
developers
• All that developer friendly (yet!)
Saturday, November 14, 2009
17. Project Status
• 21 Committers
• 231 Jira Contributors
• 287k LoC
• 1.0 Released, 1.1 on the way
• Almost Graduated from
Incubation
• Good Practices - Code
Review, TDD
Saturday, November 14, 2009
18. 1.1 Release
• OpenSocial 0.9 Features • Major Upgrade
• Server Side Templates • 2212 files changed,
138129 insertions(+),
• Server Side Preloads 40672 deletions(-)
• Data Pipelining
• Proxied Content
• lightweight JavaScript
apis / JSON-RPC
Saturday, November 14, 2009
21. Getting Started - Java
• Install Maven, Subversion
• Check out Code
• Build, Install and run
svn co http://svn.apache.org/repos/asf/incubator/shindig/trunk
cd trunk
mvn
mvn -Prun
Saturday, November 14, 2009
22. Getting Started - PHP
• Install Subversion, Apache httpd, PHP > 5.2,
and PHP with modules json, simplexml,
mcrypt and curl
• Check out Shindig Code
• Configure Apache
Saturday, November 14, 2009
29. Java Implementation
• Uses Composition and Dependency
Injection via Guice.
• People/Activities/AppData/Messaging
Services.
• Authentication and Security
• Hooks for just about everything else.
Saturday, November 14, 2009
30. Integration Basics
• Implement Interfaces - People, Activities,
Data, Messaging
• Review shindig.properties, container.js
• Write Guice Module
• Add to web.xml
• Add more - HttpFetcher, HttpCache,
SecurityTokenDecoder, etc.
Saturday, November 14, 2009
35. Guice Module
package com.example.MyGuiceModule;
public class MyGuiceModule extends AbstractBaseModule {
protected void configure() {
bind(PeopleService.class).to(MyPeopleService.class);
bind(ActivityService.class).to(MyActivityService.class);
bind(AppDataService.class).to(MyAppDataService.class);
bind(MessageService.class).to(MyMessageService.class);
}
}
Saturday, November 14, 2009
36. shindig.properties
• 42 Parameters at last count
• Global Cache Params
• Global RSA key for OAuth signed
requests
• Bound via Guice in the code
• @Named(“shindig.param”) String param
Saturday, November 14, 2009
37. container.js
• Support for multiple containers
• Defines supported fields, url paths
• Should match web.xml config
Saturday, November 14, 2009
39. More!
• Customize HttpFetcher • GadgetSpecFactory for
for security localized control of
GadgetSpecs
• OAuthDataStore OAuth
API Access. • OAuthStore for
proxying OAuth
• SecurityTokenDecoder requests
to link with your existing
security infrastructure.
• ExecutionListener for
logging and analytics
Saturday, November 14, 2009
40. Container to Platform
• Add Schemas for Data
• Apps, Developers,
Permissions,
Notifications, App
Invites
• Add UI Elements
• Gallery, Canvas,
Invites, Notifications
Saturday, November 14, 2009
42. Parting Thoughts
• OpenSocial & Shindig - Mature, Open, and
Successful
• Social Networks to the Enterprise
• Open Stack is emerging
• OAuth, OpenId, Portable Contacts,
Activity Streams
• Shindig is your gateway.
Saturday, November 14, 2009
43. Learn More
• http://incubator.apache.org/shindig/
• http://www.opensocial.org
• shindig-dev@incubator.apache.org
• Social and Widgets Meetup
• Thursday, 8pm
Saturday, November 14, 2009