SlideShare ist ein Scribd-Unternehmen logo
1 von 44
Downloaden Sie, um offline zu lesen
Empowering the Social
                     Web with Apache
                         Shindig
                                Paul Lindner
                              Wed Nov 4th, 2009




Saturday, November 14, 2009
The Social Web
Saturday, November 14, 2009
The Social Web
            People and Connections
          Activity Streams / News Feeds
            Messaging / Notifications

                              APIs?




Saturday, November 14, 2009
Saturday, November 14, 2009
Saturday, November 14, 2009
Saturday, November 14, 2009
The Solution
                    Gadgets from iGoogle

          Add People, Activities, and Viral
                 Javascript APIs

                              Open to all

                               Iterate..

Saturday, November 14, 2009
And Then...
               OpenSocial Foundation
                    Hackathons
              Atom/XML/Json REST APIs
                OpenSocial Templates
                   Data Pipelining
                 Portable Contacts
                       OAuth
                  Activity Streams?

Saturday, November 14, 2009
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
                          Implementation

                    •     OAuth Client/Server

                    •     Java/PHP Implementation

                    •     Almost 2 years old!

                    •     Production-Quality code.



Saturday, November 14, 2009
Mostly Shindig
Saturday, November 14, 2009
Shindig is not...

                    • A Full Featured Social Network
                    • A system to manage applications and
                              developers
                    • All that developer friendly (yet!)


Saturday, November 14, 2009
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
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
OpenSocial Versions
Saturday, November 14, 2009
Shindig Offspring
                    •     Partuza                  •   Drupal Integration

                    •     SocialSite               •   FriendConnect

                    •     Sakai                    •   Others?

                    •     Lockheed Martin Eureka
                          Framework

                    •     Atlassian (Jira,
                          Confluence, etc)




Saturday, November 14, 2009
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
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
DEMO
Saturday, November 14, 2009
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
Shindig Architecture

                    •     Gadget Server/Renderer

                    •     OpenSocial data server
                          (REST, Atom, JSON-
                          RPC)

                    •     People/Activities/
                          Messages/Persistence
                          Interfaces.




Saturday, November 14, 2009
Extra Features
                    •     Proxy Server

                    •     Image Resizer

                    •     Content Rewriter/
                          Compressor

                    •     Gadget Blacklist

                    •     more!




Saturday, November 14, 2009
Saturday, November 14, 2009
Saturday, November 14, 2009
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
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
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
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
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
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
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
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
container.js

                    • Support for multiple containers
                    • Defines supported fields, url paths
                    • Should match web.xml config


Saturday, November 14, 2009
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
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
Container to Platform
                    •     Add Schemas for Data

                          •   Apps, Developers,
                              Permissions,
                              Notifications, App
                              Invites

                    •     Add UI Elements

                          •   Gallery, Canvas,
                              Invites, Notifications



Saturday, November 14, 2009
DEMO
Saturday, November 14, 2009
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
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
Q &A




Saturday, November 14, 2009

Weitere ähnliche Inhalte

Was ist angesagt?

Was ist angesagt? (6)

Kitware: Qt and Scientific Computing
Kitware: Qt and Scientific ComputingKitware: Qt and Scientific Computing
Kitware: Qt and Scientific Computing
 
Polyglot and functional (Devoxx Nov/2011)
Polyglot and functional (Devoxx Nov/2011)Polyglot and functional (Devoxx Nov/2011)
Polyglot and functional (Devoxx Nov/2011)
 
Polyglot and Functional Programming (OSCON 2012)
Polyglot and Functional Programming (OSCON 2012)Polyglot and Functional Programming (OSCON 2012)
Polyglot and Functional Programming (OSCON 2012)
 
Band of brothers, building scalable social web apps on windows azure with asp...
Band of brothers, building scalable social web apps on windows azure with asp...Band of brothers, building scalable social web apps on windows azure with asp...
Band of brothers, building scalable social web apps on windows azure with asp...
 
Gaelyk - Groovy Grails eXchange 2010 - Guillaume Laforge
Gaelyk - Groovy Grails eXchange 2010 - Guillaume LaforgeGaelyk - Groovy Grails eXchange 2010 - Guillaume Laforge
Gaelyk - Groovy Grails eXchange 2010 - Guillaume Laforge
 
Introduction to My SQL
Introduction to My SQLIntroduction to My SQL
Introduction to My SQL
 

Andere mochten auch

After the Avalanche-Ascent to Everest
After the  Avalanche-Ascent to EverestAfter the  Avalanche-Ascent to Everest
After the Avalanche-Ascent to Everest
maditabalnco
 
Feeling every sunset
Feeling every sunsetFeeling every sunset
Feeling every sunset
maatias066318
 

Andere mochten auch (20)

DIY Gorritos de Pokémon iniciales.
DIY Gorritos de Pokémon iniciales.DIY Gorritos de Pokémon iniciales.
DIY Gorritos de Pokémon iniciales.
 
Профессиональный конкурс НСТО-2016
Профессиональный конкурс НСТО-2016Профессиональный конкурс НСТО-2016
Профессиональный конкурс НСТО-2016
 
1 evaluacion (la silla desplazable)
1 evaluacion   (la silla desplazable) 1 evaluacion   (la silla desplazable)
1 evaluacion (la silla desplazable)
 
[Info2016]01introduction
[Info2016]01introduction[Info2016]01introduction
[Info2016]01introduction
 
Marie de Médicis la dupée
Marie de Médicis la dupéeMarie de Médicis la dupée
Marie de Médicis la dupée
 
Las damas, los niños y el contenido primero - El diseño de experiencia de us...
Las damas, los niños y el contenido primero - El diseño de experiencia  de us...Las damas, los niños y el contenido primero - El diseño de experiencia  de us...
Las damas, los niños y el contenido primero - El diseño de experiencia de us...
 
Cómo utilizar Brandwatch para identificar influencers/Introducción a Audience...
Cómo utilizar Brandwatch para identificar influencers/Introducción a Audience...Cómo utilizar Brandwatch para identificar influencers/Introducción a Audience...
Cómo utilizar Brandwatch para identificar influencers/Introducción a Audience...
 
After the Avalanche-Ascent to Everest
After the  Avalanche-Ascent to EverestAfter the  Avalanche-Ascent to Everest
After the Avalanche-Ascent to Everest
 
Mio MiVue 698
Mio MiVue 698Mio MiVue 698
Mio MiVue 698
 
Feeling every sunset
Feeling every sunsetFeeling every sunset
Feeling every sunset
 
portfolio
portfolioportfolio
portfolio
 
Automotive Technology Vendors Per Primary Product Category (US/CA)
Automotive Technology Vendors Per Primary Product Category (US/CA)Automotive Technology Vendors Per Primary Product Category (US/CA)
Automotive Technology Vendors Per Primary Product Category (US/CA)
 
Tirol 1
Tirol 1Tirol 1
Tirol 1
 
Integrating Design, UX and Hypotheses into Agile Development
Integrating Design, UX and Hypotheses into Agile DevelopmentIntegrating Design, UX and Hypotheses into Agile Development
Integrating Design, UX and Hypotheses into Agile Development
 
Empire Fox Facts
Empire Fox FactsEmpire Fox Facts
Empire Fox Facts
 
Abner
AbnerAbner
Abner
 
Product / solution validation
Product / solution validationProduct / solution validation
Product / solution validation
 
Campanha Frotas
Campanha FrotasCampanha Frotas
Campanha Frotas
 
SANUC - 아이디어 조명
SANUC - 아이디어 조명SANUC - 아이디어 조명
SANUC - 아이디어 조명
 
Colegio nacional nicolas esguerra (2)
Colegio nacional nicolas esguerra (2)Colegio nacional nicolas esguerra (2)
Colegio nacional nicolas esguerra (2)
 

Ähnlich wie Empowering the Social Web with Apache Shindig

Introduction to Node.js
Introduction to Node.jsIntroduction to Node.js
Introduction to Node.js
Troy Miles
 
Building businesspost.ie using Node.js
Building businesspost.ie using Node.jsBuilding businesspost.ie using Node.js
Building businesspost.ie using Node.js
Richard Rodger
 
Aloha on-rails-2009
Aloha on-rails-2009Aloha on-rails-2009
Aloha on-rails-2009
John Woodell
 
Node.js, toy or power tool?
Node.js, toy or power tool?Node.js, toy or power tool?
Node.js, toy or power tool?
Ovidiu Dimulescu
 
Webdevcon Keynote hh-2012-09-18
Webdevcon Keynote hh-2012-09-18Webdevcon Keynote hh-2012-09-18
Webdevcon Keynote hh-2012-09-18
Pierre Joye
 
Openstack India May Meetup
Openstack India May MeetupOpenstack India May Meetup
Openstack India May Meetup
Deepak Garg
 

Ähnlich wie Empowering the Social Web with Apache Shindig (20)

JRubyConf 2009
JRubyConf 2009JRubyConf 2009
JRubyConf 2009
 
Red Dirt Ruby Conference
Red Dirt Ruby ConferenceRed Dirt Ruby Conference
Red Dirt Ruby Conference
 
Cloud Camp Chicago Dec 2012 Slides
Cloud Camp Chicago Dec 2012 SlidesCloud Camp Chicago Dec 2012 Slides
Cloud Camp Chicago Dec 2012 Slides
 
Cloud Camp Chicago Dec 2012 - All presentations
Cloud Camp Chicago Dec 2012 - All presentationsCloud Camp Chicago Dec 2012 - All presentations
Cloud Camp Chicago Dec 2012 - All presentations
 
Introduction to Node.js
Introduction to Node.jsIntroduction to Node.js
Introduction to Node.js
 
Openstack In Real Life
Openstack In Real LifeOpenstack In Real Life
Openstack In Real Life
 
Rubypalooza 2009
Rubypalooza 2009Rubypalooza 2009
Rubypalooza 2009
 
Building businesspost.ie using Node.js
Building businesspost.ie using Node.jsBuilding businesspost.ie using Node.js
Building businesspost.ie using Node.js
 
Devoxx Java Social and Agorava
Devoxx Java Social and AgoravaDevoxx Java Social and Agorava
Devoxx Java Social and Agorava
 
Aloha on-rails-2009
Aloha on-rails-2009Aloha on-rails-2009
Aloha on-rails-2009
 
The State of the Social Desktop 2009
The State of the Social Desktop 2009The State of the Social Desktop 2009
The State of the Social Desktop 2009
 
App Engine Meetup
App Engine MeetupApp Engine Meetup
App Engine Meetup
 
Kuby, ActiveDeployment for Rails Apps
Kuby, ActiveDeployment for Rails AppsKuby, ActiveDeployment for Rails Apps
Kuby, ActiveDeployment for Rails Apps
 
Cloud4all Architecture Overview
Cloud4all Architecture OverviewCloud4all Architecture Overview
Cloud4all Architecture Overview
 
Accelerate and unify network deployment with Puppet on Juniper
Accelerate and unify network deployment with Puppet on JuniperAccelerate and unify network deployment with Puppet on Juniper
Accelerate and unify network deployment with Puppet on Juniper
 
Node.js, toy or power tool?
Node.js, toy or power tool?Node.js, toy or power tool?
Node.js, toy or power tool?
 
Webdevcon Keynote hh-2012-09-18
Webdevcon Keynote hh-2012-09-18Webdevcon Keynote hh-2012-09-18
Webdevcon Keynote hh-2012-09-18
 
Openstack India May Meetup
Openstack India May MeetupOpenstack India May Meetup
Openstack India May Meetup
 
Introducing Immutant
Introducing Immutant Introducing Immutant
Introducing Immutant
 
Google App Engine Java, Groovy and Gaelyk
Google App Engine Java, Groovy and GaelykGoogle App Engine Java, Groovy and Gaelyk
Google App Engine Java, Groovy and Gaelyk
 

Kürzlich hochgeladen

Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 

Kürzlich hochgeladen (20)

Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 

Empowering the Social Web with Apache Shindig

  • 1. Empowering the Social Web with Apache Shindig Paul Lindner Wed Nov 4th, 2009 Saturday, November 14, 2009
  • 2. The Social Web Saturday, November 14, 2009
  • 3. The Social Web People and Connections Activity Streams / News Feeds Messaging / Notifications APIs? Saturday, November 14, 2009
  • 7. The Solution Gadgets from iGoogle Add People, Activities, and Viral Javascript APIs Open to all Iterate.. Saturday, November 14, 2009
  • 8. And Then... OpenSocial Foundation Hackathons Atom/XML/Json REST APIs OpenSocial Templates Data Pipelining Portable Contacts OAuth Activity Streams? Saturday, November 14, 2009
  • 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
  • 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
  • 20. Shindig Offspring • Partuza • Drupal Integration • SocialSite • FriendConnect • Sakai • Others? • Lockheed Martin Eureka Framework • Atlassian (Jira, Confluence, etc) 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
  • 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. Shindig Architecture • Gadget Server/Renderer • OpenSocial data server (REST, Atom, JSON- RPC) • People/Activities/ Messages/Persistence Interfaces. Saturday, November 14, 2009
  • 26. Extra Features • Proxy Server • Image Resizer • Content Rewriter/ Compressor • Gadget Blacklist • more! 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
  • 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. 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. 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. 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. 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
  • 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. 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