Versioning User Interface Requirements

Gw
Advisor/Customer: Martin Bravenboer

The corner-stone of a Wiki is the ability to edit the data and structure of a Wiki online in a web browser from any workstation. The web browser is an extremely distributed and concurrent interface for editing the data of the Wiki. Hence, the generalized Wiki requires an appropriate user interface to the underlying version control system (Subversion). The Versioning User Interface project will develop a web-based user-interface for viewing and editing the Subversion repository of the Generalized Wiki.

Editing Files

Files contain the data of a Wiki. Files can be edited, moved and copied like ordinary files in a file system. Files can be organized in directories. GW supports binary files. Thus, there is no need for a notion of attachments like many existing Wiki implementations. Binary files are under version control, since they are just files in the Wiki

  • Edit, preview and commit in a single atomic action.
    • Editing a file is only supported for the head revision. This restriction will not be repeated in the description of all features.

  • Allow a commit message for a commit.

  • Edit transactions:
    • Use a session or author specific working copy
    • In cooperation with storage group
    • See also "Status Overview".

  • Create a new file.

  • Delete a file.

  • Move a file
    • Change all references
    • In cooperation with query and search

  • Revert the changes of a file to a certain previous revision.

  • Show working copy status if the current user is in an editing transaction.

  • Action for updating a file with the latest server revision (only in editing transaction).

  • Resolving conflicts: three buttons: cancel edit, save, save and resolve.

  • Create and remove a symbolic link to a file.

Editing Directories

GW has no notions of webs or subwebs: it is entirely hierarchic by allowing directories. Hence, it allows arbitrary levels of nesting. Furthermore, directories can be moved to different levels and are under version control.

  • Implement a directory listing. An URL that ends with a / should show his directory listing (if the user has the rights for this). The / URLs should not forward to a default file (such as index).
    • Optional: show access rights for files and subdirectories.

  • Directories are versioned as well. Implement support for viewing a directory listing specific revision of a directory. Don't show edit actions.

  • Create a subdirectory (head revision only)

  • Create a file in this directory.

  • Delete this directory

  • Move this directory

  • Show working copy status if the current user is in an editing transaction.

  • Action for updating a directory with the latest server revision (only in editing transaction).

Version Information of Files and Directories.

The user-interface must show versioning information of an item.

  • Show revision, last change date and last author at item page itself.

  • Action to view the history of a file (log)
    • Commit log: author, date and time, commit message.
      • Provide link to the actual commit to see the files that have been changed in the same commit.
    • Show the copy/move history in the Wiki file hierarchy.

  • Action to view the blame (praise) of Wiki topic: for each line show the author responsible for it.

  • Action to view differences between revisions of a file and directory. The diffs might be visualized in several ways.

Status Overview

During an editing transaction the user has its own working copy. The versioning user interface must implement tools for viewing the current status of this working copy. This status overview makes clear what has been changed and supports some additional actions for preparing a commit.

  • Show 'first column' information of SVN status:
    • Possible changes:
      • Modified
      • Added
      • Deleted
      • Conflicted
      • Merged
      • ... (see SVN documentation)
    • Use attractive icon set

  • Show information on properties
    • Conflicted
    • Modified
      • Use custom visualizations for known properties (access properties)

  • Optional, status overview with -u:
    • Show if newer revision exists on server

  • Show working and last-committed revision.

Actions from status overview:

  • Update a file for the server.

  • Edit a file in order to resolve the conflict of a file.

  • Revert a file to the state at the server.

  • Commit.

Integrate user authentication

The user authentication group will implement methods for authenticating users and determine their rights. This work has highly related to the versioning user interface, since the versioning user interface involves many actions that require user authentication. The integration of user authentication is a cross-cutting feature and therefore it is currently not described in detail.

Global information and statistics

  • Recent changes
    • For specific subdirectories (webs) only
    • HTML Commit log at the Wiki
    • RSS and Atom feeds for feed aggregators
    • Support Live Bookmarks of Firefox
    • In cooperation with query and search group.

  • Statistics:
    • Author statistics (all-time and per month)
    • File views (based on logs, database, or existing statistics system)
    • HotSpots? : frequently modified files

Local information and statistics

  • Show refererred-by
    • HotReferrers?
    • In cooperation with query and search team.

  • Who 'owns' this file: author statistics.