Symfony CMFun nuovo paradigma per la gestione dei contenuti
Symfony CMF   buonun nuovo paradigma per la gestione dei contenuti
Symfony CMF   buonun nuovo paradigma per la gestione dei contenuti         approccio
?http://phpday.it       #phpday
CMS are awesome!http://phpday.it                  #phpday
No REALLY!            CMSes are awesome!http://phpday.it                 #phpday
CMSes are awesome if           you are an end user!                Click clickhttp://phpday.it              #phpday
CMSes are awesome if           you are a sales guy!                 Brandhttp://phpday.it              #phpday
CMSes sucks if you are a                developer!        CMS first, framework secondhttp://phpday.it                #phpday
CMSes nightmares       • no clean separation of configuration, logic and content       • no clean deployment and staging co...
Do we also suffer from                 NIH?          •   Based ourselves as much on standard tools and specs          •   ...
CMF = Content      Management Framework          • In other words: its a toolbox to create your              own custom CM...
Mission          • The Symfony CMF project makes it easier              for developers to add CMS functionality to        ...
Contentshttp://phpday.it              #phpday
Contentshttp://phpday.it              #phpday
i18nhttp://phpday.it          #phpday
Versioninghttp://phpday.it                #phpday
Relational DBhttp://phpday.it                   #phpday
Architecture                   content repository | Jackrabbithttp://phpday.it                                     #phpday
Content Repository          • A content repository is a generic              application data “super store.”          • Ca...
JSR170 aka JCR1                   JSR283 aka JCR2          • how data are stored within the repository              is ide...
Workspaces          • Multiple workspaces, each with its own              name and root node          • Is similar to a Un...
Nodes          • Are identified by the path where are stored           • ex. id: “/my/path/under/water/fish”          • Can ...
Properties          • Typed attribute:             •     STRING, URI, BOOLEAN, LONG, DOUBLE,                   DECIMAL, BI...
Nodes          • Are typed using namespaced names           • nt:file, nt:folder...           • nt:unstructuredhttp://phpda...
Node Mixins                   • A mixin node type can be assigned to a                     node during that nodes lifetime...
Node Mixins             • mix:versionable              • jcr:versionHistory              • jcr:predecessors              •...
Content repository              Java implementationhttp://phpday.it                    #phpday
Architecture                         phpcr | Jackalope                   content repository | Jackrabbithttp://phpday.it  ...
PHPCR          •   Aims to provide a standard API that can be              used by any PHP content management system      ...
PHPCR          • PHPCR has been submitted to JCR          • http://phpcr.github.com/http://phpday.it                      ...
http://phpday.it   #phpday
Architecture                       doctrine | phpcr-odm                         phpcr | Jackalope                   conten...
PHPCR-ODM          • Sits on top of jackalope          • Works like MongoDB or CouchDB ODM,              but also includes...
PHPCR-ODMhttp://phpday.it               #phpday
Document Classhttp://phpday.it                    #phpday
Repository Classhttp://phpday.it                      #phpday
CRUDhttp://phpday.it          #phpday
Traversalhttp://phpday.it               #phpday
Versioninghttp://phpday.it                #phpday
Not all data fits well in                       PHPCR/JCR          •   For example aggregation is better done in an        ...
Architecture                    Sf2 | doctrinePHPCRBundle                       doctrine | phpcr-odm                      ...
DoctrinePHPCRBundle          • Document Manager available in the DIChttp://phpday.it                                    #p...
DEMOhttp://phpday.it          #phpday
Roadmap          •   PHPCR-ODM: @Child, @Children, @Parent,              @ReferenceOne, @ReferenceMany, ...          •   M...
Eating your own dog food          • Ideato is rebuilding its site on top of CMFhttp://phpday.it                           ...
Many companies are                   committed to the efforthttp://phpday.it                             #phpday
Symfony CMF Camp                    Cesena, 29-30 of July                     http://www.unsito.com/c4http://phpday.it    ...
Resources          •   irc://freenode/#symfony-cmf          •   http://cmf.symfony.com/          •   https://github.com/sy...
Thanks!                           http://joind.in/3023                   Michele Orselli   Manuel Baldassarri             ...
Upcoming SlideShare
Loading in …5
×

Symfony CMF: un nuovo paradigma per la gestione dei contenuti

1,404 views
1,318 views

Published on

Presentation from phpday2011. La modellazione e gestione dei contenuti costituisce un dominio complesso. Soluzioni standard come Drupal, Joomla o Wordpress si adattano con difficoltà sul dominio di uno specifico cliente; d’altro canto soluzioni fatte in casa costano in termini di tempi di sviluppo e riusabilità. Non esiste allora "one cms to rule them all"?

Nel talk verrà introdotto il progetto Symfony CMF discutendo tra l’altro di:
- standard per la modellazione dei contenuti
- modellazione ed organizzazione dei contenuti
- scelte architetturali
- linee guida per l’utlizzo del cmf

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,404
On SlideShare
0
From Embeds
0
Number of Embeds
10
Actions
Shares
0
Downloads
5
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide
  • \n
  • \n
  • \n
  • Chi sa cos’è Sf2/Doctrine2?\nChi ha usato Sf2/Doctrine2?\nChi ha “visto” SfCMF?\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • 9999 conf per rendere il prodotto a misura di 10000 casi\ndeploy upgrade, conf su db difficili da replicare (velocemente) o esportare\ncache oggetti, viste, conf, diversi layer difficili da trattare quando qualcosa non va\nstrumenti vecchi codice vecchio\nlibrerie esterne ex. layer db, templating\n
  • non stiamo ricadendo nella sindrome poichè invece di concentrarci su sviluppare un prodotto, cerchiamo di guardare agli standard e specifiche consolidate per assemblare una cassetta degli attrezzi necessari per creare valore in tempo ragionevole\n
  • non un unico prodotto che va bene per tutti ma strumenti che permettano di “creare” un cms adhoc per ogni situazione. Strumenti piccoli che posso assemblare assieme per le esigenze specifiche.\n
  • \n
  • I contenuti su web sono rappresentabili come un grafo.\nNella maggior parte dei casi posso semplificare con un albero.\n
  • Uno dei problemi che si hanno nella progettazione è che i contenuti sono organizzati in un albero, DB relazionali sono stretti\n
  • \n
  • Tutte queste richieste non sono facilmente realizzabili con DB relazionali, non sono nati per fare questo. Per questo si è pensato ad un database documentale a grafo\n
  • Tutte queste richieste non sono facilmente realizzabili con DB relazionali, non sono nati per fare questo. Per questo si è pensato ad un database documentale a grafo\n
  • \n
  • Managing users and access control lists\n
  • Content Repository API for Java Technology\nE’ una specifica Java per cercare di standardizzare l’interfaccia del content repository e come questo permetta di indentificare le informazioni e la loro struttura\nL1 read-only: inizializzazione sessione, lettura dei nodi e proprietà, esportazione xml, query xpath\nL2: scrittura dei contenuti, importazione da altre fonti, modifica dei datatipi\nJava Specification Requests\n\n
  • Il cuore della specifica è l’organizzazione e il trattamento dei dati che viene chiamato Content Model\n
  • \n
  • single value, multivalue\n
  • tipi di nodo: definiscono una struttura di base\ni nodi tipizzati definiscono vincoli sulla struttura dell’albero\n
  • I mixin sono dei behaviour\n
  • \n
  • esistono diverse implementazioni CR noi utilizzato questo, ci sono diverse versioni tra cui versioni embedded (es in Tomcat) oppure versioni stand-alone che noi utilizziamo\n\n
  • \n
  • porting in PHP delle API definite nelle specifiche\ninsieme di interfacce e non l’implementazione\ndefinisce quali interfacce deve soddisfare un client per poter colloquiare con generico CR\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Symfony CMF: un nuovo paradigma per la gestione dei contenuti

    1. 1. Symfony CMFun nuovo paradigma per la gestione dei contenuti
    2. 2. Symfony CMF buonun nuovo paradigma per la gestione dei contenuti
    3. 3. Symfony CMF buonun nuovo paradigma per la gestione dei contenuti approccio
    4. 4. ?http://phpday.it #phpday
    5. 5. CMS are awesome!http://phpday.it #phpday
    6. 6. No REALLY! CMSes are awesome!http://phpday.it #phpday
    7. 7. CMSes are awesome if you are an end user! Click clickhttp://phpday.it #phpday
    8. 8. CMSes are awesome if you are a sales guy! Brandhttp://phpday.it #phpday
    9. 9. CMSes sucks if you are a developer! CMS first, framework secondhttp://phpday.it #phpday
    10. 10. CMSes nightmares • no clean separation of configuration, logic and content • no clean deployment and staging concept • inconsistent cache layers • lots of legacy baggage • NIH (not invented here) syndromhttp://phpday.it #phpday
    11. 11. Do we also suffer from NIH? • Based ourselves as much on standard tools and specs • Deliver value within a reasonable timehttp://phpday.it #phpday
    12. 12. CMF = Content Management Framework • In other words: its a toolbox to create your own custom CMS • Not a one size fits all, but increase code sharing • Imagine Diem, Sympal, Apostrophe all build on the same content foundationhttp://phpday.it #phpday
    13. 13. Mission • The Symfony CMF project makes it easier for developers to add CMS functionality to applications built with the Symfony2 PHP framework. Key development principles for the provided set of bundles are scalability, usability, documentation and testinghttp://phpday.it #phpday
    14. 14. Contentshttp://phpday.it #phpday
    15. 15. Contentshttp://phpday.it #phpday
    16. 16. i18nhttp://phpday.it #phpday
    17. 17. Versioninghttp://phpday.it #phpday
    18. 18. Relational DBhttp://phpday.it #phpday
    19. 19. Architecture content repository | Jackrabbithttp://phpday.it #phpday
    20. 20. Content Repository • A content repository is a generic application data “super store.” • Can handle both small and large-scale data interactions • Is expected to manipulate and store structured and unstructured content that vary dynamicallyhttp://phpday.it #phpday
    21. 21. JSR170 aka JCR1 JSR283 aka JCR2 • how data are stored within the repository is identified and structured from the point of view of the clienthttp://phpday.it #phpday
    22. 22. Workspaces • Multiple workspaces, each with its own name and root node • Is similar to a Unix file system structure • Each workspace is independenthttp://phpday.it #phpday
    23. 23. Nodes • Are identified by the path where are stored • ex. id: “/my/path/under/water/fish” • Can be created, deleted, modified, copied...http://phpday.it #phpday
    24. 24. Properties • Typed attribute: • STRING, URI, BOOLEAN, LONG, DOUBLE, DECIMAL, BINARY, DATE, NAME, PATH, WEAKREFERENCE REFERENCE • jcr:created, jcr:mimeTypehttp://phpday.it #phpday
    25. 25. Nodes • Are typed using namespaced names • nt:file, nt:folder... • nt:unstructuredhttp://phpday.it #phpday
    26. 26. Node Mixins • A mixin node type can be assigned to a node during that nodes lifetime • mix:referenceable • jcr:uuidhttp://phpday.it #phpday
    27. 27. Node Mixins • mix:versionable • jcr:versionHistory • jcr:predecessors • jcr:baseVersion • jcr:isCheckedOut • jcr:mergeFailedhttp://phpday.it #phpday
    28. 28. Content repository Java implementationhttp://phpday.it #phpday
    29. 29. Architecture phpcr | Jackalope content repository | Jackrabbithttp://phpday.it #phpday
    30. 30. PHPCR • Aims to provide a standard API that can be used by any PHP content management system to interface with any content repository. • Several Implementations • Jackalope on Jackrabbit • Jackalope on Doctrine DBAL • Midgard2 PHPCRhttp://phpday.it #phpday
    31. 31. PHPCR • PHPCR has been submitted to JCR • http://phpcr.github.com/http://phpday.it #phpday
    32. 32. http://phpday.it #phpday
    33. 33. Architecture doctrine | phpcr-odm phpcr | Jackalope content repository | Jackrabbithttp://phpday.it #phpday
    34. 34. PHPCR-ODM • Sits on top of jackalope • Works like MongoDB or CouchDB ODM, but also includes a tree/graph, versioning and ACL APIhttp://phpday.it #phpday
    35. 35. PHPCR-ODMhttp://phpday.it #phpday
    36. 36. Document Classhttp://phpday.it #phpday
    37. 37. Repository Classhttp://phpday.it #phpday
    38. 38. CRUDhttp://phpday.it #phpday
    39. 39. Traversalhttp://phpday.it #phpday
    40. 40. Versioninghttp://phpday.it #phpday
    41. 41. Not all data fits well in PHPCR/JCR • For example aggregation is better done in an RDBMS • Store web store product description in PHPCR/ JCR • Store web store inventory and orders in RDBMShttp://phpday.it #phpday
    42. 42. Architecture Sf2 | doctrinePHPCRBundle doctrine | phpcr-odm phpcr | Jackalope content repository | Jackrabbithttp://phpday.it #phpday
    43. 43. DoctrinePHPCRBundle • Document Manager available in the DIChttp://phpday.it #phpday
    44. 44. DEMOhttp://phpday.it #phpday
    45. 45. Roadmap • PHPCR-ODM: @Child, @Children, @Parent, @ReferenceOne, @ReferenceMany, ... • Make AdminBundle compatible • Create frontend Bundleshttp://phpday.it #phpday
    46. 46. Eating your own dog food • Ideato is rebuilding its site on top of CMFhttp://phpday.it #phpday
    47. 47. Many companies are committed to the efforthttp://phpday.it #phpday
    48. 48. Symfony CMF Camp Cesena, 29-30 of July http://www.unsito.com/c4http://phpday.it #phpday
    49. 49. Resources • irc://freenode/#symfony-cmf • http://cmf.symfony.com/ • https://github.com/symfony-cmf/symfony-cmf/wiki • http://jcp.org/en/jsr/detail?id=283 • http://jcp.org/en/jsr/detail?id=333http://phpday.it #phpday
    50. 50. Thanks! http://joind.in/3023 Michele Orselli Manuel Baldassarri mo@ideato.it mb@ideato.ithttp://phpday.it #phpday

    ×