EuroPython 2007

Silva 2.0: Progressive enhancement

9 July 2007, Vilnius, Lithuania

Kit Blake


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.

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?


Thank you

And thanks to all the Silva contributors / investors