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".
- 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.
- 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.
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.