KMS, an abbreviation of Knowledge Management System, was a commercial second generationhypermedia system, originally created as a successor for the early hypermedia system ZOG. KMS was developed by Don McCracken and Rob Akscyn of Knowledge Systems, a 1981 spinoff from the Computer Science Department of Carnegie Mellon University. The purpose of KMS was to let many users collaborate in creating and sharing information within large, shared hypertext, and from the very beginning, the system was designed as a true multi-user system. As a spatial hypermedia system, KMS was intended to represent all forms of explicit 'knowledge artifacts' such as presentations, documents, databases, and software programs, as well as common forms of electronic communication. The central element in the KMS data model is that of screen-sized pages interconnected by links. The user had the option of switching between a view of a single frame or two side-by-side half-screen views. Frames are always fixed-size, meaning scrolling is not needed. The frame model is spatial rather than character based, so that text, graphics and images may always be placed anywhere in the frame, even overlapping one another. Another way to say this is that empty space in the frame actually denotes space, not just the absence of content. Frames being fixed in size scrolling as a form of interaction is eliminated opting instead for larger aggregates such as documents and programs to be structured as hierarchies of hypermedia nodes. This flexibility makes it possible to create a document, search, run programs from a tree of frames starting at any frame. In KMS, links are one way and are embedded in frames. They may go from any text item, point, graphical entity, or image in the source frame to any destination frame. In addition to links, frame items can also have actions, allowing the use to activate programs that extend the intrinsic functionality of the system. A major distinction between KMS and current web practices is the distinction between regular items and "Annotation Items". Annotation items have the connotation of being peripheral or meta-level, relative to the rest of the contents, making it easy as to what was regular content versus just notes to oneself or comments by others. Annotation items with links thus have the connotation of being arbitrary cross-references and thus are not seen by users, and more especially agents, as part of the hierarchical structure of the hypertext. Another major distinction between KMS and current web practices is the elimination of a separate editor mode. Navigation and editing functionality is always directly available and users can edit any frame for which they have permission. Authors can even protect frames from inadvertent editing even by themselves. Older versions of frames are saved in 'comet-like' linked list so one can see the history for any individual frame. Finally, KMS contained a script programming language which enabled developers and users to extend the system beyond its current functionality. In keeping with the KMS philosophy of 'Everything a frame' so programs are also represented as hierarchies of frames; KMS dynamically read and interpreted only those program frames needed at runtime. KMS was originally written in Pascal and C, roughly 300,000 lines of code in size. A more modern, Java-based follow-on to KMS is being developed at the ComputerScience Department of the University of Waikato in New Zealand, by Rob Akscyn, one of the original developers of KMS.