CS 501
Software Engineering
Spring 2008

Project Suggestion:
Collaborative Text Editor


CS 501 Home

Syllabus

Projects

Books and Readings

Assignments

Quizzes

Academic Integrity


About this site

 

Client

Adam C. Engst
ace@tidbits.com

Collaborative Text Editor

Adam Engst publishes a weekly electronic newsletter about Macintosh and Internet issues. See: http://www.tidbits.com/ and http://www.takecontrolbooks.com/

He proposes the development of a collaborative text editor. It needs to run on Macintosh computers, but an architecture that used Java under the hood and a Cocoa-based front end so it looked and worked like a real Macintosh application would easily allow it to be re-faced for other operating systems.

The following is a preliminary list of requirements:

Network File Storage

  1. Internet Accessibility: GroupEdit shall make documents accessible to clients via TCP/IP over the public Internet.
  2. LAN Accessibility: GroupEdit shall make documents accessible to clients via TCP/IP over local area networks with Bonjour-like discovery.
  3. Filesystem Objects: GroupEdit shall support files and folders in the repository.
  4. Local Storage: GroupEdit shall maintain a local copy of all files and folders in the remote repository.
  5. Hierarchical Filing: Folders in GroupEdit shall be able to contain either files or other folders.
  6. Directory Management: Users (with appropriate permissions) shall be able to reorganize files and folders within GroupEdit.
  7. GroupEdit shall provide its own interface to the file system.
  8. GroupEdit shall support arbitrary binary files along with its native file type.
  9. File/Folder Naming: GroupEdit shall support long filenames with spaces and unusual characters, to be universally consistent with the set of operating systems on which GroupEdit runs.
  10. File/Folder Renaming: Users with read/write permissions shall be able to rename files within GroupEdit.
  11. Check In/Out: GroupEdit shall enforce a check in/out model of working in which users may edit files only after checking them out.
  12. View Without Checkout: Users may view files without checking them out first.
  13. Comment Without Checkout: Users may add comments on files without checking them out first.
  14. GroupEdit shall provide visual display of which files are checked out and by whom.
  15. Check In/Out Override: If a file has been checked out but cannot be checked back in, GroupEdit shall enable a user with read/write permissions to override of the checked out status.
  16. Offline Mode: GroupEdit shall enable users to work on files offline.
  17. External Checkout: GroupEdit shall allow an "external checkout" for offline users that is not communicated with the server.
  18. External Check In: GroupEdit shall allow automatic check in of an externally checked out file only if the file has not been modified in the meantime.

Version Control & Change Tracking

  1. Versioning: GroupEdit shall maintain historical versions of every file.
  2. Non-native Files: GroupEdit shall support the versioning (though not change tracking) for binary files.
  3. Change Tracking: GroupEdit shall track changes made to native files on a per-user, per-revision, per-character basis.
  4. Current Version Editing: GroupEdit shall be able to display the surviving changes in the currently editable document.
  5. Deleted Text: GroupEdit shall offer the (easily accessed) option of hiding or showing (in a particular style) deleted text from previous versions.
  6. Review Past Versions: GroupEdit shall enable users to review previous versions of a document, comparing any previous one against the current version.
  7. Linked Scrolling: When comparing two versions of a document, the user shall have the option of linking the scrolling of the two so a single scroll action will scroll both versions simultaneously. Bonus points for making it "smart" in the event of large additions or deletions.
  8. Customizable Change Display: GroupEdit shall enable the user to display changes in the following ways: (a) no indication of who made what change, (b) just the changes from an arbitrary previous version without respect to who made them, (c) all the changes from an arbitrary previous version with an indication of who made them, (d) a graphical method of indicating the number of changes in a paragraph without specifying what those changes are (this gives a sense of how heavily a paragraph has been worked over).I believe that (c) will provide the long-needed ability to see a particular person's changes, but only those since a particular version (thus ignoring all early changes). -Ace 8/17/06, 6:36pm
  9. Alerts: GroupEdit shall have the capability to alert subscribed users to changes in documents via email.

Commenting

  1. Comment Dating: All comments in GroupEdit shall be time and date stamped, associated with a version, and associated with a user.
  2. Comment To-Dos: Every comment shall have the capability to be turned into a To Do item.Just thought of this; it would be great to be able to mark comments as dealt with, since most of the time they're to-do items of some sort. -Ace 8/17/06, 6:14pm
  3. To Do Comment Status: To Do Comments shall be in one of two statuses: open or closed.
  4. General Comments: GroupEdit shall provide each document with a separate comment space where any user can make comments that apply to the document as a whole.
  5. Real-time General Comments: General comments shall be reflected in the comment display for connected users in real-time, thus enabling a type of chat about the file.
  6. Specific Comments: GroupEdit shall enable users to comment upon a selected piece of text, associating the comment with that text.
  7. Comment Discussions: GroupEdit shall enable comment replies, thus making it possible for multiple people to have a back and forth discussion about a document (with general comments) or a particular piece of text (with specific comments).
  8. Specific Comment Replies: Replies to specific comments shall be treated as additions to the original comment, rather than as independent comments. This enables them to be worked on as a single unit.
  9. Comment Display: GroupEdit shall enable the user to display the document simultaneously with (a) no comments, (b) only specific comments that are outstanding, (c) specific comments that are both outstanding and done.
  10. General Comment Display: GroupEdit shall provide a separate (from the document) view for displaying general comments, which are often more lengthy.
  11. Specific Comment Deletion: It shall be possible for a user with read/write permission to delete specific comments.
  12. Deleted Comment Tracking: GroupEdit shall track deleted comments.
  13. Deleted Comment Display: GroupEdit shall optionally indicate deleted comments by author and the user who deleted the comment.
  14. Comment Library: GroupEdit shall maintain a "Comment Library" containing boilerplate comments that can be inserted quickly.
  15. Library Sharing: It shall be possible for workgroup members to share entries in a Comment Library.
  16. Automatic Comments: Certain actions, such as moving a large chunk of text, shall create automatic comments explaining the change.

Formatting

  1. Semantic Styles: GroupEdit shall support character and paragraph level styles.
  2. Folder-Based Styles: Styles shall be defined at the folder level, and be available in all files within that folder (and nested folders).
  3. Style Display: When defined, styles should be given a name, a keyboard shortcut, beginning and ending tags (for HTML/XML/InDesignTag support), and a visual representation within GroupEdit.
  4. Local Representation: Users shall be able to override the default visual representation of styles, but such overrides appear only locally.
  5. Style Assignment: Users shall be able to assign styles to selected text.
  6. Default Styles: GroupEdit shall provide a set of default styles for users to modify, delete, or add to.
  7. Linking: GroupEdit shall enable users to embed URIs underneath selected text.
  8. Export Formats: GroupEdit shall be able to export files in a variety of formats, including HTML, Markdown, Textile, RTF, InDesign tagged, and so on.Full list to be determined later. -Ace 8/17/06, 6:35pm
  9. Export Approaches: GroupEdit shall enable users to extract differently formatted text in direct ways other than an Export command followed by a file save.

Editing Capabilities

  1. Cocoa Editor: GroupEdit shall provide at least the basic text editing capabilities of a Cocoa-based text editor.
  2. Spelling Checker: GroupEdit shall provide an inline spell checker.
  3. External References: GroupEdit shall provide easy lookup of words in external (online) dictionaries and thesauruses.
  4. Full Keyboard Access: GroupEdit shall provide full keyboard navigation and selection capabilities.
  5. Find/Replace: GroupEdit shall provide full find-replace capabilities with grep pattern matching.
  6. Word/Character Counts: GroupEdit shall provide constantly updating word and character counts that are visible at all times.
  7. Document Navigation: GroupEdit shall provide a fast way to navigate to particular parts of long documents by headings. (2.0)
  8. Outlining: GroupEdit shall enable users to show just heading styles, collapsing all subordinate text underneath each heading, and moving headings around (via dragging or copy/paste) while in outline mode shall move the subordinate text and headings as well. (2.0)
  9. Graphics: Users shall be able to link graphics in documents for display at the inserted position. (2.0)
  10. Graphic Storage: Any graphics linked in a document shall be treated as separate files in the folder and tracked by revision control. (2.0)

Authorization and Access

  1. Access Restrictions: GroupEdit shall restrict access to files and folders via username and password.
  2. Guest Access: GroupEdit shall support an anonymous guest user.
  3. Folder Permissions Types: Folders in GroupEdit shall have either add-delete or view-only permissions.
  4. File Permissions Types: Files in GroupEdit shall have read-write, read-comment, or read-only permissions.
  5. Initial Permissions: Upon file or folder creation, GroupEdit shall assign add-delete or read-write permissions to the creating user.
  6. Permissions Assignment: For any given file or folder, any user with add-delete or read-write permissions shall be able to add other users to one of the two (folders) or three (files) permissions categories.
  7. Inherited Privileges: GroupEdit shall cause privileges assigned to a folder to be inherited by all files and folders within the folder.
  8. Privilege Override: GroupEdit shall enable the overriding of inherited permissions for files and folders.
  9. Multiple Servers: The GroupEdit client shall be able to work independently with multiple GroupEdit servers.

[ CS 501 Home | Notices | Syllabus | Projects | Readings | Assignments | Quizzes | Academic Integrity | About ]


William Y. Arms
(wya@cs.cornell.edu)
Last changed: January 12, 2008