using the web for document versioning: an implementation report for deltav

21
Using the Web for Document Versioning: An Implementation Report for DeltaV James J. Hunt, Jürgen Reuter Department of Computer Science Universität Karlsruhe

Upload: rowan-holden

Post on 31-Dec-2015

25 views

Category:

Documents


0 download

DESCRIPTION

Using the Web for Document Versioning: An Implementation Report for DeltaV. James J. Hunt, Jürgen Reuter. Department of Computer Science Universität Karlsruhe. Task. Starting Point: client/server versioning system client/server communication via proprietary protocol over Java-RMI Task: - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Using the Web for Document Versioning: An Implementation Report for DeltaV

Using the Web forDocument Versioning:

An Implementation Reportfor DeltaV

James J. Hunt, Jürgen Reuter

Department of Computer ScienceUniversität Karlsruhe

Page 2: Using the Web for Document Versioning: An Implementation Report for DeltaV

Task

Starting Point: client/server versioning system client/server communication via proprietary

protocol over Java-RMI

Task: replace Java-RMI with DeltaV standard

Page 3: Using the Web for Document Versioning: An Implementation Report for DeltaV

DeltaV Protocol

Protocol Design Goals: support most common versioning models provide versioning for Web and DAV clients in

standardized fashion ensure backwards compatibility to versioning-

unaware Web and DAV clients Protocol Implementation:

as extension of DAV, which itself extends HTTP

Page 4: Using the Web for Document Versioning: An Implementation Report for DeltaV

DeltaV Protocol

DeltaV

DAV

HTTP XML

Page 5: Using the Web for Document Versioning: An Implementation Report for DeltaV

Starting Point

RCE

VRCE

RCErepository

RCEserver

RMI

server client

file systemworking files

user

archives

Page 6: Using the Web for Document Versioning: An Implementation Report for DeltaV

Goal

RCE

VRCE

DeltaVrepository

Webserver

DeltaVprotocol

server client

file systemworking files

user

file system

working resources

archives

DeltaV- >RCE

RCE- >DeltaV

attributedfile system

Page 7: Using the Web for Document Versioning: An Implementation Report for DeltaV

Scope

implement early 04.5 draft of DeltaV focus on version control do not consider configuration

management focus on client-managed workspaces

Page 8: Using the Web for Document Versioning: An Implementation Report for DeltaV

Implementation Details

coded in Java code size:

core HTTP server: 16720 lines attributed file system: 5357 lines DAV implementation: >8500 lines DeltaV implementation: >10000 lines

Page 9: Using the Web for Document Versioning: An Implementation Report for DeltaV

DeltaV vs. RCE:Common Ground

use checkin/checkout model organize revisions as ancestral graph require unique initial revision provide storage space for meta data

Page 10: Using the Web for Document Versioning: An Implementation Report for DeltaV

Working Resources vs. Templates

in a checkin/checkout model DeltaV Working Resource:

server-side modifiable copy of existing version holds working resource properties

RCE Template: placeholder for new revision in archive;

modifiable copy of previous revision in user's file system space

holds pre-initialized revision attributes

Page 11: Using the Web for Document Versioning: An Implementation Report for DeltaV

Version GraphDeltaV vs. RCE

1.1

1.2

1.3

1.4

1.5

1.6

1.1.1.1

1.1.1.21.2.1.1

1.2.1.2

1.2.1.3

1.5.1.1 1.5.2.1

1.2.1.3

1.3

trunk

merge

Legend:

template

revision

sucessor relation

branch 1.2.1

branch 1.1.1

branch

branch

rev01

rev02

rev04

rev08

rev09

wr02

rev03

rev06rev05

rev07

wr01

rev10 wr03

wr02

rev08

merge

Legend:

working resource

revision

sucessor relation

branch

branch

working resourceof a revision

initial revision

Page 12: Using the Web for Document Versioning: An Implementation Report for DeltaV

Version Properties vs. Attributes

Trivial mapping: DAV:Author <-> REV_AUTHOR DAV:Comment <-> REV_DESCRIPTION

Needs date format conversion: DAV:creationdate <-> REV_DATE_IN DAV:getlastmodified <-> REV_TIMESTAMP

Page 13: Using the Web for Document Versioning: An Implementation Report for DeltaV

Version Properties vs. Attributes:

Version Tree Navigation DAV:successor-set property:

no designated line of development includes revisions only, use DAV:working-

resource-id-set to get working resources

RCE's REV_NEXT, REV_BRANCHES attribute: tracks current line of development with

REV_NEXT includes revisions and templates

Page 14: Using the Web for Document Versioning: An Implementation Report for DeltaV

Version Properties vs. Attributes

Problem: no DeltaV equivalent for RCE's ARCH_USERS,

ARCH_COMMENT_LEADER attributes

Solution: use user-defined resource properties

Drawback: client-specific use, interoperability problems

when incompatible clients share same server

Page 15: Using the Web for Document Versioning: An Implementation Report for DeltaV

XML Confusion

DAV, DeltaV: make heavy use of XML use XML namespaces specify DTD syntax informally do not consider namespaces in DTD do not support XML validation

Page 16: Using the Web for Document Versioning: An Implementation Report for DeltaV

XML Confusion

problems: unclear how to specify namespaces in DTD namespaces do not seem to be supported by

validating parser many people tend to disregard XML validation limited expressiveness of DTD

prospect: maybe XML schemata are more appropriate

Page 17: Using the Web for Document Versioning: An Implementation Report for DeltaV

Conclusion

applicability of DeltaV on RCE proven provided feedback for development of DeltaV issues left (mostly DAV issues) DeltaV ongoing effort various implementations underway (e.g.

Apache) ultimate test still pending: run our

client/server against someone else's server/client

Page 18: Using the Web for Document Versioning: An Implementation Report for DeltaV

Duplicate Use of XML Elements

DAV: <!ELEMENT set (prop) >

DeltaV: <!ELEMENT set (label-name)>

Page 19: Using the Web for Document Versioning: An Implementation Report for DeltaV

Limited Expressiveness

<!ELEMENT auto-checkout ANY>

ANY value: A sequence of elements with at mostone DAV:unlocked-update element and at mostone DAV:locked-update element.

<!ELEMENT unlocked-update EMPTY>

<!ELEMENT locked-update EMPTY>

Page 20: Using the Web for Document Versioning: An Implementation Report for DeltaV

Limited Expressiveness

<!ELEMENT auto-checkout (unlocked-update | locked-update)* >

<!ELEMENT unlocked-update EMPTY>

<!ELEMENT locked-update EMPTY>

Page 21: Using the Web for Document Versioning: An Implementation Report for DeltaV

MarshallingPROPFIND /foo.java HTTP/1.1Content-Length: 0

HTTP/1.1 207 Multi-StatusContent-Type: text/xmlContent-Length: 1418DAV: 1,2

<?xml version="1.0"?><A:multistatus xmlns:A="DAV:"> <A:response> <A:href>http://Rom.ira.uka.de:4711/foo.java</A:href> <A:propstat> <A:prop xmlns:B="RCE:"> <A:auto-version>F</A:auto-version> <A:working-resource-id-set /> <B:access-list>reuter(RWX),jjh(RW)</B:access-list> ... <A:revision-set> <A:href>http://Rom.ira.uka.de:4711/xkr1.1</A:href> <A:href>http://Rom.ira.uka.de:4711/xkr1.2</A:href> </A:revision-set> </A:prop> <A:status>HTTP/1.0 200 OK</A:status> </A:propstat> </A:response></A:multistatus>