|Title|Wiki Archive Generator
|Date|05-Jun-2006 11:26:25 EEST
|JSPWiki version|2.4.x and beyond
|Submitter|Jerome Duprez
|[Idea Category]|GenericIdea
|[Idea Status]|NewIdea

This is an engine+UI feature request for a built-in way to generate an archive of a Wiki's contents.
Basically, I'd like to be able to download an archive of part or all of a Wiki, from the Wiki's Web UI.

Currently there is a workaround for file-base providers, but that requires access to the hosting server, and is not applicable to DB-based providers.

!! Use cases:
* Backup : with all the options, it would enable fine-grained backups, with easy access to end-users.
* Roaming : enables users to "download" a given state of a Wiki to their computer and work offline. Of course at some point uploading offline work back to the server and reconciling differences will become an issue; see [Roaming Wikis].

!! Features

! Selective archiving

The mechanism should enable to select the set of pages, and the depth of the traversal:
* Set of pages
** page-name regexp
** Category(ies)
** Recursive traversal from one root
** take permissions into account?
* Options
** with vs without attachments
** latest version vs full history

!! Issues

* Should the archiving feature be capable of ''recreating'' a page or set of pages from an existing archive? If so, how to deal with conflicts?
* What format should the archive take? Should it simply be wikitext? This would be necessary if there was a requirement that the archive be able to recreate the pages, but it lessens the value of the archive content for other purposes outside the wiki (e.g., ten years from now it's unlikely that the content is usable, whereas if the format was XHTML or some XML schema it would still be useful).
* What kind of access should there be to archiving features? Admin only? 

Note that I currently have a functional archiving system based on the [XNodeProvider|http://purl.org/ceryle/wiki/Wiki.jsp?page=XNodeProvider] that is part of [Ceryle|http://purl.org/ceryle/wiki/]. This uses an XML format (XNode) that includes page-level metadata and encapsulates all previous page revisions within the same XML document. Ceryle has features to both store and restore a set of pages from an archive (which is a set of XNode files in zip format). Before a serious archive feature is developed, JSPWiki really needs a real page metadata solution. -- MurrayAltheim

! UI
Two suggestions, that differ a bit in terms of feature and implementation:
* (cheapest) A couple specific JSPs, one form page for the selection, and one result page that generates an archive based on user input, and exposes it for download.
* A mechanism that would generate such an archive of a selected set of pages, and publish it to a page. JohnVolkar suggested that this could be a plugin, insertable in any arbitrary WikiPage : [Archive Plugin].


This is a really essential feature for use of wikis for project management. The typical method of use would be to keep everything live until the project or a subproject is complete, then lock it for some time so it is read only but accessible, and then remove and archive the entire project or subproject in such a way that it can be retrieved later if required. Since documentation for a project needs to be kept at least 12 years and usually more, the format should preferably be in both a convenient format for re-importing into JSPWiki and also some standard format for viewing like html, or PDF and zipped files where all the content and attachments are indexed and can be guaranteed to be viewed in the event that the JSPWiki and it's dependencies are unavailable 12 years plus from now.

This really is essential for serious paperless project management use, as opposed to use with a manual paper and file hardcopy backup.

--AnonymousCoward, 16-Sep-2007