Versioning in Plone

by Francesco Ciriaci last modified Dec 30, 2008 05:55 PM
Content versioning in Plone, a long awaited feature.

Versioning is about tracking changes over time

Information, in whatever form: documents, spreadsheets, web pages, or source code, changes over time. Save as new version screenshot
Tracking changes of a document over time is what a versioning system does.
In particular a versioning system records who made a specific change, it allows backing-out undesirable changes, it gives the ability to record why a specific change was made and to know what the document contents were at a specific point in time.

Versioning a content is basically archiving important document versions, to have control on changes over time. Can I modify a content without retracting it, that is edit it while the published version of it stays visible to everyone? No, you can't. This feature, often confused with versioning is more appropriately a staging feature. If you want staging in Plone you have to use a stagin product like PloneMultisite.

Versioning must work with staging, workflow, i18n, ...

Versioning is independent from staging or multisite implementation (PloneMultisite), from versions repository (storage) and from contents implementation; in fact versioning can be added at any time in the system, as contents do not need to be aware that they are versioned.
Versioning must work with multilingual content also: CMFEditions can work with LinguaPlone.

Any content can be versioned: CMF Default, ATContent Types, custom Archetypes based contents. CMFEditions supports the versionining of composite folderish objects and versioning of references.
The save as new version (or save important) creates a new version, but can also trigger things like translation invalidation, events (for example for content subscription), etc.