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