open development
DESCRIPTION
[Italian lang] Open Development as a model for building enterprise system.TRANSCRIPT
OPEN DEVELOPMENTOpen Development // un modello ideale per costruire un prodotto enterprise Paolo Mottadelli // Adobe
Un modello ideale per costruire un prodotto enterprise.
Immagini tratte da chromasia.com
Open Development // un modello ideale per costruire un prodotto enterprise Paolo Mottadelli // Adobe
http://www.melconway.com/research/committees.htmlLEGGE DI CONWAY
“OGNI ORGANIZZAZIONE CHE PROGETTA UN SISTEMA,
PRODURRA’ INEVITABILMENTE UN DESIGN CHE RISPECCHIA
LA STRUTTURA DI COMUNICAZIONE DELL’ORGANIZZAZIONE STESSA”
Open Development // un modello ideale per costruire un prodotto enterprise Paolo Mottadelli // Adobe
QUALE STRUTTURA DI COMUNICAZIONE (COLLABORAZIONE) DEVE AVERE UN’ORGANIZZAZIONE PER CREARE UN PRODOTTO APERTO, MODULARE, ESTENDIBILE?
Open Development // un modello ideale per costruire un prodotto enterprise Paolo Mottadelli // Adobe
1. OBIETTIVO comune
2. DECISIONI Condivisione dei criteri decisionali
3. WORKSPACE Condivisione dello spazio di lavoro
4. INFORMAZIONI Scambio dinamico delle informazioni
5. PARALLELIZZAZIONE
COLLABORAZIONECARATTERISTICHE DI UN MODELLO CHE FUNZIONA
Open Development // un modello ideale per costruire un prodotto enterprise Paolo Mottadelli // Adobe
1. OBIETTIVO comune
2. DECISIONI Condivisione dei criteri decisionali
3. WORKSPACE Condivisione dello spazio di lavoro
4. INFORMAZIONI Scambio dinamico delle informazioni
5. PARALLELIZZAZIONE
Open Development // un modello ideale per costruire un prodotto enterprise Paolo Mottadelli // Adobe
3 COMPONENTIOPEN SOURCE - OPEN STANDARDS - OPEN ARCHITECTURE
Open Development // un modello ideale per costruire un prodotto enterprise Paolo Mottadelli // Adobe
1. OPEN SOURCE
Open Development // un modello ideale per costruire un prodotto enterprise Paolo Mottadelli // Adobe
1. più UTENTI ETEROGENEI2. più OCCHI PUNTATI3. più CASI D’USO4. più IDEE5.
120 PROGETTI 330 MEMBRI
2500 COMMITTERNO F-2-F (o quasi) NESSUN UFFICIO
3TB/gg di traffico web444 liste 2500+ email/gg
+ RISORSE
più 11.000.000
Open Development // un modello ideale per costruire un prodotto enterprise Paolo Mottadelli // Adobe
1. più UTENTI ETEROGENEI2. più OCCHI PUNTATI3. più CASI D’USO4. più IDEE5.
120 PROGETTI 330 MEMBRI
2500 COMMITTERNO F-2-F (o quasi) NESSUN UFFICIO
3TB/gg di traffico web444 liste 2500+ email/gg
+ RISORSEpiù 1
1.000.000
Open Development // un modello ideale per costruire un prodotto enterprise Paolo Mottadelli // Adobe
1. più UTENTI ETEROGENEI2. più OCCHI PUNTATI3. più CASI D’USO4. più IDEE5.
120 PROGETTI 330 MEMBRI
2500 COMMITTERNO F-2-F (o quasi) NESSUN UFFICIO
3TB/gg di traffico web444 liste 2500+ email/gg
+ RISORSE+ 1
1.000.000
Open Development // un modello ideale per costruire un prodotto enterprise Paolo Mottadelli // Adobe
1. più UTENTI ETEROGENEI2. più OCCHI PUNTATI3. più CASI D’USO4. più IDEE5.
120 PROGETTI 330 MEMBRI
2500 COMMITTERNO F-2-F (o quasi) NESSUN UFFICIO
3TB/gg di traffico web444 liste 2500+ email/gg
+ RISORSE+ 1
1.000.000-ESIMO COMMIT - SETTEMBRE 2010
Open Development // un modello ideale per costruire un prodotto enterprise Paolo Mottadelli // Adobe
1. VISIONE
2. AGGIORNAMENTI
3. AIUTO
4. ARCHIVI
WORKSPACE CONDIVISO
Open Development // un modello ideale per costruire un prodotto enterprise Paolo Mottadelli // Adobe
1. VISIONE
2. AGGIORNAMENTI
3. AIUTO
4. ARCHIVI
WORKSPACE CONDIVISO
Open Development // un modello ideale per costruire un prodotto enterprise Paolo Mottadelli // Adobe
CODICE
TEST
BACHI
DECISIONI
MAILING LIST
ISSUE TRACKER
BLOGINFORMAZIONI DINAMICHE
Open Development // un modello ideale per costruire un prodotto enterprise Paolo Mottadelli // Adobe
CODICE
TEST
BACHI
DECISIONI
MAILING LIST
ISSUE TRACKER
BLOG
INFORMAZIONI DINAMICHE
Open Development // un modello ideale per costruire un prodotto enterprise Paolo Mottadelli // Adobe
2. OPEN STANDARDS
Open Development // un modello ideale per costruire un prodotto enterprise Paolo Mottadelli // Adobe
1. PATTERN DI COMUNICAZIONE
2. REGOLE ARCHITETTURALI
3. INTERFACCE COMUNI
http
jcr
json
jsop
cmis
URI
OBIETTIVO COMUNE
Open Development // un modello ideale per costruire un prodotto enterprise Paolo Mottadelli // Adobe
1. PATTERN DI COMUNICAZIONE
2. REGOLE ARCHITETTURALI
3. INTERFACCE COMUNI
http
jcr
json
jsop
cmis
URI
OBIETTIVO COMUNE
Open Development // un modello ideale per costruire un prodotto enterprise Paolo Mottadelli // Adobe
1. PATTERN DI COMUNICAZIONE
2. REGOLE ARCHITETTURALI
3. INTERFACCE COMUNI
http
jcr
json
jsop
cmis
URI
JCR✴ Implementation independent
✴ bi-directional access to a Content Repository
✴ Nodes & properties in rich data types
✴ Everything is content
✴ NoSQL
OBIETTIVO COMUNE
Open Development // un modello ideale per costruire un prodotto enterprise Paolo Mottadelli // Adobe
1. PATTERN DI COMUNICAZIONE
2. REGOLE ARCHITETTURALI
3. INTERFACCE COMUNI
http
jcr
json
jsop
cmis
URI
JCR
OBIETTIVO COMUNE
Open Development // un modello ideale per costruire un prodotto enterprise Paolo Mottadelli // Adobe
1. PATTERN DI COMUNICAZIONE
2. REGOLE ARCHITETTURALI
3. INTERFACCE COMUNI
http
jcr
json
jsop
cmis
URI
JCR
OBIETTIVO COMUNE
Open Development // un modello ideale per costruire un prodotto enterprise Paolo Mottadelli // Adobe
1. PATTERN DI COMUNICAZIONE
2. REGOLE ARCHITETTURALI
3. INTERFACCE COMUNI
http
jcr
json
jsop
cmis
URI
OBIETTIVO COMUNE
Open Development // un modello ideale per costruire un prodotto enterprise Paolo Mottadelli // Adobe
1. PATTERN DI COMUNICAZIONE
2. REGOLE ARCHITETTURALI
3. INTERFACCE COMUNI
http
jcr
json
jsop
cmis
URI
OBIETTIVO COMUNE
Open Development // un modello ideale per costruire un prodotto enterprise Paolo Mottadelli // Adobe
1. PATTERN DI COMUNICAZIONE
2. REGOLE ARCHITETTURALI
3. INTERFACCE COMUNI
http
jcr
json
jsop
cmis
URI
JSOP✴ Serialization to JSON (opt YAML, XML)
✴ GET (batch/hierarchical)
✴ PUT (batch/hierarchical)
✴ PATCH (JSON diff cont type)
✴ Support for binary as multipart
OBIETTIVO COMUNE
Open Development // un modello ideale per costruire un prodotto enterprise Paolo Mottadelli // Adobe
1. PATTERN DI COMUNICAZIONE
2. REGOLE ARCHITETTURALI
3. INTERFACCE COMUNI
http
jcr
json
jsop
cmis
URI
Request:GET /myfolder.4.json HTTP/1.1Response:{ "createdBy" : "uncled", "name" : "myfolder", "id" : "50d9317a-3a95-401a-9638-333a0dbf04bb" "type" : "folder" "child1" : { "grandchild11" : { "depth3" : { "depth4 : { ... } } } }}
JSOP
OBIETTIVO COMUNE
Open Development // un modello ideale per costruire un prodotto enterprise Paolo Mottadelli // Adobe
1. PATTERN DI COMUNICAZIONE
2. REGOLE ARCHITETTURALI
3. INTERFACCE COMUNI
http
jcr
json
jsop
cmis
URI
PUT /myfolder HTTP/1.1{ "createdBy" : "uncled", "name" : "myfolder", "id" : "50d9317a-3a95-401a-9638-333a0dbf04bb" "type" : "folder" "child1" : { "grandchild11" : { "depth3" : { "depth4 : { ... } } } }}
JSOP
OBIETTIVO COMUNE
Open Development // un modello ideale per costruire un prodotto enterprise Paolo Mottadelli // Adobe
1. PATTERN DI COMUNICAZIONE
2. REGOLE ARCHITETTURALI
3. INTERFACCE COMUNI
http
jcr
json
jsop
cmis
URI
PATCH /myfolder HTTP/1.1
+newdoc : { "type" : "document", "createdBy" : "me" }-olddoc>movingdoc : /otherfolder/mydocument^lastModifiedBy : "me"
JSOP
OBIETTIVO COMUNE
Open Development // un modello ideale per costruire un prodotto enterprise Paolo Mottadelli // Adobe
1. PATTERN DI COMUNICAZIONE
2. REGOLE ARCHITETTURALI
3. INTERFACCE COMUNI
http
jcr
json
jsop
cmis
URI
OBIETTIVO COMUNE
Open Development // un modello ideale per costruire un prodotto enterprise Paolo Mottadelli // Adobe
3. OPEN ARCHITECTURE
Open Development // un modello ideale per costruire un prodotto enterprise Paolo Mottadelli // Adobe
OBIETTIVO COMUNE
1. Il RIUSO richiede STRUTTURE PULITE
2. PIU’ CASI D’USO richiedono GENERALIZZAZIONE
3. ESTENDIBILITA’ richiede MODULARIZZAZIONE
RESTOSGI
Open Development // un modello ideale per costruire un prodotto enterprise Paolo Mottadelli // Adobe
OBIETTIVO COMUNE
1. Il RIUSO richiede STRUTTURE PULITE
2. PIU’ CASI D’USO richiedono GENERALIZZAZIONE
3. ESTENDIBILITA’ richiede MODULARIZZAZIONE
RESTOSGI
OSGI
Open Development // un modello ideale per costruire un prodotto enterprise Paolo Mottadelli // Adobe
OBIETTIVO COMUNE
1. Il RIUSO richiede STRUTTURE PULITE
2. PIU’ CASI D’USO richiedono GENERALIZZAZIONE
3. ESTENDIBILITA’ richiede MODULARIZZAZIONE
RESTOSGI
OSGI✴OSGI migliora la modularità
✴Codice meglio strutturato
✴Servizi dinamici
✴Plugins
✴Isolare il codice legacy
Open Development // un modello ideale per costruire un prodotto enterprise Paolo Mottadelli // Adobe
OBIETTIVO COMUNE
1. Il RIUSO richiede STRUTTURE PULITE
2. PIU’ CASI D’USO richiedono GENERALIZZAZIONE
3. ESTENDIBILITA’ richiede MODULARIZZAZIONE
RESTOSGI
Open Development // un modello ideale per costruire un prodotto enterprise Paolo Mottadelli // Adobe
OBIETTIVO COMUNE
1. Il RIUSO richiede STRUTTURE PULITE
2. PIU’ CASI D’USO richiedono GENERALIZZAZIONE
3. ESTENDIBILITA’ richiede MODULARIZZAZIONE
RESTOSGI
Open Development // un modello ideale per costruire un prodotto enterprise Paolo Mottadelli // Adobe
OBIETTIVO COMUNE
1. Il RIUSO richiede STRUTTURE PULITE
2. PIU’ CASI D’USO richiedono GENERALIZZAZIONE
3. ESTENDIBILITA’ richiede MODULARIZZAZIONE
RESTOSGI
REST✴ Client-Server
✴ Stateless
✴ Cachable
✴ Layered systems
✴ Uniform interface
Open Development // un modello ideale per costruire un prodotto enterprise Paolo Mottadelli // Adobe
OBIETTIVO COMUNE
1. Il RIUSO richiede STRUTTURE PULITE
2. PIU’ CASI D’USO richiedono GENERALIZZAZIONE
3. ESTENDIBILITA’ richiede MODULARIZZAZIONE
RESTOSGI
REST✴Scalabilità
✴Generalizzazione delle interfacce
✴Deployment indipendente delle componenti
✴Intermediazioni (-latenza, +security, -legacy)
Open Development // un modello ideale per costruire un prodotto enterprise Paolo Mottadelli // Adobe
OBIETTIVO COMUNE
1. Il RIUSO richiede STRUTTURE PULITE
2. PIU’ CASI D’USO richiedono GENERALIZZAZIONE
3. ESTENDIBILITA’ richiede MODULARIZZAZIONE
RESTOSGI
Open Development // un modello ideale per costruire un prodotto enterprise Paolo Mottadelli // Adobe
UN ESEMPIO: CRXjackrabbit, felix, sling / HTTP, JCR, JSON / OSGI, REST
OSGI framework (felix)
JCR repository (jackrabbit)
JCR api
Application framework (sling)
HTTP
CRX, architettura (semplificata) - in stile ‘chi fa cosa’
‣ manages bundles as app components‣ provides system services to bundles
‣ stores the content
‣ processes HTTP requests in a RESTful way
specification implementation
architectural style
Open Development // un modello ideale per costruire un prodotto enterprise Paolo Mottadelli // Adobe
0. CLOSED SOURCE
1. OPEN RELEASES Codice aperto.
2. OPEN DEVELOPMENT Workspace aperto.
3. OPEN COMMUNITY Perdita del controllo.
4. OPEN CORE + CLOSED LAYERS
MODELLI DI APERTURATRATTO DA JUKKAZ.WORDPRESS.COM
Open Development // un modello ideale per costruire un prodotto enterprise Paolo Mottadelli // Adobe
0. CLOSED SOURCE
1. OPEN RELEASES Codice aperto.
2. OPEN DEVELOPMENT Workspace aperto.
3. OPEN COMMUNITY Perdita del controllo.
4. OPEN CORE + CLOSED LAYERS
Open Development // un modello ideale per costruire un prodotto enterprise Paolo Mottadelli // Adobe
0. CLOSED SOURCE
1. OPEN RELEASES Codice aperto.
2. OPEN DEVELOPMENT Workspace aperto.
3. OPEN COMMUNITY Perdita del controllo.
4. OPEN CORE + CLOSED LAYERS
Open Development // un modello ideale per costruire un prodotto enterprise Paolo Mottadelli // Adobe
CRX downloadhttp://bit.ly/crx-download