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

FrOSCamp Zurich: Content Management Standards

Embed Size (px)

DESCRIPTION

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

Citation preview

Page 1: FrOSCamp Zurich: Content Management Standards

Upcoming Content Standards

David Nuescheler

Spec-Lead JCR (JSR-170 & JSR-283)Member of the CMIS TCOfficial JCR/CMIS Liaison

Page 2: FrOSCamp Zurich: Content Management Standards

Agenda

CM & StandardsA brief look at History

JCR v2.0. Evolution.What’s new.

OutlookWhat’s next.

JCR vs. CMISA comparison

CMISAn Introduction.

Page 3: FrOSCamp Zurich: Content Management Standards

1

CM & StandardsHistory, Adoption, Usage.

3

What’s nextwhere are we headed...

2

JCR & CMISHistory and comparison.

Page 4: FrOSCamp Zurich: Content Management Standards

SCMDAMDM

SOCIAL

WCMPIM

COLLAB

RM

Introducing the CM Cloud

Page 5: FrOSCamp Zurich: Content Management Standards

Many different usecases.Little agreement.

Page 6: FrOSCamp Zurich: Content Management Standards

There is light.The Content Repository.

All disciplines of CMagree on the existence and the featuresetof a content repository

Page 7: FrOSCamp Zurich: Content Management Standards

A Content Repository!?

RDBMSFEATURES OF AN

FILESYSTEMFEATURES OF A

YOU ALWAYS WANTED

GOOD STUFFALL THE OTHER+

Transactions, Query, Structure, Integrity Binaries, Hierarchy, Locking, Access Control

Unstructured, Versioning, Full-text, Multi-Value, Sort-Order, Observation

CONTENT REPOSITORY

Page 8: FrOSCamp Zurich: Content Management Standards

A history of standards.

DMA & ODMADocument 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.

JCRJava Language API specification. Functionally Broad. Wide adoption by Java Applications. Active development.

CMISDocument Management oriented Protocol Specification. Work in progress. Active development of the Specification. ACTIVESPECIFICATION

Page 9: FrOSCamp Zurich: Content Management Standards

1

CM & StandardsHistory, Adoption, Usage.

3

What’s nextwhere are we headed...

2

JCR & CMISHistory and comparison.

Page 10: FrOSCamp Zurich: Content Management Standards

What is CMIS?

PROPOSED TO

OASISSEPT

2008

V0.5

Page 11: FrOSCamp Zurich: Content Management Standards

What is CMIS?

CMIS

DOMAIN MODEL

LEAST COMMON DENOMINATOR DM INTEROP

DOCUMENTS & FOLDERS(+RELATIONSHIPS)

ATOMPUB(extension)

SOAP(bindings)

BINDINGS

HTTP PROTOCOLS

Page 12: FrOSCamp Zurich: Content Management Standards

What is CMIS?

DMIS? WS-DM?

Page 13: FrOSCamp Zurich: Content Management Standards

Day’s involvement in CMIS

Improve Specification via TC activityOfficial JCR / CMIS LiaisonEnable “Web” Support

Apache Chemistry (incubating)

CMIS Implementation & CatalystSponsor, Mentor andSupport podling

Page 14: FrOSCamp Zurich: Content Management Standards

What is JCR?

JCR

DOMAIN MODEL

CONTENT REPOSITORYINFRASTRUCTURE

NODES & PROPERTIES(GENERAL PURPOSE)

JAVA LANGUAGE(BINDING)

BINDINGS

API PROGRAMMING LANGUAGES

Page 15: FrOSCamp Zurich: Content Management Standards

JCR vs. CMISGoals & Bodies

JCR CMISVS.

Java Language API BindingsLarge Expert Groupv2.0 finishing touches

SOAP & AtomPub Protocol BindingsLarge Technical Committeev0.61 Draft

RELATION

COMPLEMENTARY

Page 16: FrOSCamp Zurich: Content Management Standards

JCR vs. CMISScope comparison

JCR CMISVS.

RELATION

COMPATIBLE SUBSET

SCM

DAMDMSOCIAL

WCMPIM

COLLAB

RM SCM

DAMDMSOCIAL

WCMPIM

COLLAB

RM

General PurposeContent Repository Model

FocusedDocument Management Model

Page 17: FrOSCamp Zurich: Content Management Standards

JCR vs. CMISCompatibility

JCR CMISVS.

RELATION

COMPATIBLE

Apache Chemistry makes every JCR compliant repository CMIS compliant. Automatically. No work involved.

Page 18: FrOSCamp Zurich: Content Management Standards

JCR vs. CMISWhat, when?

JCR CMISVS.

Content Repository Infrastructure.Standardized Content Repository Applications (CEVA) and Consolidation

DM InteroperabilityBrowse (multiple) Document Management Systems

RELATION

COMPLEMENTARY

Page 19: FrOSCamp Zurich: Content Management Standards

1

CM & StandardsHistory, Adoption, Usage.

3

What’s nextwhere are we headed...

2

JCR & CMISHistory and comparison.

Page 20: FrOSCamp Zurich: Content Management Standards

CMIS 1.0 Release

Released 2010

Baseline Release

Page 21: FrOSCamp Zurich: Content Management Standards

CMIS 1.1 Submission

Web/Browser BindingsFunctional Extensions

Page 22: FrOSCamp Zurich: Content Management Standards

JCR 2.0 Release

Released Sept

2009

TCK, RI & Specification

Page 23: FrOSCamp Zurich: Content Management Standards

JCR 2.1/ JSR-333

JSR-333joiner

welcome.

Scripting, Ease of Use.

Page 24: FrOSCamp Zurich: Content Management Standards

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.

Page 25: FrOSCamp Zurich: Content Management Standards

Scope & Goals

- Client-server awareness.

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

Page 26: FrOSCamp Zurich: Content Management Standards

Scope & Goals

- Maintenance and feedback container for implementers, users and non-users. Gauge real-world interoperability.

- Node type library.

- Internationalization.

Page 27: FrOSCamp Zurich: Content Management Standards

Working Model

- Online Community Tools

- Bi-Weekly Phone Conference

- Face-2-Face Meetings.

Page 28: FrOSCamp Zurich: Content Management Standards

Introducing:

JSOP

Page 29: FrOSCamp Zurich: Content Management Standards

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

Page 30: FrOSCamp Zurich: Content Management Standards

Basics

- Serialization to JSON (optionally YAML/XML)

- GET (batch/hierarchical)

- PUT (batch/hierarchical)

- PATCH (json diff content type)

- Support for binary as multipart

Page 31: FrOSCamp Zurich: Content Management Standards

Retro-style

- PUT & PATCH -> multipart POST

- Allows for Simple HTML forms

Page 32: FrOSCamp Zurich: Content Management Standards

Extensions

- Sort-Order

- Query

- Typing

- Locking

- Versioning

- Essentially: WebDAV + friends but simple

Page 33: FrOSCamp Zurich: Content Management Standards

Sample GET

Request:GET /myfolder.json HTTP/1.1

Response:{"createdBy" : "uncled","name" : "myfolder","id" : "50d9317a-3a95-401a-9638-333a0dbf04bb""type" : "folder"}

Page 34: FrOSCamp Zurich: Content Management Standards

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 : { ... } } } }}

Page 35: FrOSCamp Zurich: Content Management Standards

Sample PUT

PUT /myfolder HTTP/1.1

{"createdBy" : "uncled","name" : "myfolder","id" : "50d9317a-3a95-401a-9638-333a0dbf04bb""type" : "folder"

"child1" : { "grandchild11" : { "depth3" : { "depth4 : { ... } } } }}

Page 36: FrOSCamp Zurich: Content Management Standards

Sample PATCH

PATCH /myfolder HTTP/1.1

+newdoc : { "type" : "document", "createdBy" : "me" }-olddoc>movingdoc : /otherfolder/mydocument^lastModifiedBy : "me"

Page 37: FrOSCamp Zurich: Content Management Standards

PATCH diff ops

"+":create Node/Property/Resource

"^":update Node/Property/Resource

"-":delete Node/Property/Resource

">":move Node/Property/Resource

Page 38: FrOSCamp Zurich: Content Management Standards

PATCH diff

diff ::= membersmembers ::= pair | pairspair ::= key [ " : " value ]pairs ::= pair line-end pair | pair line-end pairsline-end ::= "\r\n" | "\n" | "\r"key ::= opchar idopchar ::= "+" | "^" | "-" | ">"id ::= * identification url (path | id) *value ::= value+ | value- | value^ | value>value+ ::= * a JSON object *value- ::= ""value^ ::= * any JSON value except JSON object *value> ::= id

Page 39: FrOSCamp Zurich: Content Management Standards

POST wrap 1

POST /myfolder/my.gif HTTP/1.1Content-Type: multipart/form-data; boundary=---------21447684891610979728262467120Content-Length: 123

---------21447684891610979728262467120Content-Disposition: form-data; name="data"Content-Type: image/gif

GIF89a...................!.......,............s...f.; ---------21447684891610979728262467120Content-Disposition: form-data; name="jsop:diff"Content-Type: text/plain

^lastModifiedBy : "me"+exif { cameraMake : "Apple", cameraModel : "Apple" }---------21447684891610979728262467120--

Page 40: FrOSCamp Zurich: Content Management Standards

POST wrap 2

POST /myfolder/my.gif HTTP/1.1Content-Type: multipart/form-data; boundary=---------21447684891610979728262467120Content-Length: 123

---------21447684891610979728262467120Content-Disposition: form-data; name="exif/cameraMake"Content-Type: text/plain

Another Vendor---------21447684891610979728262467120--

Page 41: FrOSCamp Zurich: Content Management Standards

POST wrap 3

POST /myfolder/ HTTP/1.1Content-Type: multipart/form-data; boundary=---------21447684891610979728262467120Content-Length: 123

---------21447684891610979728262467120Content-Disposition: form-data; name=""; filename="my.gif"Content-Type: image/gif

GIF89a...................!.......,............s...f.; ---------21447684891610979728262467120Content-Disposition: form-data; name=""; filename="yo.gif"Content-Type: image/gif

GIF89a...................!.......,............s...f.; ---------21447684891610979728262467120 --

Page 42: FrOSCamp Zurich: Content Management Standards

JCR modeling tips

Page 43: FrOSCamp Zurich: Content Management Standards

thanks.