Empowering the Social
                     Web with Apache
                         Shindig
                              ...
The Social Web
Saturday, November 14, 2009
The Social Web
            People and Connections
          Activity Streams / News Feeds
            Messaging / Notificat...
Saturday, November 14, 2009
Saturday, November 14, 2009
Saturday, November 14, 2009
The Solution
                    Gadgets from iGoogle

          Add People, Activities, and Viral
                 Javasc...
And Then...
               OpenSocial Foundation
                    Hackathons
              Atom/XML/Json REST APIs
    ...
End Result
Saturday, November 14, 2009
Shindig



Saturday, November 14, 2009
Shindig
Saturday, November 14, 2009
Shindig
Saturday, November 14, 2009
Shindig
Saturday, November 14, 2009
Apache Shindig is...
                    •     Gadgets and OpenSocial
                          and Reference
            ...
Mostly Shindig
Saturday, November 14, 2009
Shindig is not...

                    • A Full Featured Social Network
                    • A system to manage applicati...
Project Status
                •      21 Committers

                •      231 Jira Contributors

                •      ...
1.1 Release
                    •     OpenSocial 0.9 Features      •   Major Upgrade

                          •   Server...
OpenSocial Versions
Saturday, November 14, 2009
Shindig Offspring
                    •     Partuza                  •   Drupal Integration

                    •     Soc...
Getting Started - Java

                    • Install Maven, Subversion
                    • Check out Code
             ...
Getting Started - PHP

                    • Install Subversion, Apache httpd, PHP > 5.2,
                              an...
DEMO
Saturday, November 14, 2009
Shindig Foundations
                    •     Java                     •   PHP

                          •   Maven and pl...
Shindig Architecture

                    •     Gadget Server/Renderer

                    •     OpenSocial data server
 ...
Extra Features
                    •     Proxy Server

                    •     Image Resizer

                    •     ...
Saturday, November 14, 2009
Saturday, November 14, 2009
Java Implementation
                    • Uses Composition and Dependency
                              Injection via Guic...
Integration Basics
                    • Implement Interfaces - People, Activities,
                              Data, Me...
PeopleService
           public Future<RestfulCollection<Person>>
             getPeople(Set<UserId> userIds,
            ...
ActivityService
           public Future<RestfulCollection<Activity>>
             getActivities(Set<UserId> userIds,
    ...
AppDataService
           Future<DataCollection>
             getPersonData(Set<UserId> userIds, GroupId groupId,
        ...
MessageService
       Future<RestfulCollection<MessageCollection>>
         getMessageCollections(UserId userId,
         ...
Guice Module
       package com.example.MyGuiceModule;

       public class MyGuiceModule extends AbstractBaseModule {
   ...
shindig.properties
                    • 42 Parameters at last count
                     • Global Cache Params
          ...
container.js

                    • Support for multiple containers
                    • Defines supported fields, url path...
web.xml
                    •     Copy web.xml

                          •   java/server/src/main/webapp/WEB-INF/web.xml
...
More!
                    •     Customize HttpFetcher        •   GadgetSpecFactory for
                          for secur...
Container to Platform
                    •     Add Schemas for Data

                          •   Apps, Developers,
    ...
DEMO
Saturday, November 14, 2009
Parting Thoughts
                    • OpenSocial & Shindig - Mature, Open, and
                              Successful
 ...
Learn More

                    • http://incubator.apache.org/shindig/
                    • http://www.opensocial.org
   ...
Q &A




Saturday, November 14, 2009
Upcoming SlideShare
Loading in …5
×

Empowering the Social Web with Apache Shindig

3,968 views
3,863 views

Published on

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.

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,968
On SlideShare
0
From Embeds
0
Number of Embeds
39
Actions
Shares
0
Downloads
91
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Empowering the Social Web with Apache Shindig

  1. 1. Empowering the Social Web with Apache Shindig Paul Lindner Wed Nov 4th, 2009 Saturday, November 14, 2009
  2. 2. The Social Web Saturday, November 14, 2009
  3. 3. The Social Web People and Connections Activity Streams / News Feeds Messaging / Notifications APIs? Saturday, November 14, 2009
  4. 4. Saturday, November 14, 2009
  5. 5. Saturday, November 14, 2009
  6. 6. Saturday, November 14, 2009
  7. 7. The Solution Gadgets from iGoogle Add People, Activities, and Viral Javascript APIs Open to all Iterate.. Saturday, November 14, 2009
  8. 8. And Then... OpenSocial Foundation Hackathons Atom/XML/Json REST APIs OpenSocial Templates Data Pipelining Portable Contacts OAuth Activity Streams? Saturday, November 14, 2009
  9. 9. End Result Saturday, November 14, 2009
  10. 10. Shindig Saturday, November 14, 2009
  11. 11. Shindig Saturday, November 14, 2009
  12. 12. Shindig Saturday, November 14, 2009
  13. 13. Shindig Saturday, November 14, 2009
  14. 14. Apache Shindig is... • Gadgets and OpenSocial and Reference Implementation • OAuth Client/Server • Java/PHP Implementation • Almost 2 years old! • Production-Quality code. Saturday, November 14, 2009
  15. 15. Mostly Shindig Saturday, November 14, 2009
  16. 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. 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. 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
  19. 19. OpenSocial Versions Saturday, November 14, 2009
  20. 20. Shindig Offspring • Partuza • Drupal Integration • SocialSite • FriendConnect • Sakai • Others? • Lockheed Martin Eureka Framework • Atlassian (Jira, Confluence, etc) Saturday, November 14, 2009
  21. 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. 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
  23. 23. DEMO Saturday, November 14, 2009
  24. 24. Shindig Foundations • Java • PHP • Maven and plugins • PHPUnit • Guice 2.0 • Apache Commons • Zend • OAuth • mod_rewrite • Ehcache • OAuth • Juel • httpclient • google-collections Saturday, November 14, 2009
  25. 25. Shindig Architecture • Gadget Server/Renderer • OpenSocial data server (REST, Atom, JSON- RPC) • People/Activities/ Messages/Persistence Interfaces. Saturday, November 14, 2009
  26. 26. Extra Features • Proxy Server • Image Resizer • Content Rewriter/ Compressor • Gadget Blacklist • more! Saturday, November 14, 2009
  27. 27. Saturday, November 14, 2009
  28. 28. Saturday, November 14, 2009
  29. 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. 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
  31. 31. PeopleService public Future<RestfulCollection<Person>> getPeople(Set<UserId> userIds, GroupId groupId, CollectionOptions options, Set<String> fields, SecurityToken token) throws ProtocolException { ... } public Future<Person> getPerson(UserId id, Set<String> fields, SecurityToken token) throws ProtocolException { ... } Saturday, November 14, 2009
  32. 32. ActivityService public Future<RestfulCollection<Activity>> getActivities(Set<UserId> userIds, GroupId groupId, String appId, Set<String> fields, CollectionOptions options, SecurityToken token); public Future<Void> createActivity(UserId userId, GroupId groupId, String appId, Set<String> fields, Activity activity, SecurityToken token); (and more....) Saturday, November 14, 2009
  33. 33. AppDataService Future<DataCollection> getPersonData(Set<UserId> userIds, GroupId groupId, String appId, Set<String> fields, SecurityToken token); Future<Void> deletePersonData(UserId userId, GroupId groupId, String appId, Set<String> fields, SecurityToken token); Future<Void> updatePersonData(UserId userId, GroupId groupId, String appId, Set<String> fields, Map<String, String> values, SecurityToken token); Saturday, November 14, 2009
  34. 34. MessageService Future<RestfulCollection<MessageCollection>> getMessageCollections(UserId userId, Set<String> fields, CollectionOptions options, SecurityToken token); * also create/modify/delete Future<RestfulCollection<Message>> getMessages(UserId userId, String msgCollId, Set<String> fields, List<String> msgIds, CollectionOptions options, SecurityToken token); * also create/modify/delete Saturday, November 14, 2009
  35. 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. 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. 37. container.js • Support for multiple containers • Defines supported fields, url paths • Should match web.xml config Saturday, November 14, 2009
  38. 38. web.xml • Copy web.xml • java/server/src/main/webapp/WEB-INF/web.xml • Add Guice Module <content-param> <param-name>guice-modules</param-name> <param-value>com.example.MyGuiceModule</param-value> </context-param> Saturday, November 14, 2009
  39. 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. 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
  41. 41. DEMO Saturday, November 14, 2009
  42. 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. 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
  44. 44. Q &A Saturday, November 14, 2009

×