EuroPython 2007
Silva 2.0: Progressive enhancement
9 July 2007, Vilnius, Lithuania
Kit Blake
History
Work on Silva began in late 2001
Announced at EuroPython 2002 (version 0.7)
ZODB based, used DTML, no version control!
The basics, such as versioning and access, were in place
Followed by many 0.9.x enhancements and releases
Silva 1.0
Released in July 2004
Defining architectural feature was the Kupu editor (thanks to ETH Zürich)
Included advanced, user configurable metadata system
All text – and metadata – was stored as unicode
Image manipulation: scaling, cropping, file system storage
XML import/export, Zip file asset import
Silva 2.0
Released on 23 May 2007
No new features
Fundamental architectural changes triggered by Zope 2.10
Extensions / content types are Five-based
Much easier for extension developers
Use all the Z3 techniques, override views, etc.
Enhanced Version Management
History of all old versions stored
Side by side comparision of versions
Rollback (actually roll forward)
Silva export with or without old versions
Periodic batch deletion by a Manager
Custom content elements
External Source elements can be inserted in documents
All textual content types can insert source elements
Code Source: can be anything possible in Zope
Manager/Author friendly: developer does the code / Author sees only a form for filling in parameters
Easy to create and customizable, many available
Code Source examples
- YouTube Video...
- Encaptionated Image...
- Mathematical Formulas...
- Silva Pagelet
- Multi-TOC (for faceted navigation)
- Multimedia: Flash, Quicktime, Java Applet, Java Plugin, MSMovie, etc.
Sophisticated Access Control
Access is determined in a TTW interface
Chief Editors have complete control
Users/groups defined in Zope, LDAP, PAS, etc. are given Silva roles (Reader, Author, Editor, Chief Editor)
Silva has Virtual Groups, and supports role requests for collaboration sites
Define public access restrictions for an intranet section
Multi-site Management
Silva is virtual host aware, supports ‘deep virtual hosting’
Nested subsites can be accessed via main site content hierarchy or a subsite url (e.g. institute.example.com)
References are automatically adjusted, for both public pages and management screens
Can be configured so Authors see only their domain, or the entire site hierarchy for linking
Scales well: largest installation has 350 sites
Skins and Templating
Silva 1.0 had a ZODB-based layout system
Flexible and customizable per site/section/page/element
Silva 2.0 has a Silva Layout extension for skins
Uses Five/Zope3 technology, code on the file system
Permits skin switching TTW via Silva UI
Extensions can override specific parts of a skin/navigation
Import / Export
All actions via the Silva UI, no file system access needed
Handles all items, including Zope level objects
Import across sites, even with different metadata configurations
Import / Export works between different Silva versions (with some caveats)
Uses XML format, easy to bridge to other systems
Silva Extensions
Both content types and tools, from the community
High quality code, maintained by developers and Infrae support
Latest extensions are Five-based, with vastly reduced boilerplate
Come to the Grok.Silva sprint after EuroPython
Extension Examples
- S5 Slides...
- Silva Find...
- Silva Static
- Silva Glossary
- Silva Reference Checker
- dynamic Learning Content Management System
Near Future
Ajax in the interface will accelerate production
Direct export to OpenOffice (silva2odt) to be released shortly, import is possible
Hook up document conversion from Document Library product
RSS/Atom feed Forum/Blog improvements
More fine-grained caching architecture
Long Term Future
What do you need?
Questions?
Thank you
And thanks to all the Silva contributors / investors