SlideShare a Scribd company logo
1 of 50
SHINDIG IN 2 HOURS [email_address] Social team
 
[object Object],[object Object],[object Object],[object Object],[object Object],In 2 hours ...
Shindig Introduction
 
Apache Shindig (Introduction)
Apache Shindig (Introduction)
Apache Shindig (Introduction)
Apache Shindig (Introduction)
Apache Shindig (Introduction)
Apache Shindig (Introduction)
Apache Shindig (Introduction)
Apache Shindig What is shindig? -  OpenSocial container ->start hosting  OpenSocial apps quickly by: + Providing the code to render gadgets + Open Social API, RESTful, RPC  protocol services -  Java  and  PHP Goal Lauch a new container in  under an hour's worth of work .
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Apache Shindig (History) Nov 2007
Apache Shindig (In Production)
Apache Shindig. Why Use? •  Strong Open Source community •  High quality production-ready code •  Used by: hi5, orkut, iGoogle, Netlog, Hyves … •  Synchronized with specification •  Language neutral (Java, PHP, ...)
Apache Shindig (Getting Started-Java) http://shindig.apache.org/getting-started.html - Check out code svn co http://svn.apache.org/repos/asf/incubator/shindig/trunk - Build & Run (Jetty Server) mvn clean install mvn -Prun - Run (tomcat server) http://localhost:8080/container/sample1.html http://localhost:8080/social/rest/people/canonical/@self?format=xml
Shindig Architecture
•  Gadget Server Parses gadget XML, renders as HTML/JS/CSS •  OpenSocial Data Server -  Plugs into social graph data -  RESTful, RPC protocol services •  Downloaded JavaScript libraries Core gadgets, OpenSocial client JavaScript environment Shindig Architecture (Components)
Apache Shindig (APIs – Entry Points) - OS API renderGadget() req.send() req..requestCreateActivity() - REST API ..social/rest/people/... ..social/rest/activities/...
•  Shindig Client and Server Components •  Gadget Server •  Social Data Server Shindig Architecture
•  Shindig Client and Server Components •  Gadget Server •  Social Data Server Shindig Architecture
Shindig Architecture (Components)
Shindig Architecture (Server Comps) - _Servlets are entry points to take calls from client side.
Shindig Architecture (How It Works?) Req TYPE FETCH_PEOPLE  : Get Person data FETCH_PERSON_APP_DATA  : Get the data attributes for a person UPDATE_PERSON_APP_DATA  : update attributes of a person FETCH_ACTIVITIES  : Get List of activities for a Particular Person CREATE_ACTIVITY  : create Activity associated with a Person
•  Shindig Client and Server Components •  Gadget Server •  Social Data Server Shindig Architecture
Gadget Server -  Gadget Container JavaScript : JavaScript for general gadget functionality. -  Gadget Rendering Server : to  render  the gadget XML into HTML. Gadget Gadget Server Social Data Server HTML
Gadget Rendering in Flow
•  Shindig Client and Server Components •  Gadget Server •  Social Data Server Shindig Architecture
Social Data Server People Relationships Activities
Social Data Server -  OpenSocial Container JavaScript : JavaScript environment that  provides  OpenSocial specific functionality  (Profiles, Relationships, Activities). -  OpenSocial Data Server : with  extension points  so others can  connect it to  their own backends . Gadget Gadget Server Social Data Server JSON
Social Data Server http://rollerweblogger.org/roller/entry/shindig_java_internals_diagram_updated
Social Data Server
Shindig Integration
[object Object],[object Object],[object Object],Integration. Why?
Integration. How? - Shindig  Implementation : Java, PHP … - Gadget Server, Social Data Server
Integration Render gadget OpenSocial Container (Social Data Server)
•  Customize  sample comtainer (Gadget Container) •  Implement Interfaces – People, Friends, Activities (Social  Server) •  Write Guice Modules (binding) •  Add mapping information to web.xml (servlets, filters, guices-  modules … ) •  Add more SecurityTokenDecoder, etc. (Enabling OAuth  support) Integration (SUMMARIZE)
•  Customize  sample comtainer (Gadget Container) •  Implement Interfaces – People, Friends, Activities (Social  Server) •  Write Guice Modules (binding) •  Add mapping information to web.xml (servlets, filters, guices-  modules … ) •  Add more SecurityTokenDecoder, etc. (Enabling OAuth  support) Integration
•  Customize  sample comtainer (Gadget Container) •  Implement Interfaces – People, Friends, Activities (Social  Server) •  Write Guice Modules (binding) •  Add mapping information to web.xml (servlets, filters, guices-  modules … ) •  Add more SecurityTokenDecoder, etc. (Enabling OAuth  support) Integration
-  People Service public  class  ExoPeopleService   extends  ExoService  implements  PersonService, AppDataService { public  Future<RestfulCollection<Person>> getPeople(...) {} public  Future<Person> getPerson(...) {} } -  Activitiy Service public  class ExoActivityService  extends  ExoService  implements  ActivityService { public  Future<RestfulCollection<Activity>>  getActivities (...) {} public  Future<Void>  createActivity (...) {} } Copyright 2010 eXo Platform SAS Integration (Implement Interfaces)
•  Customize  sample comtainer (Gadget Container) •  Implement Interfaces – People, Friends, Activities (Social  Server) •  Write Guice Modules (binding) •  Add mapping information to web.xml (servlets, filters, guices-  modules … ) •  Add more SecurityTokenDecoder, etc. (Enabling OAuth  support) Integration
public  class ExoSocialApiGuiceModule  extends  AbstractModule { @Override protected void  configure() { bind(PersonService. class ).to(ExoPeopleService. class ); bind(AppDataService. class ).to(ExoPeopleService. class ); bind(ActivityService. class ).to(ExoActivityService. class ); bind(Person. class ).to(ExoPersonImpl. class ); } } Copyright 2010 eXo Platform SAS Integreation (Guice Module)
•  Customize  sample comtainer (Gadget Container) •  Implement Interfaces – People, Friends, Activities (Social  Server) •  Write Guice Modules (binding) •  Add mapping information to web.xml  (servlets, filters, guices-  modules … ) •  Add more SecurityTokenDecoder, etc. (Enabling OAuth  support) Integration
webapp/opensocial/src/main/webapp/WEB-INF/web.xml <context-param> <param-name>guice-modules</param-name> <param-value> org.exoplatform.social.opensocial.ExoSocialApiGuiceModule </param-value> </context-param> Copyright 2010 eXo Platform SAS Integration (Config in Web.xml)
Re-Cap
- OpenSource implementation of OpenSocial & Gadgets standard (Java, PHP) - Client and Server side (Container, REST, OpenSocial APIs …) - Java version: Servlet stack - Multiple entry points for various kinds of calls (servlets) - Others: Image Resizer, Content Rewriter/Compressor ... Copyright 2010 eXo Platform SAS Re-Cap
Copyright 2010 eXo Platform SAS Why not?
Home Page:  http://shindig.apache.org/ Downloads:  http://shindig.apache.org/download/index.html Mailing Lists:  http://shindig.apache.org/mail-lists.html Source Code:  http://svn.apache.org/repos/asf/shindig/ Issue Tracking:  https://issues.apache.org/jira/browse/SHINDIG Wiki:  http://cwiki.apache.org/confluence/display/SHINDIG/ Copyright 2010 eXo Platform SAS Resources
Thank you!

More Related Content

What's hot

Building an Angular 2 App
Building an Angular 2 AppBuilding an Angular 2 App
Building an Angular 2 AppFelix Gessert
 
FIWARE Developers Week_BootcampWeBUI_presentation2
FIWARE Developers Week_BootcampWeBUI_presentation2FIWARE Developers Week_BootcampWeBUI_presentation2
FIWARE Developers Week_BootcampWeBUI_presentation2FIWARE
 
Introduction to Shield and kibana
Introduction to Shield and kibanaIntroduction to Shield and kibana
Introduction to Shield and kibanaKnoldus Inc.
 
GraphTour - Utilizing Powerful Extensions for Analytics & Operations
GraphTour - Utilizing Powerful Extensions for Analytics & OperationsGraphTour - Utilizing Powerful Extensions for Analytics & Operations
GraphTour - Utilizing Powerful Extensions for Analytics & OperationsNeo4j
 
OSGi and Spring Data for simple (Web) Application Development - Christian Bar...
OSGi and Spring Data for simple (Web) Application Development - Christian Bar...OSGi and Spring Data for simple (Web) Application Development - Christian Bar...
OSGi and Spring Data for simple (Web) Application Development - Christian Bar...mfrancis
 
Building Your Own IoT Platform using FIWARE GEis
Building Your Own IoT Platform using FIWARE GEisBuilding Your Own IoT Platform using FIWARE GEis
Building Your Own IoT Platform using FIWARE GEisFIWARE
 
OpenStack Horizon: Controlling the Cloud using Django
OpenStack Horizon: Controlling the Cloud using DjangoOpenStack Horizon: Controlling the Cloud using Django
OpenStack Horizon: Controlling the Cloud using DjangoDavid Lapsley
 
Swift Architecture and Practice, by Alex Yang
Swift Architecture and Practice, by Alex YangSwift Architecture and Practice, by Alex Yang
Swift Architecture and Practice, by Alex YangHui Cheng
 
Entity framework 6
Entity framework 6Entity framework 6
Entity framework 6Ken Tucker
 
Getting Started with Datatsax .Net Driver
Getting Started with Datatsax .Net DriverGetting Started with Datatsax .Net Driver
Getting Started with Datatsax .Net DriverDataStax Academy
 
Eddystone Beacons - Physical Web - Giving a URL to All Objects
Eddystone Beacons - Physical Web - Giving a URL to All ObjectsEddystone Beacons - Physical Web - Giving a URL to All Objects
Eddystone Beacons - Physical Web - Giving a URL to All ObjectsJeff Prestes
 
Google Web Toolkitのすすめ
Google Web ToolkitのすすめGoogle Web Toolkitのすすめ
Google Web ToolkitのすすめKaisei Hamamoto
 
OpenStack Neutron Reverse Engineered
OpenStack Neutron Reverse EngineeredOpenStack Neutron Reverse Engineered
OpenStack Neutron Reverse Engineeredopenstackindia
 
Introduction of Blockchain @ Airtel Payment Bank
Introduction of Blockchain @ Airtel Payment BankIntroduction of Blockchain @ Airtel Payment Bank
Introduction of Blockchain @ Airtel Payment BankRajesh Kumar
 
2 years without Java. Kotlin only
2 years without Java. Kotlin only2 years without Java. Kotlin only
2 years without Java. Kotlin onlyKirill Rozov
 

What's hot (20)

Keystone Federation
Keystone Federation Keystone Federation
Keystone Federation
 
Building an Angular 2 App
Building an Angular 2 AppBuilding an Angular 2 App
Building an Angular 2 App
 
FIWARE Developers Week_BootcampWeBUI_presentation2
FIWARE Developers Week_BootcampWeBUI_presentation2FIWARE Developers Week_BootcampWeBUI_presentation2
FIWARE Developers Week_BootcampWeBUI_presentation2
 
Introduction to Shield and kibana
Introduction to Shield and kibanaIntroduction to Shield and kibana
Introduction to Shield and kibana
 
GraphTour - Utilizing Powerful Extensions for Analytics & Operations
GraphTour - Utilizing Powerful Extensions for Analytics & OperationsGraphTour - Utilizing Powerful Extensions for Analytics & Operations
GraphTour - Utilizing Powerful Extensions for Analytics & Operations
 
OSGi and Spring Data for simple (Web) Application Development - Christian Bar...
OSGi and Spring Data for simple (Web) Application Development - Christian Bar...OSGi and Spring Data for simple (Web) Application Development - Christian Bar...
OSGi and Spring Data for simple (Web) Application Development - Christian Bar...
 
Building Your Own IoT Platform using FIWARE GEis
Building Your Own IoT Platform using FIWARE GEisBuilding Your Own IoT Platform using FIWARE GEis
Building Your Own IoT Platform using FIWARE GEis
 
OpenStack Horizon: Controlling the Cloud using Django
OpenStack Horizon: Controlling the Cloud using DjangoOpenStack Horizon: Controlling the Cloud using Django
OpenStack Horizon: Controlling the Cloud using Django
 
Log analytics with ELK stack
Log analytics with ELK stackLog analytics with ELK stack
Log analytics with ELK stack
 
Swift Architecture and Practice, by Alex Yang
Swift Architecture and Practice, by Alex YangSwift Architecture and Practice, by Alex Yang
Swift Architecture and Practice, by Alex Yang
 
Entity framework 6
Entity framework 6Entity framework 6
Entity framework 6
 
Getting Started with Datatsax .Net Driver
Getting Started with Datatsax .Net DriverGetting Started with Datatsax .Net Driver
Getting Started with Datatsax .Net Driver
 
Eddystone Beacons - Physical Web - Giving a URL to All Objects
Eddystone Beacons - Physical Web - Giving a URL to All ObjectsEddystone Beacons - Physical Web - Giving a URL to All Objects
Eddystone Beacons - Physical Web - Giving a URL to All Objects
 
Google Web Toolkitのすすめ
Google Web ToolkitのすすめGoogle Web Toolkitのすすめ
Google Web Toolkitのすすめ
 
Geo servershell
Geo servershellGeo servershell
Geo servershell
 
OpenStack Neutron Reverse Engineered
OpenStack Neutron Reverse EngineeredOpenStack Neutron Reverse Engineered
OpenStack Neutron Reverse Engineered
 
Introduction of Blockchain @ Airtel Payment Bank
Introduction of Blockchain @ Airtel Payment BankIntroduction of Blockchain @ Airtel Payment Bank
Introduction of Blockchain @ Airtel Payment Bank
 
Vanilla JS*
Vanilla JS*Vanilla JS*
Vanilla JS*
 
2 years without Java. Kotlin only
2 years without Java. Kotlin only2 years without Java. Kotlin only
2 years without Java. Kotlin only
 
Wayin devops-2013
Wayin devops-2013Wayin devops-2013
Wayin devops-2013
 

Similar to Apache Shindig Introduction

Faites évoluer votre accès aux données avec MongoDB Stitch
Faites évoluer votre accès aux données avec MongoDB StitchFaites évoluer votre accès aux données avec MongoDB Stitch
Faites évoluer votre accès aux données avec MongoDB StitchMongoDB
 
Shindig Apachecon Asia 09
Shindig Apachecon Asia 09Shindig Apachecon Asia 09
Shindig Apachecon Asia 09Nuwan Bandara
 
OGCE Project Overview
OGCE Project OverviewOGCE Project Overview
OGCE Project Overviewmarpierc
 
Internet Explorer 8
Internet Explorer 8Internet Explorer 8
Internet Explorer 8David Chou
 
Web_of_Things_2013
Web_of_Things_2013Web_of_Things_2013
Web_of_Things_2013Max Kleiner
 
Miha Lesjak Mobilizing The Web with Web Runtime
Miha Lesjak Mobilizing The Web with Web RuntimeMiha Lesjak Mobilizing The Web with Web Runtime
Miha Lesjak Mobilizing The Web with Web RuntimeNokiaAppForum
 
Made for Mobile - Let Office 365 Power Your Mobile Apps
Made for Mobile - Let Office 365 Power Your Mobile AppsMade for Mobile - Let Office 365 Power Your Mobile Apps
Made for Mobile - Let Office 365 Power Your Mobile AppsSPC Adriatics
 
Xitrum Web Framework Live Coding Demos / Xitrum Web Framework ライブコーディング
Xitrum Web Framework Live Coding Demos / Xitrum Web Framework ライブコーディングXitrum Web Framework Live Coding Demos / Xitrum Web Framework ライブコーディング
Xitrum Web Framework Live Coding Demos / Xitrum Web Framework ライブコーディングscalaconfjp
 
Xitrum @ Scala Matsuri Tokyo 2014
Xitrum @ Scala Matsuri Tokyo 2014Xitrum @ Scala Matsuri Tokyo 2014
Xitrum @ Scala Matsuri Tokyo 2014Ngoc Dao
 
Mastering the IoT With JavaScript and C++ - Günter Obiltschnig
Mastering the IoT With JavaScript and C++ - Günter ObiltschnigMastering the IoT With JavaScript and C++ - Günter Obiltschnig
Mastering the IoT With JavaScript and C++ - Günter ObiltschnigWithTheBest
 
Ajaxworld Opensocial Presentation
Ajaxworld Opensocial PresentationAjaxworld Opensocial Presentation
Ajaxworld Opensocial PresentationChris Schalk
 
The Big Picture and How to Get Started
The Big Picture and How to Get StartedThe Big Picture and How to Get Started
The Big Picture and How to Get Startedguest1af57e
 
Django deployment with PaaS
Django deployment with PaaSDjango deployment with PaaS
Django deployment with PaaSAppsembler
 
MongoDB World 2018: Ch-Ch-Ch-Ch-Changes: Taking Your Stitch Application to th...
MongoDB World 2018: Ch-Ch-Ch-Ch-Changes: Taking Your Stitch Application to th...MongoDB World 2018: Ch-Ch-Ch-Ch-Changes: Taking Your Stitch Application to th...
MongoDB World 2018: Ch-Ch-Ch-Ch-Changes: Taking Your Stitch Application to th...MongoDB
 
Developing your first application using FIWARE
Developing your first application using FIWAREDeveloping your first application using FIWARE
Developing your first application using FIWAREFIWARE
 
Programming IoT Gateways in JavaScript with macchina.io
Programming IoT Gateways in JavaScript with macchina.ioProgramming IoT Gateways in JavaScript with macchina.io
Programming IoT Gateways in JavaScript with macchina.ioGünter Obiltschnig
 
FIWARE IoT Proposal & Community
FIWARE IoT Proposal & CommunityFIWARE IoT Proposal & Community
FIWARE IoT Proposal & CommunityFIWARE
 

Similar to Apache Shindig Introduction (20)

Faites évoluer votre accès aux données avec MongoDB Stitch
Faites évoluer votre accès aux données avec MongoDB StitchFaites évoluer votre accès aux données avec MongoDB Stitch
Faites évoluer votre accès aux données avec MongoDB Stitch
 
Shindig Apachecon Asia 09
Shindig Apachecon Asia 09Shindig Apachecon Asia 09
Shindig Apachecon Asia 09
 
OGCE Project Overview
OGCE Project OverviewOGCE Project Overview
OGCE Project Overview
 
Internet Explorer 8
Internet Explorer 8Internet Explorer 8
Internet Explorer 8
 
Web_of_Things_2013
Web_of_Things_2013Web_of_Things_2013
Web_of_Things_2013
 
Miha Lesjak Mobilizing The Web with Web Runtime
Miha Lesjak Mobilizing The Web with Web RuntimeMiha Lesjak Mobilizing The Web with Web Runtime
Miha Lesjak Mobilizing The Web with Web Runtime
 
Made for Mobile - Let Office 365 Power Your Mobile Apps
Made for Mobile - Let Office 365 Power Your Mobile AppsMade for Mobile - Let Office 365 Power Your Mobile Apps
Made for Mobile - Let Office 365 Power Your Mobile Apps
 
Xitrum Web Framework Live Coding Demos / Xitrum Web Framework ライブコーディング
Xitrum Web Framework Live Coding Demos / Xitrum Web Framework ライブコーディングXitrum Web Framework Live Coding Demos / Xitrum Web Framework ライブコーディング
Xitrum Web Framework Live Coding Demos / Xitrum Web Framework ライブコーディング
 
Xitrum @ Scala Matsuri Tokyo 2014
Xitrum @ Scala Matsuri Tokyo 2014Xitrum @ Scala Matsuri Tokyo 2014
Xitrum @ Scala Matsuri Tokyo 2014
 
Mastering the IoT With JavaScript and C++ - Günter Obiltschnig
Mastering the IoT With JavaScript and C++ - Günter ObiltschnigMastering the IoT With JavaScript and C++ - Günter Obiltschnig
Mastering the IoT With JavaScript and C++ - Günter Obiltschnig
 
Ajaxworld Opensocial Presentation
Ajaxworld Opensocial PresentationAjaxworld Opensocial Presentation
Ajaxworld Opensocial Presentation
 
The Big Picture and How to Get Started
The Big Picture and How to Get StartedThe Big Picture and How to Get Started
The Big Picture and How to Get Started
 
Django deployment with PaaS
Django deployment with PaaSDjango deployment with PaaS
Django deployment with PaaS
 
MongoDB World 2018: Ch-Ch-Ch-Ch-Changes: Taking Your Stitch Application to th...
MongoDB World 2018: Ch-Ch-Ch-Ch-Changes: Taking Your Stitch Application to th...MongoDB World 2018: Ch-Ch-Ch-Ch-Changes: Taking Your Stitch Application to th...
MongoDB World 2018: Ch-Ch-Ch-Ch-Changes: Taking Your Stitch Application to th...
 
Html5
Html5Html5
Html5
 
tutorial2-notes2
tutorial2-notes2tutorial2-notes2
tutorial2-notes2
 
tutorial2-notes2
tutorial2-notes2tutorial2-notes2
tutorial2-notes2
 
Developing your first application using FIWARE
Developing your first application using FIWAREDeveloping your first application using FIWARE
Developing your first application using FIWARE
 
Programming IoT Gateways in JavaScript with macchina.io
Programming IoT Gateways in JavaScript with macchina.ioProgramming IoT Gateways in JavaScript with macchina.io
Programming IoT Gateways in JavaScript with macchina.io
 
FIWARE IoT Proposal & Community
FIWARE IoT Proposal & CommunityFIWARE IoT Proposal & Community
FIWARE IoT Proposal & Community
 

Recently uploaded

Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
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
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Neo4j
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024BookNet Canada
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksSoftradix Technologies
 
Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraDeakin University
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
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)

Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 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
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other Frameworks
 
Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning era
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
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...
 

Apache Shindig Introduction

  • 1. SHINDIG IN 2 HOURS [email_address] Social team
  • 2.  
  • 3.
  • 5.  
  • 13. Apache Shindig What is shindig? - OpenSocial container ->start hosting OpenSocial apps quickly by: + Providing the code to render gadgets + Open Social API, RESTful, RPC protocol services - Java and PHP Goal Lauch a new container in under an hour's worth of work .
  • 14.
  • 15. Apache Shindig (In Production)
  • 16. Apache Shindig. Why Use? • Strong Open Source community • High quality production-ready code • Used by: hi5, orkut, iGoogle, Netlog, Hyves … • Synchronized with specification • Language neutral (Java, PHP, ...)
  • 17. Apache Shindig (Getting Started-Java) http://shindig.apache.org/getting-started.html - Check out code svn co http://svn.apache.org/repos/asf/incubator/shindig/trunk - Build & Run (Jetty Server) mvn clean install mvn -Prun - Run (tomcat server) http://localhost:8080/container/sample1.html http://localhost:8080/social/rest/people/canonical/@self?format=xml
  • 19. • Gadget Server Parses gadget XML, renders as HTML/JS/CSS • OpenSocial Data Server - Plugs into social graph data - RESTful, RPC protocol services • Downloaded JavaScript libraries Core gadgets, OpenSocial client JavaScript environment Shindig Architecture (Components)
  • 20. Apache Shindig (APIs – Entry Points) - OS API renderGadget() req.send() req..requestCreateActivity() - REST API ..social/rest/people/... ..social/rest/activities/...
  • 21. • Shindig Client and Server Components • Gadget Server • Social Data Server Shindig Architecture
  • 22. • Shindig Client and Server Components • Gadget Server • Social Data Server Shindig Architecture
  • 24. Shindig Architecture (Server Comps) - _Servlets are entry points to take calls from client side.
  • 25. Shindig Architecture (How It Works?) Req TYPE FETCH_PEOPLE : Get Person data FETCH_PERSON_APP_DATA : Get the data attributes for a person UPDATE_PERSON_APP_DATA : update attributes of a person FETCH_ACTIVITIES : Get List of activities for a Particular Person CREATE_ACTIVITY : create Activity associated with a Person
  • 26. • Shindig Client and Server Components • Gadget Server • Social Data Server Shindig Architecture
  • 27. Gadget Server - Gadget Container JavaScript : JavaScript for general gadget functionality. - Gadget Rendering Server : to render the gadget XML into HTML. Gadget Gadget Server Social Data Server HTML
  • 29. • Shindig Client and Server Components • Gadget Server • Social Data Server Shindig Architecture
  • 30. Social Data Server People Relationships Activities
  • 31. Social Data Server - OpenSocial Container JavaScript : JavaScript environment that provides OpenSocial specific functionality (Profiles, Relationships, Activities). - OpenSocial Data Server : with extension points so others can connect it to their own backends . Gadget Gadget Server Social Data Server JSON
  • 32. Social Data Server http://rollerweblogger.org/roller/entry/shindig_java_internals_diagram_updated
  • 35.
  • 36. Integration. How? - Shindig Implementation : Java, PHP … - Gadget Server, Social Data Server
  • 37. Integration Render gadget OpenSocial Container (Social Data Server)
  • 38. • Customize sample comtainer (Gadget Container) • Implement Interfaces – People, Friends, Activities (Social Server) • Write Guice Modules (binding) • Add mapping information to web.xml (servlets, filters, guices- modules … ) • Add more SecurityTokenDecoder, etc. (Enabling OAuth support) Integration (SUMMARIZE)
  • 39. • Customize sample comtainer (Gadget Container) • Implement Interfaces – People, Friends, Activities (Social Server) • Write Guice Modules (binding) • Add mapping information to web.xml (servlets, filters, guices- modules … ) • Add more SecurityTokenDecoder, etc. (Enabling OAuth support) Integration
  • 40. • Customize sample comtainer (Gadget Container) • Implement Interfaces – People, Friends, Activities (Social Server) • Write Guice Modules (binding) • Add mapping information to web.xml (servlets, filters, guices- modules … ) • Add more SecurityTokenDecoder, etc. (Enabling OAuth support) Integration
  • 41. - People Service public class ExoPeopleService extends ExoService implements PersonService, AppDataService { public Future<RestfulCollection<Person>> getPeople(...) {} public Future<Person> getPerson(...) {} } - Activitiy Service public class ExoActivityService extends ExoService implements ActivityService { public Future<RestfulCollection<Activity>> getActivities (...) {} public Future<Void> createActivity (...) {} } Copyright 2010 eXo Platform SAS Integration (Implement Interfaces)
  • 42. • Customize sample comtainer (Gadget Container) • Implement Interfaces – People, Friends, Activities (Social Server) • Write Guice Modules (binding) • Add mapping information to web.xml (servlets, filters, guices- modules … ) • Add more SecurityTokenDecoder, etc. (Enabling OAuth support) Integration
  • 43. public class ExoSocialApiGuiceModule extends AbstractModule { @Override protected void configure() { bind(PersonService. class ).to(ExoPeopleService. class ); bind(AppDataService. class ).to(ExoPeopleService. class ); bind(ActivityService. class ).to(ExoActivityService. class ); bind(Person. class ).to(ExoPersonImpl. class ); } } Copyright 2010 eXo Platform SAS Integreation (Guice Module)
  • 44. • Customize sample comtainer (Gadget Container) • Implement Interfaces – People, Friends, Activities (Social Server) • Write Guice Modules (binding) • Add mapping information to web.xml (servlets, filters, guices- modules … ) • Add more SecurityTokenDecoder, etc. (Enabling OAuth support) Integration
  • 45. webapp/opensocial/src/main/webapp/WEB-INF/web.xml <context-param> <param-name>guice-modules</param-name> <param-value> org.exoplatform.social.opensocial.ExoSocialApiGuiceModule </param-value> </context-param> Copyright 2010 eXo Platform SAS Integration (Config in Web.xml)
  • 47. - OpenSource implementation of OpenSocial & Gadgets standard (Java, PHP) - Client and Server side (Container, REST, OpenSocial APIs …) - Java version: Servlet stack - Multiple entry points for various kinds of calls (servlets) - Others: Image Resizer, Content Rewriter/Compressor ... Copyright 2010 eXo Platform SAS Re-Cap
  • 48. Copyright 2010 eXo Platform SAS Why not?
  • 49. Home Page: http://shindig.apache.org/ Downloads: http://shindig.apache.org/download/index.html Mailing Lists: http://shindig.apache.org/mail-lists.html Source Code: http://svn.apache.org/repos/asf/shindig/ Issue Tracking: https://issues.apache.org/jira/browse/SHINDIG Wiki: http://cwiki.apache.org/confluence/display/SHINDIG/ Copyright 2010 eXo Platform SAS Resources