This page is to be intended as a Request For Comments. If there is something you would like to see in the proposed system, your input will be appreciated. Also, the author acknowledges that NotebookWiki is a poor name for what may be a revolutionary fusion of two already great ideas. Other name ideas: WDE (Wiki Development Environment), Nowiki...
The motivation behind the NotebookWiki is to bring together the strengths of both the SAGE Notebook (try it at http://sage.math.washington.edu:8100), and the concept of a wiki. A wiki harnesses the talents of many, enabling large-scale group authoring. However, most wikis are centered around textual content. The SAGE Notebook is an attempt to consolidate good features of other development environments to provide an intuitive interface for a SAGE user. However, its multi-user support is currently flawed in a number of aspects. By bringing together these ideas, we can create a strong multi-user environment that may one day be used by many developers to manage large-scale projects like SAGE itself.
Wiki Pages, Worksheets, and Filesystems
In the NotebookWiki, the concepts of "page" in a wiki and the "worksheet" in a notebook would be consolidated. To create a development environment, each page would represent a file or directory in a filesystem. Documentation and discussion about changes to each file of a project would be in a single location. At any given time, a user should be able to query the wiki for a tarball of the project, as well as incremental patches.
The Cell Paradigm
Typically, each section of a wiki has a bolded title, and a body. These are all input as a single body of text. The SAGE notebook, however, has a collection of cells which are input and managed as discrete units. Currently, the only operations allowed on the notebook cells are: Create, Delete, Evaluate, Introspect. This is good, but for a wiki editor, these would not be sufficient -- one must also be able to Join, Split, and Move cells. Embedding of cells may also be considered in the future.
With every edit, the NotebookWiki should check for conflicts when a cell is edited. Through asynchronous http requests, the browser should be able to notify users when they are making conflicting changes. Conflict resolution could be handled through a chat system, where all users attempting to make changes are able to discuss the differences and come to agreement together. This is a significant improvement over the typical version control system, because rather than a single maintainer who may not be familiar with other changes to the files, the contributing developers will be more prepared to resolve the conflicts together.
This is very broad, and subject to complete revision.
- Implement XMLRPC in Notebook.
- Remove all HTML formatting from cell.py, notebook.py, and worksheet.py
- Incorporate library into wiki