Connexions 1 Connexions Software Architecture Brent Hendricks Connexions Systems Architect.

44
connexions Connexions Software Architecture Brent Hendricks Connexions Systems Architect

Transcript of Connexions 1 Connexions Software Architecture Brent Hendricks Connexions Systems Architect.

Page 1: Connexions 1 Connexions Software Architecture Brent Hendricks Connexions Systems Architect.

connexions

ConnexionsSoftware Architecture

Brent HendricksConnexions Systems Architect

Page 2: Connexions 1 Connexions Software Architecture Brent Hendricks Connexions Systems Architect.

connexions

Conceptual Model: Components

viewing andnavigation

editingenvironment

repository

courses

modules

courses

modules

Page 3: Connexions 1 Connexions Software Architecture Brent Hendricks Connexions Systems Architect.

connexions

courses

modules

courses

modules

courses

modules

courses

modules

editingenvironment

repository

viewing andnavigation

Content Types

• Module– Single topic building block– Standalone, but cross-linked

• Course– Sequence of modules– Customizations

Page 4: Connexions 1 Connexions Software Architecture Brent Hendricks Connexions Systems Architect.

connexions

Editing Environment

• Workspaces (private and group)

• Collaboration

• Create and manage content

courses

modules

courses

modules

editingenvironment

repository

viewing andnavigation

editingenvironment

Page 5: Connexions 1 Connexions Software Architecture Brent Hendricks Connexions Systems Architect.

connexions

Repository

• Storage

• Version Control

• Access

• Searchcourses

modules

courses

modules

editingenvironment

repository

viewing andnavigation

repository

Page 6: Connexions 1 Connexions Software Architecture Brent Hendricks Connexions Systems Architect.

connexions

Viewing

• Single modules– Multiple formats

• Courses– Persistent navigation– Module customization

courses

modules

courses

modules

editingenvironment

repository

viewing andnavigation

viewing andnavigation

Page 7: Connexions 1 Connexions Software Architecture Brent Hendricks Connexions Systems Architect.

connexions

Demonstration

Page 8: Connexions 1 Connexions Software Architecture Brent Hendricks Connexions Systems Architect.

connexions

Architecture

• Web-based architecture

– URIs, links, formats

– Implementation independent

Page 9: Connexions 1 Connexions Software Architecture Brent Hendricks Connexions Systems Architect.

connexions

viewing andnavigation

editingenvironment

repository

CNXML +

cMat

hML

XHTML+pM

athML / PDF

RDF / XHTML(O

utlin

e)

courses

modules

courses

modules

checkout

Architecture

Page 10: Connexions 1 Connexions Software Architecture Brent Hendricks Connexions Systems Architect.

connexions

Content Types

• Common metadata (title, created, abstract, keywords, authors, etc.)

• Important for cataloging and search

• Credit and attribution– Author– Maintainer– Copyright Holder

courses

modules

courses

modules

courses

modules

courses

modules

editingenvironment

repository

viewing andnavigation

Page 11: Connexions 1 Connexions Software Architecture Brent Hendricks Connexions Systems Architect.

connexions

Content Types

• Module– Container

• Default file: XML markup• Associated files• Links: (URL, category, title, strength)

courses

modules

courses

modules

courses

modules

courses

modules

editingenvironment

repository

viewing andnavigation

Page 12: Connexions 1 Connexions Software Architecture Brent Hendricks Connexions Systems Architect.

connexions

Content Types (cont.)

• Course– Sequence or outline– Container

• Groups• Module pointers (specific version or latest)

– Additional metadata (institution, etc.)– Customizations (links, annotations,

parameters)

courses

modules

courses

modules

courses

modules

courses

modules

editingenvironment

repository

viewing andnavigation

Page 13: Connexions 1 Connexions Software Architecture Brent Hendricks Connexions Systems Architect.

connexions

Repository Functions

• Publish new content• Version control• Checkout• Publish new revision• No deletion• Security• Search• Retrieval

courses

modules

courses

modules

editingenvironment

repository

viewing andnavigation

repository

Page 14: Connexions 1 Connexions Software Architecture Brent Hendricks Connexions Systems Architect.

connexions

Publish New Content

• Repository metadata: objectId, version, submitter, submitlog

• URI assignment

• Optional parent object

courses

modules

courses

modules

editingenvironment

repository

viewing andnavigation

repository

Page 15: Connexions 1 Connexions Software Architecture Brent Hendricks Connexions Systems Architect.

connexions

Version Control

• Entire object (metadata, files, etc.)

• Each version is first class object (internal and URL)

• History available

• Tracking latest– special resource represents

latest version

courses

modules

courses

modules

editingenvironment

repository

viewing andnavigation

repository

Page 16: Connexions 1 Connexions Software Architecture Brent Hendricks Connexions Systems Architect.

connexions

Checkout

• Make a local copy

• Non-locking (must communicate)

courses

modules

courses

modules

editingenvironment

repository

viewing andnavigation

repository

Page 17: Connexions 1 Connexions Software Architecture Brent Hendricks Connexions Systems Architect.

connexions

Publish New Revision

• Same objectId, new version

• Everything can change except: license, date of creation

• Only allows revision of most recent version

courses

modules

courses

modules

editingenvironment

repository

viewing andnavigation

repository

Page 18: Connexions 1 Connexions Software Architecture Brent Hendricks Connexions Systems Architect.

connexions

No Deletion

• Preserve links

• Site-manager override (legal)

courses

modules

courses

modules

editingenvironment

repository

viewing andnavigation

repository

Page 19: Connexions 1 Connexions Software Architecture Brent Hendricks Connexions Systems Architect.

connexions

Security

• Anyone may checkout

• Only maintainers may publish

• Must be maintainer of latest revision (not past or future)

courses

modules

courses

modules

editingenvironment

repository

viewing andnavigation

repository

Page 20: Connexions 1 Connexions Software Architecture Brent Hendricks Connexions Systems Architect.

connexions

Search

• Metadata

• Full text

• Open Archives Initiative

courses

modules

courses

modules

editingenvironment

repository

viewing andnavigation

repository

Page 21: Connexions 1 Connexions Software Architecture Brent Hendricks Connexions Systems Architect.

connexions

Retrieval

• Object as web resource: URIs– Ex: http://cnx.rice.edu/content/m11617/1.2/

• Tracking latest– Ex: http://cnx.rice.edu/content/m11617/latest/

• Returns HTML representation– Module text transformed + metadata + links– Course metadata + TOC with links to

modules• Links to other representations

– PDF, CNXML of module– RDF of course

courses

modules

courses

modules

editingenvironment

repository

viewing andnavigation

repository

Page 22: Connexions 1 Connexions Software Architecture Brent Hendricks Connexions Systems Architect.

connexions

Course Customizations

• Displaying module customizations

– Retrieving course URL sets cookie

– Cookie sent to all pages on server

– If module “in” course, server customizes display (links, notation)

– Annotation (uses Annotea protocol)• Link to annotation server in

course RDFcourses

modules

courses

modules

editingenvironment

repository

viewing andnavigation

repository

Page 23: Connexions 1 Connexions Software Architecture Brent Hendricks Connexions Systems Architect.

connexions

Course Customizations

courses

modules

courses

modules

editingenvironment

repository

viewing andnavigation

repository

viewing andnavigation

repository

xml

parameters

Tmodule

course

browser

cookie

Page 24: Connexions 1 Connexions Software Architecture Brent Hendricks Connexions Systems Architect.

connexions

Editing Environment

• Authoring site

• Edit-In-Place

courses

modules

courses

modules

editingenvironment

repository

viewing andnavigation

editingenvironment

Page 25: Connexions 1 Connexions Software Architecture Brent Hendricks Connexions Systems Architect.

connexions

Authoring Site

• Workspaces– Manage content and other files

(create, delete, c/c/p)– Private ‘My Workspace’– Workgroups (communal property)

• Create new (does not appear until published)

• Checkout– Any user can edit– Only maintainers can publish

courses

modules

courses

modules

editingenvironment

repository

viewing andnavigation

editingenvironment

Page 26: Connexions 1 Connexions Software Architecture Brent Hendricks Connexions Systems Architect.

connexions

Collaborating

• Workgroups

• Role Requests (must get person’s approval)

• Suggest changes (like software patch)

– Edits sent to maintainer– Maintainer can reject out of hand

or apply– Applies to local copy– Changes only appear if

maintainer publishescourses

modules

courses

modules

editingenvironment

repository

viewing andnavigation

editingenvironment

Page 27: Connexions 1 Connexions Software Architecture Brent Hendricks Connexions Systems Architect.

connexions

Collaborating (cont.)

• Derive Copy (like software fork)

– Check license

– Preserve attribution

– Specify parent upon publication

courses

modules

courses

modules

editingenvironment

repository

viewing andnavigation

editingenvironment

Page 28: Connexions 1 Connexions Software Architecture Brent Hendricks Connexions Systems Architect.

connexions

Edit-In-Place

• Small text edits for modules (linked from module display)

• Browser downloads source (uses HTTP to get XML)

• User edits paragraphs one at a time• Browser sends edits to server for validation and

transformation• User discards or publishes• Avoids checkout

courses

modules

courses

modules

editingenvironment

repository

viewing andnavigation

editingenvironment

Page 29: Connexions 1 Connexions Software Architecture Brent Hendricks Connexions Systems Architect.

connexions

Viewing

• Content from any browser (standards-compliant)

• Additional client-side functions– Persistent navigation lets users explore)

(reads RDF)– Annotations: Annotea client support

courses

modules

courses

modules

editingenvironment

repository

viewing andnavigation

viewing andnavigation

Page 30: Connexions 1 Connexions Software Architecture Brent Hendricks Connexions Systems Architect.

connexions

Implementation

• Approach

• Key technologies

• Repository

• Content access

• Editing Environment

• Edit-In-Place

• Roadmap

Page 31: Connexions 1 Connexions Software Architecture Brent Hendricks Connexions Systems Architect.

connexions

Approach

• Integrator approach:

– Reuse as much as possible

– Use off-the-shelf open source parts

– Contribute to existing projects

– If part doesn’t exist, create and distribute it

Page 32: Connexions 1 Connexions Software Architecture Brent Hendricks Connexions Systems Architect.

connexions

Key Technologies: Plone/Zope

• Plone Content Management System

– Plone is built using Zope, an object oriented application server. The language that drives Zope and Plone is Python — the agile language preferred by Google, NASA, Industrial Light and Magic and many others. Why? Because Python offers unprecedented programmer productivity. (plone.org)

– Object DB

– Attribute templating language

– Pre-built components for rapid development

– Extensible “Product” mechanism

Page 33: Connexions 1 Connexions Software Architecture Brent Hendricks Connexions Systems Architect.

connexions

Key Technologies: XML

• Family of standards (XSLT, DOM, Xpointer, RDF)

• Open, cross-platform standard

• Wide industry support

• Semantic Markup – Separation of content from presentation– Single source for multiple outputs

• CNXML: lightweight structural markup

• Discipline specific languages (MathML)

Page 34: Connexions 1 Connexions Software Architecture Brent Hendricks Connexions Systems Architect.

connexions

Standards Support

• XML and web technologies

• Open Archives Initiative

• Dublin Core

• IMS Metadata

• Keeping abreast of SCORM and OKI

Page 35: Connexions 1 Connexions Software Architecture Brent Hendricks Connexions Systems Architect.

connexions

Repository

• CVS stores module contents– Version control– Efficient differential storage

• PostgreSQL RDBMS stores metadata and text index

• Zope Product RisaRepository1 providesabstract view

1: “Risa” is an internal codename for our software

Page 36: Connexions 1 Connexions Software Architecture Brent Hendricks Connexions Systems Architect.

connexions

Repository

repository

PostreSQL

CVS

ZODB

RisaRepository

modules

courses

modules

courses

CNXML + cMathML

(Outline)

XHTML + pMathML / PDF

RDF / XHTML

Text

Metadata

Page 37: Connexions 1 Connexions Software Architecture Brent Hendricks Connexions Systems Architect.

connexions

Content Access

• XML Semantic markup• XSLT Transformations

– Single module CNXML/cMathML -> XHTML/pMathML or LaTeX(PDF)

– Course RDF -> CNXML/cMathML -> XHTML/pMathML or LaTeX(PDF)

• libxml, libxslt – fast C libraries, python bindings• CNXMLDocument – Zope Product wrapping

CNXML validation/transformation• Standalone scripts for PDF generation

Page 38: Connexions 1 Connexions Software Architecture Brent Hendricks Connexions Systems Architect.

connexions

Editing Environment

courses

modules

figures

Workgroup(RisaWorkgroup)

Edit Content(RisaModuleEditor)

(RisaCollection)

media files

author 1

author 2

publish

checkout

editing environment

Page 39: Connexions 1 Connexions Software Architecture Brent Hendricks Connexions Systems Architect.

connexions

Edit-In-Place

• Client-side JavaScript: XMLHttpRequest

• Server-side validation/transformation

• POST method to publish new version

Page 40: Connexions 1 Connexions Software Architecture Brent Hendricks Connexions Systems Architect.

connexions

Roadmap

• Mozilla extension

• XUL + JS == RAD

• Loads course RDF

• Persistent navigation

• Course annotations — from server

• Personal annotations — from profile

Page 41: Connexions 1 Connexions Software Architecture Brent Hendricks Connexions Systems Architect.

connexions

Back End

Drive Array

ZEOServerPostgreSQL

CVSRepository

Front End

ZEO ClientSquid (Proxy Cache)

Front End

ZEO ClientSquid (Proxy Cache)

Front End

ZEO ClientSquid (Proxy Cache)

LoadBalancer

Server Hardware

Page 42: Connexions 1 Connexions Software Architecture Brent Hendricks Connexions Systems Architect.

connexions

Open Source Contributions

• Plone/CMF — Groups support and integration

• exUserFolder — Groups support, extensible user-supplied properties

• XPointerlib — Mozilla XPointer support for JS

• Annozilla — Restructured back end, use Xpointerlib

• libxml/libxslt — Various enhancements, bug fixes

Page 43: Connexions 1 Connexions Software Architecture Brent Hendricks Connexions Systems Architect.

connexions

Released Software/Technologies

• CNXML DTDs, stylesheets, schema

• Roadmap — Mozilla Navigation plug-in (IE in progress)

• MathML font installers

• Zope Products:– ZAnnot — Zope Annotea support– ExtZSQL — FS-based SQL methods (non-CMF)– PasswordResetTool — password-reset without

sending cleartext– CMFDiffTool — Recursively diff objects

Page 44: Connexions 1 Connexions Software Architecture Brent Hendricks Connexions Systems Architect.

connexions

Coming Soon

• IE Annotea support

• Zope Products:

– CNXMLDocument

– RisaRepository

– RisaModuleEditor

– RisaCollection