QualiPSo Factory




mardi 5 octobre 2010
Context


        Forge is an on-line service that allows to
         instantiate, compose and manage
         collaborative services.
        Collaborative services are traditionally
         Version Control Systems, Bug Trackers,
         Forums, Mailing list, Wikis etc.




                                             2

mardi 5 octobre 2010
Motivations


        Many forges are available today
              Gforge, Trac, Launchpad, Codendi,
               FusionForge, Sourceforge, GoogleCode,
               CodePlex, etc.
        Very hard to bootstrap an eco-system




                                                 3

mardi 5 octobre 2010
Factory User Story


        The targeted user of the QualiPSo
         Factory is the developer of a new forge
         service
        A forge service developer must be able
         to create a new collaborative service
         very easily




                                             4

mardi 5 octobre 2010
Qualipso Factory Architecture


        The QualiPSo Factory is based on a
         component model
        Core services are provided by the forge
              Authentication, access control, binding,
               events, indexation, semantic
        Forge service developers reuse core/
         existing services to develop new
         collaborative services

                                                     5

mardi 5 octobre 2010
Qualipso Factory Architecture


        Technologies used:
              Java
              EJB3
              Web-fragment (Servlet 3.0 specification)
              GWT (Google Web Toolkit)
        Tools used
              Maven
              Eclipse
              JBoss
                                                     6

mardi 5 octobre 2010
Factory Assembly

                   Authentication
                      provider


                               Forge API

                             Browsing
                                               Binding
                              Service                        WS-binding
                                                                              Service 1
                               Core           Notificatio
  Client                      Service             n          WS-binding
              WS-binding
                                                                              Service 2
                              Security
                              Service         Indexation     WS-binding

                           Abstract Service                                   Service 3
                                  1
                           Abstract Service
                                  2
                           Abstract Service
                                  3


                                                                          7

mardi 5 octobre 2010
Factory Benefits


        The factory core is a kernel to bootstrap an eco-
         system
           The kernel is maintainable, dependable and usable.


        The QualiPSo Factory allows composition of services
           i.e. the workflow service orchestrate project

            creation.
        The QualiPSo Factory allows composition of
         resources i.e. create complex resource by composing
         simple resource.
           i.e. a “File” resource can be child of a “Forum”

            resource or a “Issue” resource.

                                                      8

mardi 5 octobre 2010
Sample Factory Instance

           /

               /p1 : project

                  /p1/b1 : bugtracker

                  /p1/svn1 : svn repo
                                                        FactoryResourceIdentifier
                 /p1/q1 : index queue        subversion:repository:http://svn.qualipso.org/svn/repo1
                                            Service Name        Resource Name           External ID
                  /p1/buc1 : s3 bucket

            /users : folder
                                                       Triple expression for rules :
                  /users/u1 : profile                    Security : (/users/u1,read,/p1/svn1)
                                                         Notification : (*,commit,/p1/svn1)
                       /users/u1/a1 : activity feed      Semantic: (/users/u1, a, /factory#user)


                                                                                    9

mardi 5 octobre 2010
Developing
                       Factory Services


mardi 5 octobre 2010
Creating a new Abstract Service

                       Steps for adding factory services

                       1. Instantiate an empty project with maven
                          archetype
                       2. Define Service Interface
      Service          3. Implements Service
     Developer         4. Test service locally
                       5. Publish your Service

                       6. Assemble your new service with existing ones
                       7. Deploy your assembly
      Factory          8. Run external service tests
    Administrator


                                                                11

mardi 5 octobre 2010
New Factory Assembly

                   Authentication
                      provider


                               Forge API

                             Browsing
                                               Binding
                              Service                      WS-binding
                                                                         Service 1
                               Core           Notificatio
  Client                      Service             n        WS-binding
              WS-binding
                                                                         Service 2
                              Security
                              Service         Indexation   WS-binding

                           Abstract Service                              Service 3
                                  1
                           Abstract Service
                                  2
                                               Storage                       Amazon
                           Abstract Service    Service                         S3
                                  3                        WS-binding



                                                                        12

mardi 5 octobre 2010
Results


      The developer of a new forge service is the
       targeted user of the QualiPSo Factory

      A forge service developer is able to create a new
       collaborative service very easily by following the
       provided methodology

      This QualiPSo Factory component model allows
       to fulfill these objectives


                                                  13

mardi 5 octobre 2010
Developing
                 Factory Services UI


mardi 5 octobre 2010
Objectives




      Extrapolate the same component model, but on
       the UI side

      Use the same tools, the same language, the same
       methodology, the same model




                                               15

mardi 5 octobre 2010
Building UI Component

                       Steps to develop a new UI Component

                       1.   Create new service UI using maven archetype
                       2.   Define components Views
                       3.   Define components Events
        Service
                       4.   Implements component Views
       Developer       5.   Implements server communication
                       6.   Test server communication and UI locally
                       7.   Assemble your new service with existing services
                       8. Deploy your assembly
                       9. Run external tests (selenium)
        Factory
      Administrator


                                                                  16

mardi 5 octobre 2010
Assemble Factory UI Components

                                                 Authentication
                                                    provider

               Web browser
                                     Web Container
                                      Web Container
                                                                   Forge API
                       Browsing       Browsing                    Browsing
                        UI part      component                     Service
        E
        v
        e         Core service       Core service
                    UI part                                         Core
        n                            component
                                                                   Service
        t
                       Security        Security                   Security
        B
                        UI part      component                    Service
        u
        s
                          S3            S3                           S3
                        UI part      component                     Service

              OPContainer                                          17

mardi 5 octobre 2010
Results


     Created a component model based on GWT allowing
     separated component development and cold assembly

             UI Components are maven-based as abstract
              services
             Same language for abstract services and UI
              components
             Complete development process can be done in the
              same IDE
             Integration in a Single Page Composite Interface

                                                       18

mardi 5 octobre 2010
Conclusion


        The kernel component model gives
         developers the ability to contribute
         easily writing server side and also client
         side (UI) extensions in a uniform way

        QualiPSo Factory aims to promote the
         emergence of a forge eco-system


                                             19

mardi 5 octobre 2010
Open Source

        LPGL
        Sources :
         https://gforge.inria.fr/projects/qualipso/
        Contribution of 2 open-sources libraries
         for GWT:
          OpenParts (loadable components)

          QGWT (Qualipso Graphical Widget

           Toolkit)


                       http://qualipso.org      20

mardi 5 octobre 2010
Demo
                       (screencast)


mardi 5 octobre 2010

Qualipso factory

  • 1.
  • 2.
    Context  Forge is an on-line service that allows to instantiate, compose and manage collaborative services.  Collaborative services are traditionally Version Control Systems, Bug Trackers, Forums, Mailing list, Wikis etc. 2 mardi 5 octobre 2010
  • 3.
    Motivations  Many forges are available today  Gforge, Trac, Launchpad, Codendi, FusionForge, Sourceforge, GoogleCode, CodePlex, etc.  Very hard to bootstrap an eco-system 3 mardi 5 octobre 2010
  • 4.
    Factory User Story  The targeted user of the QualiPSo Factory is the developer of a new forge service  A forge service developer must be able to create a new collaborative service very easily 4 mardi 5 octobre 2010
  • 5.
    Qualipso Factory Architecture  The QualiPSo Factory is based on a component model  Core services are provided by the forge  Authentication, access control, binding, events, indexation, semantic  Forge service developers reuse core/ existing services to develop new collaborative services 5 mardi 5 octobre 2010
  • 6.
    Qualipso Factory Architecture  Technologies used:  Java  EJB3  Web-fragment (Servlet 3.0 specification)  GWT (Google Web Toolkit)  Tools used  Maven  Eclipse  JBoss 6 mardi 5 octobre 2010
  • 7.
    Factory Assembly Authentication provider Forge API Browsing Binding Service WS-binding Service 1 Core Notificatio Client Service n WS-binding WS-binding Service 2 Security Service Indexation WS-binding Abstract Service Service 3 1 Abstract Service 2 Abstract Service 3 7 mardi 5 octobre 2010
  • 8.
    Factory Benefits  The factory core is a kernel to bootstrap an eco- system  The kernel is maintainable, dependable and usable.  The QualiPSo Factory allows composition of services  i.e. the workflow service orchestrate project creation.  The QualiPSo Factory allows composition of resources i.e. create complex resource by composing simple resource.  i.e. a “File” resource can be child of a “Forum” resource or a “Issue” resource. 8 mardi 5 octobre 2010
  • 9.
    Sample Factory Instance / /p1 : project /p1/b1 : bugtracker /p1/svn1 : svn repo FactoryResourceIdentifier /p1/q1 : index queue subversion:repository:http://svn.qualipso.org/svn/repo1 Service Name Resource Name External ID /p1/buc1 : s3 bucket /users : folder Triple expression for rules : /users/u1 : profile Security : (/users/u1,read,/p1/svn1) Notification : (*,commit,/p1/svn1) /users/u1/a1 : activity feed Semantic: (/users/u1, a, /factory#user) 9 mardi 5 octobre 2010
  • 10.
    Developing Factory Services mardi 5 octobre 2010
  • 11.
    Creating a newAbstract Service Steps for adding factory services 1. Instantiate an empty project with maven archetype 2. Define Service Interface Service 3. Implements Service Developer 4. Test service locally 5. Publish your Service 6. Assemble your new service with existing ones 7. Deploy your assembly Factory 8. Run external service tests Administrator 11 mardi 5 octobre 2010
  • 12.
    New Factory Assembly Authentication provider Forge API Browsing Binding Service WS-binding Service 1 Core Notificatio Client Service n WS-binding WS-binding Service 2 Security Service Indexation WS-binding Abstract Service Service 3 1 Abstract Service 2 Storage Amazon Abstract Service Service S3 3 WS-binding 12 mardi 5 octobre 2010
  • 13.
    Results  The developer of a new forge service is the targeted user of the QualiPSo Factory  A forge service developer is able to create a new collaborative service very easily by following the provided methodology  This QualiPSo Factory component model allows to fulfill these objectives 13 mardi 5 octobre 2010
  • 14.
    Developing Factory Services UI mardi 5 octobre 2010
  • 15.
    Objectives  Extrapolate the same component model, but on the UI side  Use the same tools, the same language, the same methodology, the same model 15 mardi 5 octobre 2010
  • 16.
    Building UI Component Steps to develop a new UI Component 1. Create new service UI using maven archetype 2. Define components Views 3. Define components Events Service 4. Implements component Views Developer 5. Implements server communication 6. Test server communication and UI locally 7. Assemble your new service with existing services 8. Deploy your assembly 9. Run external tests (selenium) Factory Administrator 16 mardi 5 octobre 2010
  • 17.
    Assemble Factory UIComponents Authentication provider Web browser Web Container Web Container Forge API Browsing Browsing Browsing UI part component Service E v e Core service Core service UI part Core n component Service t Security Security Security B UI part component Service u s S3 S3 S3 UI part component Service OPContainer 17 mardi 5 octobre 2010
  • 18.
    Results Created a component model based on GWT allowing separated component development and cold assembly  UI Components are maven-based as abstract services  Same language for abstract services and UI components  Complete development process can be done in the same IDE  Integration in a Single Page Composite Interface 18 mardi 5 octobre 2010
  • 19.
    Conclusion  The kernel component model gives developers the ability to contribute easily writing server side and also client side (UI) extensions in a uniform way  QualiPSo Factory aims to promote the emergence of a forge eco-system 19 mardi 5 octobre 2010
  • 20.
    Open Source  LPGL  Sources : https://gforge.inria.fr/projects/qualipso/  Contribution of 2 open-sources libraries for GWT:  OpenParts (loadable components)  QGWT (Qualipso Graphical Widget Toolkit) http://qualipso.org 20 mardi 5 octobre 2010
  • 21.
    Demo (screencast) mardi 5 octobre 2010