connexions
ConnexionsSoftware Architecture
Brent HendricksConnexions Systems Architect
connexions
Conceptual Model: Components
viewing andnavigation
editingenvironment
repository
courses
modules
courses
modules
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
connexions
Editing Environment
• Workspaces (private and group)
• Collaboration
• Create and manage content
courses
modules
courses
modules
editingenvironment
repository
viewing andnavigation
editingenvironment
connexions
Repository
• Storage
• Version Control
• Access
• Searchcourses
modules
courses
modules
editingenvironment
repository
viewing andnavigation
repository
connexions
Viewing
• Single modules– Multiple formats
• Courses– Persistent navigation– Module customization
courses
modules
courses
modules
editingenvironment
repository
viewing andnavigation
viewing andnavigation
connexions
Demonstration
connexions
Architecture
• Web-based architecture
– URIs, links, formats
– Implementation independent
connexions
viewing andnavigation
editingenvironment
repository
CNXML +
cMat
hML
XHTML+pM
athML / PDF
RDF / XHTML(O
utlin
e)
courses
modules
courses
modules
checkout
Architecture
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
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
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
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
connexions
Publish New Content
• Repository metadata: objectId, version, submitter, submitlog
• URI assignment
• Optional parent object
courses
modules
courses
modules
editingenvironment
repository
viewing andnavigation
repository
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
connexions
Checkout
• Make a local copy
• Non-locking (must communicate)
courses
modules
courses
modules
editingenvironment
repository
viewing andnavigation
repository
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
connexions
No Deletion
• Preserve links
• Site-manager override (legal)
courses
modules
courses
modules
editingenvironment
repository
viewing andnavigation
repository
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
connexions
Search
• Metadata
• Full text
• Open Archives Initiative
courses
modules
courses
modules
editingenvironment
repository
viewing andnavigation
repository
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
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
connexions
Course Customizations
courses
modules
courses
modules
editingenvironment
repository
viewing andnavigation
repository
viewing andnavigation
repository
xml
parameters
Tmodule
course
browser
cookie
connexions
Editing Environment
• Authoring site
• Edit-In-Place
courses
modules
courses
modules
editingenvironment
repository
viewing andnavigation
editingenvironment
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
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
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
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
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
connexions
Implementation
• Approach
• Key technologies
• Repository
• Content access
• Editing Environment
• Edit-In-Place
• Roadmap
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
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
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)
connexions
Standards Support
• XML and web technologies
• Open Archives Initiative
• Dublin Core
• IMS Metadata
• Keeping abreast of SCORM and OKI
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
connexions
Repository
repository
PostreSQL
CVS
ZODB
RisaRepository
modules
courses
modules
courses
CNXML + cMathML
(Outline)
XHTML + pMathML / PDF
RDF / XHTML
Text
Metadata
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
connexions
Editing Environment
courses
modules
figures
Workgroup(RisaWorkgroup)
Edit Content(RisaModuleEditor)
(RisaCollection)
media files
author 1
author 2
publish
checkout
editing environment
connexions
Edit-In-Place
• Client-side JavaScript: XMLHttpRequest
• Server-side validation/transformation
• POST method to publish new version
connexions
Roadmap
• Mozilla extension
• XUL + JS == RAD
• Loads course RDF
• Persistent navigation
• Course annotations — from server
• Personal annotations — from profile
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
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
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
connexions
Coming Soon
• IE Annotea support
• Zope Products:
– CNXMLDocument
– RisaRepository
– RisaModuleEditor
– RisaCollection