Some Alternatives to Formal documentation: * ContextSensitiveHelp ** Excellent: Help is an integral, seamless component of the active UI. In some cases, it is possible to build UIs with extended prompts, clarifying instructions, and/or directed dialogs (e.g., "Wizards") that both inform and lead the user through performing a task without the discontinuity of a separate "help" system. This is quite popular in Web-based user-interfaces, where (for example) user-fillable forms can contain an arbitrary mix of editable features and the instructions for using them on the same page. (See below under ''Help provides context'' -- "... the help becomes part of the GUI.") In some systems of this type, the user can switch from verbose to terse help (or "beginner" to "expert") as he or she learns the system. A similar example exists in video games that integrate help and tutorial modes into early stages of the game play, with (e.g.) non-player characters that provide assistance, and/or floating messages that are minimally intrusive. ** Very good: RightClickForHelp: right-click in the GUI -- A help screen appears. The help is specific to the feature that was right-clicked. ** Very good: ContextMenuIncludesHelp: right-click in the GUI -- "Help" is an item on the right-click menu. The help page is specific to the feature that was right-clicked. ** Good: CrossLinkedHelp: The context specific help links to other help pages. ** Sometimes OK: QuestionMarkHelp: The question-mark mode in many Windows and Mac programs. Click a question-mark in the title bar to enter or leave this mode. In this mode, clicking any item brings up a help page specific to the feature that was right-clicked. ** Poor: The help page is generic. ** Poor: The help page is specific, but does not say anything more than the UserInterface. It does not explain context or reasons for using a feature. ** Poor: The help page is specific, but does not link to other help pages. * UserCustomizableHelp ** NewsGroup''''''s ** wiki ** annotations ** FrequentlyAskedQuestions ** User can cross-link help pages * SearchableHelp ** Well indexed ** full-text search ** Google * Help shows how to reach features ** Microsoft's "ShowMe" feature, especially if it also had: ** a GuiShorthand such as ProgrammersGuiShorthand ** Direct links to program screens ** note that combining ContextSensitiveHelp with "Help shows how to reach features" results in easy round-trips between features and help. * Help can be displayed side-by-side with the UserInterface. ** Double-headed monitor ** half-screen help ** help is always in front of its program (this can cause problems) ** help is always in front of all programs (this is obviously worse than just being in front of its program) ** displaying help causes program to shrink (to make room for the help screen) ** hiding help causes program to resume its previous size * Process overview ** Trouble-shooting flow chart(s) * Help provides context ** Help provides more information about a feature ** Help explains useful ways to configure a feature ** The logical extension is to turn such a help page into a configuration page. In other words, the help becomes part of the GUI. ---- '''Linking Help Feature''' * MicroSoft's Visual Studio .NET has the following features: ** Each help page has a URL, such as ms-help://MS.VSCC/MS.MSDNVS/vsintro7/html/vxconcontext-specifictopicsindynamichelpwindow.htm ** "Adding Custom Links to the Dynamic Help Window": The user can write .xml files to add to the help system. ** Both standard and custom help files are automatically searched by the "dynamic" help feature.