SlideShare a Scribd company logo
1 of 44
Download to read offline
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

More Related Content

What's hot

Kitware: Qt and Scientific Computing
Kitware: Qt and Scientific ComputingKitware: Qt and Scientific Computing
Kitware: Qt and Scientific Computingaccount inactive
 
Polyglot and functional (Devoxx Nov/2011)
Polyglot and functional (Devoxx Nov/2011)Polyglot and functional (Devoxx Nov/2011)
Polyglot and functional (Devoxx Nov/2011)Martijn Verburg
 
Polyglot and Functional Programming (OSCON 2012)
Polyglot and Functional Programming (OSCON 2012)Polyglot and Functional Programming (OSCON 2012)
Polyglot and Functional Programming (OSCON 2012)Martijn Verburg
 
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...Marjan Nikolovski
 
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 LaforgeGuillaume Laforge
 
Introduction to My SQL
Introduction to My SQLIntroduction to My SQL
Introduction to My SQLCOMMON Europe
 

What's hot (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
 

Viewers also liked

DIY Gorritos de Pokémon iniciales.
DIY Gorritos de Pokémon iniciales.DIY Gorritos de Pokémon iniciales.
DIY Gorritos de Pokémon iniciales.Edgar Venomous
 
Профессиональный конкурс НСТО-2016
Профессиональный конкурс НСТО-2016Профессиональный конкурс НСТО-2016
Профессиональный конкурс НСТО-2016Владимир Миненко
 
1 evaluacion (la silla desplazable)
1 evaluacion   (la silla desplazable) 1 evaluacion   (la silla desplazable)
1 evaluacion (la silla desplazable) 18_SUSANA_03
 
[Info2016]01introduction
[Info2016]01introduction[Info2016]01introduction
[Info2016]01introductionJY LEE
 
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éeEdmond Nollomont
 
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...Emiliano Cosenza
 
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...Brandwatch
 
After the Avalanche-Ascent to Everest
After the  Avalanche-Ascent to EverestAfter the  Avalanche-Ascent to Everest
After the Avalanche-Ascent to Everestmaditabalnco
 
Feeling every sunset
Feeling every sunsetFeeling every sunset
Feeling every sunsetmaatias066318
 
portfolio
portfolioportfolio
portfolioeextra
 
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)Stefan Drechsel
 
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 DevelopmentTom Morgan
 
SANUC - 아이디어 조명
SANUC - 아이디어 조명SANUC - 아이디어 조명
SANUC - 아이디어 조명nysuh34
 
Colegio nacional nicolas esguerra (2)
Colegio nacional nicolas esguerra (2)Colegio nacional nicolas esguerra (2)
Colegio nacional nicolas esguerra (2)Juan Esteban Gallego
 

Viewers also liked (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)
 

Similar to Empowering the Social Web with Apache Shindig

Red Dirt Ruby Conference
Red Dirt Ruby ConferenceRed Dirt Ruby Conference
Red Dirt Ruby ConferenceJohn Woodell
 
Cloud Camp Chicago Dec 2012 Slides
Cloud Camp Chicago Dec 2012 SlidesCloud Camp Chicago Dec 2012 Slides
Cloud Camp Chicago Dec 2012 SlidesRyan Koop
 
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 presentationsCloudCamp Chicago
 
Introduction to Node.js
Introduction to Node.jsIntroduction to Node.js
Introduction to Node.jsTroy Miles
 
Openstack In Real Life
Openstack In Real LifeOpenstack In Real Life
Openstack In Real LifePaul Guth
 
Building businesspost.ie using Node.js
Building businesspost.ie using Node.jsBuilding businesspost.ie using Node.js
Building businesspost.ie using Node.jsRichard Rodger
 
Aloha on-rails-2009
Aloha on-rails-2009Aloha on-rails-2009
Aloha on-rails-2009John Woodell
 
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 2009Frank Karlitschek
 
Kuby, ActiveDeployment for Rails Apps
Kuby, ActiveDeployment for Rails AppsKuby, ActiveDeployment for Rails Apps
Kuby, ActiveDeployment for Rails AppsCameron Dutro
 
Cloud4all Architecture Overview
Cloud4all Architecture OverviewCloud4all Architecture Overview
Cloud4all Architecture Overviewicchp2012
 
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 JuniperPuppet
 
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-18Pierre Joye
 
Openstack India May Meetup
Openstack India May MeetupOpenstack India May Meetup
Openstack India May MeetupDeepak Garg
 
Introducing Immutant
Introducing Immutant Introducing Immutant
Introducing Immutant Jim Crossley
 
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 GaelykGuillaume Laforge
 

Similar to 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
 

Recently uploaded

The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
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 interpreternaman860154
 
[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.pdfhans926745
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?XfilesPro
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 

Recently uploaded (20)

The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
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
 
[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
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping Elbows
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 

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