Upcoming Content Standards
David Nuescheler
Spec-Lead JCR (JSR-170 & JSR-283)
Member of the CMIS TC
Official JCR/CMIS Liai...
Agenda


                   CMIS                              JCR vs. CMIS
                   An Introduction.            ...
CM & Standards                                        What’s next
History, Adoption, Usage.
                              ...
Introducing the CM Cloud



                WCM
       COLLAB
   SCM        SOCIAL
                        PIM
         RM...
Many different usecases.
Little agreement.
There is light.
The Content Repository.




                 All disciplines of CM
                 agree on the existence...
A Content Repository!?

                      CONTENT REPOSITORY

            FEATURES OF AN                              ...
A history of standards.

 DMA & ODMA
 Document Management oriented Specification. Little Adoption.
 No active specificati...
CM & Standards                                        What’s next
History, Adoption, Usage.
                              ...
What is CMIS?

               TO
            ED
         OS
      OP           T



     SIS
   PR           SEP 8
       ...
What is CMIS?
                                   DOMAIN MODEL

                                  LEAST COMMON
            ...
What is CMIS?




        DMIS?
       WS-DM?
Day’s involvement in CMIS




Improve Specification via TC   Apache Chemistry (incubating)
activity
                      ...
What is JCR?
                          DOMAIN MODEL

                      CONTENT REPOSITORY
            JCR
            ...
JCR vs. CMIS
Goals & Bodies



             JCR CMIS            VS.

    Java Language API Bindings         SOAP & AtomPub...
JCR vs. CMIS
Scope comparison




 SCM
        COLLAB
                  WCM
                      JCR CMIS
               ...
JCR vs. CMIS
Compatibility



              JCR CMIS           VS.

     Apache Chemistry makes every
     JCR compliant r...
JCR vs. CMIS
What, when?



              JCR CMIS           VS.

    Content Repository                 DM Interoperabili...
CM & Standards                                        What’s next
History, Adoption, Usage.
                              ...
CMIS 1.0 Release




                    ed 2010
              Releas




           Baseline Release
CMIS 1.1 Submission




           Web/Browser Bindings
           Functional Extensions
JCR 2.0 Release




                       Sept
                    ed 9
                leas00
              Re 2



    ...
JCR 2.1/ JSR-333




                     -333
                  JSRiner .
                    jo ome
                   w...
Scope & Goals


  -   API Consumers vs. API Implementors

  -   Ease of API use: Make simple, things simple.

  -   Lower ...
Scope & Goals


  -   Client-server awareness.

  -   Protocol and SPI bindings. Binding and liaison to
      OASIS / CMIS.
Scope & Goals


  -   Maintenance and feedback container for
      implementers, users and non-users. Gauge real-
      wo...
Working Model

  -   Online Community Tools

  -   Bi-Weekly Phone Conference

  -   Face-2-Face Meetings.
Introducing:

JSOP
Pitch & Goal
- Browser enabled, HTTP-based protocol
  designed to exchange fine-grained
  information efficiently.

- Easy...
Basics
- Serialization to JSON (optionally YAML/XML)
- GET (batch/hierarchical)
- PUT (batch/hierarchical)
- PATCH (json d...
Retro-style
- PUT & PATCH -> multipart POST
- Allows for Simple HTML forms
Extensions
- Sort-Order
- Query
- Typing
- Locking
- Versioning
- Essentially: WebDAV + friends but simple
Sample GET
Request:
GET /myfolder.json HTTP/1.1

Response:
{
"createdBy" : "uncled",
"name" : "myfolder",
"id" : "50d9317a...
Sample GET 2
Request:
GET /myfolder.4.json HTTP/1.1

Response:
{
"createdBy" : "uncled",
"name" : "myfolder",
"id" : "50d9...
Sample PUT
PUT /myfolder HTTP/1.1

{
"createdBy" : "uncled",
"name" : "myfolder",
"id" : "50d9317a-3a95-401a-9638-333a0dbf...
Sample PATCH
PATCH /myfolder HTTP/1.1

+newdoc : { "type" : "document", "createdBy" : "me" }
-olddoc
>movingdoc : /otherfo...
PATCH diff ops
"+":
create Node/Property/Resource

"^":
update Node/Property/Resource

"-":
delete Node/Property/Resource
...
PATCH diff
diff       ::=   members
members    ::=   pair | pairs
pair       ::=   key [ " : " value ]
pairs      ::=   pa...
POST wrap 1
POST /myfolder/my.gif HTTP/1.1
Content-Type: multipart/form-data;
boundary=---------21447684891610979728262467...
POST wrap 2
POST /myfolder/my.gif HTTP/1.1
Content-Type: multipart/form-data;
boundary=---------21447684891610979728262467...
POST wrap 3
POST /myfolder/ HTTP/1.1
Content-Type: multipart/form-data;
boundary=---------21447684891610979728262467120
Co...
JCR modeling tips
thanks.
Upcoming SlideShare
Loading in …5
×

FrOSCamp Zurich: Content Management Standards

2,312 views

Published on

Open Standards in CMS prepared for the Hackfest at FrOSCamp in Zurich

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,312
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
13
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

FrOSCamp Zurich: Content Management Standards

  1. 1. Upcoming Content Standards David Nuescheler Spec-Lead JCR (JSR-170 & JSR-283) Member of the CMIS TC Official JCR/CMIS Liaison
  2. 2. Agenda CMIS JCR vs. CMIS An Introduction. A comparison CM & Standards JCR v2.0. Evolution. Outlook A brief look at History What’s new. What’s next.
  3. 3. CM & Standards What’s next History, Adoption, Usage. where are we headed... 1 2 3 JCR & CMIS History and comparison.
  4. 4. Introducing the CM Cloud WCM COLLAB SCM SOCIAL PIM RM DM DAM
  5. 5. Many different usecases. Little agreement.
  6. 6. There is light. The Content Repository. All disciplines of CM agree on the existence and the featureset of a content repository
  7. 7. A Content Repository!? CONTENT REPOSITORY FEATURES OF AN FEATURES OF A RDBMS FILESYSTEM Transactions, Query, Structure, Integrity Binaries, Hierarchy, Locking, Access Control + ALL THE OTHER GOOD STUFF YOU ALWAYS WANTED Unstructured, Versioning, Full-text, Multi-Value, Sort-Order, Observation
  8. 8. A history of standards.  DMA & ODMA Document Management oriented Specification. Little Adoption. No active specification development.  WebDAV (& friends) Filesystem (Resource) oriented Protocol Specification IETF. Widely adopted. Every Desktop has WebDAV support. Every CM Vendor Supports WebDAV. No active specification development.  JCR Java Language API specification. Functionally Broad. Wide adoption by Java Applications. Active development. TION  CMIS VE IF ICA TI EC SP Document Management oriented Protocol Specification. Work in progress. Active development of the Specification. AC
  9. 9. CM & Standards What’s next History, Adoption, Usage. where are we headed... 1 2 3 JCR & CMIS History and comparison.
  10. 10. What is CMIS? TO ED OS OP T SIS PR SEP 8 2005 OA V0.
  11. 11. What is CMIS? DOMAIN MODEL LEAST COMMON CMIS DENOMINATOR DM INTEROP DOCUMENTS & FOLDERS (+RELATIONSHIPS) ATOMPUB SOAP (extension) (bindings) BINDINGS HTTP PROTOCOLS
  12. 12. What is CMIS? DMIS? WS-DM?
  13. 13. Day’s involvement in CMIS Improve Specification via TC Apache Chemistry (incubating) activity CMIS Implementation & Official JCR / CMIS Liaison Catalyst Enable “Web” Support Sponsor, Mentor and Support podling
  14. 14. What is JCR? DOMAIN MODEL CONTENT REPOSITORY JCR INFRASTRUCTURE NODES & PROPERTIES (GENERAL PURPOSE) JAVA LANGUAGE (BINDING) BINDINGS API PROGRAMMING LANGUAGES
  15. 15. JCR vs. CMIS Goals & Bodies JCR CMIS VS. Java Language API Bindings SOAP & AtomPub Protocol Bindings Large Expert Group Large Technical Committee v2.0 finishing touches v0.61 Draft RELATION COMPLEMENTARY
  16. 16. JCR vs. CMIS Scope comparison SCM COLLAB WCM JCR CMIS SOCIAL PIM VS. SCM COLLAB WCM SOCIAL PIM RM DM DAM RM DM DAM General Purpose Content Repository RELATION Focused Model Document Management COMPATIBLE Model SUBSET
  17. 17. JCR vs. CMIS Compatibility JCR CMIS VS. Apache Chemistry makes every JCR compliant repository CMIS compliant. Automatically. No work involved. RELATION COMPATIBLE
  18. 18. JCR vs. CMIS What, when? JCR CMIS VS. Content Repository DM Interoperability Infrastructure. Browse (multiple) Document Standardized Content Management Systems Repository Applications (CEVA) and Consolidation RELATION COMPLEMENTARY
  19. 19. CM & Standards What’s next History, Adoption, Usage. where are we headed... 1 2 3 JCR & CMIS History and comparison.
  20. 20. CMIS 1.0 Release ed 2010 Releas Baseline Release
  21. 21. CMIS 1.1 Submission Web/Browser Bindings Functional Extensions
  22. 22. JCR 2.0 Release Sept ed 9 leas00 Re 2 TCK, RI & Specification
  23. 23. JCR 2.1/ JSR-333 -333 JSRiner . jo ome welc Scripting, Ease of Use.
  24. 24. Scope & Goals - API Consumers vs. API Implementors - Ease of API use: Make simple, things simple. - Lower entry barriers for implementers and application developers. - Scripting support of the API.
  25. 25. Scope & Goals - Client-server awareness. - Protocol and SPI bindings. Binding and liaison to OASIS / CMIS.
  26. 26. Scope & Goals - Maintenance and feedback container for implementers, users and non-users. Gauge real- world interoperability. - Node type library. - Internationalization.
  27. 27. Working Model - Online Community Tools - Bi-Weekly Phone Conference - Face-2-Face Meetings.
  28. 28. Introducing: JSOP
  29. 29. Pitch & Goal - Browser enabled, HTTP-based protocol designed to exchange fine-grained information efficiently. - Easy to consume by todays Web-”Gear” (browsers, flash & friends) - Probably suitable for an RFC @ IETF
  30. 30. Basics - Serialization to JSON (optionally YAML/XML) - GET (batch/hierarchical) - PUT (batch/hierarchical) - PATCH (json diff content type) - Support for binary as multipart
  31. 31. Retro-style - PUT & PATCH -> multipart POST - Allows for Simple HTML forms
  32. 32. Extensions - Sort-Order - Query - Typing - Locking - Versioning - Essentially: WebDAV + friends but simple
  33. 33. Sample GET Request: GET /myfolder.json HTTP/1.1 Response: { "createdBy" : "uncled", "name" : "myfolder", "id" : "50d9317a-3a95-401a-9638-333a0dbf04bb" "type" : "folder" }
  34. 34. Sample GET 2 Request: GET /myfolder.4.json HTTP/1.1 Response: { "createdBy" : "uncled", "name" : "myfolder", "id" : "50d9317a-3a95-401a-9638-333a0dbf04bb" "type" : "folder" "child1" : { "grandchild11" : { "depth3" : { "depth4 : { ... } } } } }
  35. 35. Sample PUT PUT /myfolder HTTP/1.1 { "createdBy" : "uncled", "name" : "myfolder", "id" : "50d9317a-3a95-401a-9638-333a0dbf04bb" "type" : "folder" "child1" : { "grandchild11" : { "depth3" : { "depth4 : { ... } } } } }
  36. 36. Sample PATCH PATCH /myfolder HTTP/1.1 +newdoc : { "type" : "document", "createdBy" : "me" } -olddoc >movingdoc : /otherfolder/mydocument ^lastModifiedBy : "me"
  37. 37. PATCH diff ops "+": create Node/Property/Resource "^": update Node/Property/Resource "-": delete Node/Property/Resource ">": move Node/Property/Resource
  38. 38. PATCH diff diff ::= members members ::= pair | pairs pair ::= key [ " : " value ] pairs ::= pair line-end pair | pair line-end pairs line-end ::= "rn" | "n" | "r" key ::= opchar id opchar ::= "+" | "^" | "-" | ">" id ::= * identification url (path | id) * value ::= value+ | value- | value^ | value> value+ ::= * a JSON object * value- ::= "" value^ ::= * any JSON value except JSON object * value> ::= id
  39. 39. POST wrap 1 POST /myfolder/my.gif HTTP/1.1 Content-Type: multipart/form-data; boundary=---------21447684891610979728262467120 Content-Length: 123 ---------21447684891610979728262467120 Content-Disposition: form-data; name="data" Content-Type: image/gif GIF89a...................!.......,............s...f.; ---------21447684891610979728262467120 Content-Disposition: form-data; name="jsop:diff" Content-Type: text/plain ^lastModifiedBy : "me" +exif { cameraMake : "Apple", cameraModel : "Apple" } ---------21447684891610979728262467120--
  40. 40. POST wrap 2 POST /myfolder/my.gif HTTP/1.1 Content-Type: multipart/form-data; boundary=---------21447684891610979728262467120 Content-Length: 123 ---------21447684891610979728262467120 Content-Disposition: form-data; name="exif/cameraMake" Content-Type: text/plain Another Vendor ---------21447684891610979728262467120--
  41. 41. POST wrap 3 POST /myfolder/ HTTP/1.1 Content-Type: multipart/form-data; boundary=---------21447684891610979728262467120 Content-Length: 123 ---------21447684891610979728262467120 Content-Disposition: form-data; name=""; filename="my.gif" Content-Type: image/gif GIF89a...................!.......,............s...f.; ---------21447684891610979728262467120 Content-Disposition: form-data; name=""; filename="yo.gif" Content-Type: image/gif GIF89a...................!.......,............s...f.; ---------21447684891610979728262467120 --
  42. 42. JCR modeling tips
  43. 43. thanks.

×