History This wiki has always had the feature that clicking on a page title when viewing the page produces a list of all the other pages that link to that page. Other wikis have this feature too. In September 2001, WHD added categories to the wiki, using only this feature, i.e. he added no code to the wiki software. See the comp.lang.tcl post at https://groups.google.com/forum/#!original/comp.lang.tcl/4cIvZt2VA44/TzhWkf3AimgJ .
Description In the post linked to above, WHD said
Categories are very simple. Suppose you want to provide an index of all pages on the Wiki relating to the WiKit software. To each such page, add the following link: [Category WiKit]. Then, create a [Category WiKit] page that defines the purpose of the category. It need not have much text on it; its primary value is that if you click on its title, the search features built into the Wiki will give you a list of all pages that link to [Category WiKit] ... and, finally, Category Category That last is the category to which all Category pages belong, so that you can go to Category Category, click on its title, and get a list of all Category pages.
That's it.
By convention, the links to a page's category or categories go at the end of the page, and there is now the <<categories>> macro to format them.
<<categories>> Topic | Other Topic However that macro has no function other than formatting, and the standard wiki functionality doesn't care where in the page they are.
Another convention, obviously dating back to WHD 's original, is that category pages have names starting with the word "Category" so you can see what they are. However, any page that has a link to [Category Category] behaves like a category page, so it might be considered to be one, and the <<categories>> macro allows that by formatting the above example as if it were specified as
!!!!!!
| [Category Topic] | [Category Other Topic] |
!!!!!! prepending the word "Category" unless there is only a page (e.g. "Topic") without it and no page (e.g "Category Topic") with it.
The whole category thing is automatic, except that the original version of this page said:
"An attempt is being made to produce some sort of self-categorizing of the pages on this web site. To do this requires one to enter at the bottom of pages one or more links to one of these tags:"
followed by a very short list of categories. Hence the rather longer and necessarily always incomplete list below.
The last quote also shows that categories are just tags with no hierarchy or any other structure.
Major Categories In addition to the list of categories automatically generated by clicking on the title of this page, the following is a manually-curated list of major categories:
Category the meta category - covers the list of all categories Uncategorized the "anti-category" - put on a page as a reminder that it hasn't really been categorized yet. 3D Graphics pages relating to 3D graphical display of information Actions pages that talk about the concept of actions Advanced Programming Fundamentals Advocacy pages dealing with tcl vs other languages AI pages relating to Artificial Intelligence Ajax WWW protocol Algorithm pages that describe either the general idea behind an algorithm or an implementation of the algorithm Animation pages that describe techniques and tools for performing animation AOLserver popular web server Application pages that describe a stand alone application or group of applications. Argument Processing pages that deal with tools and techniques for parsing arguments to a command or proc Audio Recording, processing, and playback, of audio signals.
Barcode pages discussing barcode related processing Binary Data pages discussing dealing with data rather than printable strings. Biology pages discussing Tcl use within the biological community BLT pages discussing programming using the BLT extension Book pages that describe specific literature. Broken Links used in connection with the Broken Link Report Business various pages describing business related applications and libraries. Bwise pages related to the Bwise environment. Calculator calculators: scientific or otherwise Channel pages about channel s in Tcl, and their counterparts in other languages. Characters pages describing internal or external manipulation of characters, fonts, glyphs, code-points, etc. Chat Wiki pages related to Internet chat programs. Chemistry extensions, concepts, algorithms, etc. dealing with problems in the field of chemistry Cloverfield a programming language project CMS content management system related pages Command pages describing particular Tcl extension commands Community pages describing/promoting community spirit Company pages describing companies with Tcl related products Compression pages dealing with the reduction of files/strings/etc Concept basic C.S. and mathematical concepts, and how to implement them in Tcl Concurrency Control Structure implementation of various tcl related control structures Core pages relating to functionality in the TCT managed portion of tcl's central source code implementing interpreter, etc. Critcl discussion of the Tcl runtime compile extension critcl Cryptography pages describing algorithms, software, etc. relating to encryption/decryption Currency and Finance monetary related issues Data Serialization Format Data Structure pages describing implementation/etc. of existing or new data structures Database pages describing database issues. Date and Time pages discussing topics of date and time calculations, calendaring, etc. Debugging pages describing helpers/strategies for debugging Deployment pages that relate to how to get your application into a destination environment Design pages that relate to application design Desktop pages that relate to applications that run on, or provide support to, GUI desktops, regardless of platform Dev. Tools pages that relate to development tools for Tcl. Development Programming, software development and software engineering. Device Control pages that relate to interacting with hardware. Dialog pages that relate to dialog windows. Discussion pages where some topic is being discussed that doesn't fit into the other categories Distribution discuss methods, tools, etc. for getting tcl applications and tcl itself out to appropriate locations Documentation pages describing documentation issues. Editor utility pages relating to editors and code to augment editors Education pages provide examples of Tcl used in education Embedded Pages discussing issues relating to devices with tcl embedded in them. Engineering Mechanical / Electrical engineering etc. Essay lengthy writings on relatively narrow topics Event Loop Event loop tutorials and usage examples Example Page provides example of using a particular technique or command Expect Topics relating to the Expect package File processing of files Foreign Interfaces pages about interfaces from other programming languages FORTRAN pages about interfacing Tcl and FORTRAN Function Functional Programming relating to the style of programming Games Applications and design issues relating to things hopefully fun to play Geography Geography, Maps, Navigation Glossary Page that defines a particular word, term, acronym Graph theory Graphics pages relating to graphical display of information Groupware software designed to aid info sharing and collaboration GUI pages relating to graphical user interface related topics, applications, libraries, etc Handwriting Recognition pages related to handwriting recognition in Tcl/Tk Human Language pages that discuss use of tcl to process text of various languages Humor attempts to be humorous Image Processing pages for discussion,tools, etc. for manipulating files or in memory structures that represent images Internals pages describing how Tcl works (e.g. bytecode compiler). Useful for maintainers and TIP authors Internet pages describing Tcl interactions with the Internet in all its forms Interprocess Communication process to process techniques, commands, discussions Introspection discussions of Tcl's introspective functionality Itcl Wiki pages relating to incr tcl Java pages that relate to programming in Java, invoking Java classes, etc Jim pages that relate to the Jim tiny, Tcl-alike language (L)GPL Licensed wiki pages about programs with a FSF license Language pages that describe programming languages Licence relating to various end user license agreement issues Linguistics Linux relating to Linux specific issues Local topics dealing with local specialties for given countries or natural languages Mac pages discussion the Apple Macintosh computer and related topics Mail Mailing List pages describing mailing lists Mathematics pages relating to mathematical concepts, calculations, algorithms, etc Medicine programs and code applicable to the field of medicine Mobile Tcl on mobile platforms Multimedia pages relating to Multimedia concepts Music pages that discuss generation of music NaviServer pages about the NaviServer web server. Networking pages relating to various networking issues. Numerical Analysis pages for this specific field of math Object Orientation pages relating to OO packages, design issues, and other related topics Office Automation pages describing Tcl applications and packages used in automating office work Oldies dealing with old versions of Tcl as well as old, no longer supported, operating system platforms Operating System Pages about operating systems Operator used to link the various expr operator pages Optical Illusion Package pages describing specific Tcl related re-usable software entities, sometimes referred to as extensions Parsing Performance pages dealing with improving, measuring, comparing etc. the performance of Tcl and associated extensions and applications Person pages describing specific people or used by an individual to describe their personal likes, dislikes, projects, etc Physics pages discussing programming relating to physics. PIM pages whose topic relates to Personal Information Management programs or technologies Platform Issues Plotting pages concerning the graphical presentation of a dataset (why not just use visualization?) Polygon pages whose topic relates to polygons, geometric objects, etc. Porting pages describing porting tcl programs and extensions to newer or older platforms / versions PostgreSQL popular database related topics Presentation discussion, concepts, packages relating to the presentation of content Printing pages relating to some aspect of achiving hard copy Repository pages related to requirements, creation, operation, maintenance, and availability of repositories for Tcl code Science pages relating to sciences other than computer science Scripted Document old name for Starkit . Security pages that suggest extensions or topics relating to software/data/computer security issues Signal Processing processing measured data signals Simulator simulators: electrical, mechanical, biological ... systems Snit pages about Snit's Not Incr Tcl Snit Widgets pages of megawidget s written in Snit Sound pages connected to generating and analyzing soud data (music, monitoring, etc.) Speech Synthesis pages related to speech synthesis. Statistics pages relating to the mathematical calculation of statistics String Processing Strings, text, regular expressions, etc. Suggestions pages that suggest extensions or new features that still wait for someone to implement them Survey Syntax discuss Tcl syntax and related issues System Administration pages relating to issues of managing computer systems and their users. Tcl Implementations pages that discuss the various Tcl-like interpreters available Tcl Library pages that document the various Tcl C API functions Tcl3D pages related to the Tcl3D package Tcler's Wiki pages that relate to the meta-topic of the Tcler's Wiki web site itself TclHttpd pages relating to the popular Tcl web server Tclkit pages discussing the building and use of tclkit all in one "Batteries Included" distribution format tcllib the tcl script based tcllib package . TclX the extension which adds more unix type commands to tcl Telecoms Template Testing pages discussing the building and use of tcl in various testing capacities Text Screen Text Widget Threads Collection of Tcl and thread application architectural issues TIP pages discussing Tcl Improvement Proposal s Tk relating to the Tk package Tk Library the C API provided by the Tk library tklib the tcl script based tklib package . Toys fun code that technically isn't related to games Tutorial pages that are suitable for learning Unix Unix -specific things.VFS pages relating to vfs , the virtual file system Visualization pages relating to graphically displaying data Webserver web server info on the wiki Whizzlet What are whizzlets ? Widget pages that relate to Tk widget s Wikit pages that relate to the general software used to run this web site itself Windows pages that relate to Microsoft 's Windows operating system in any of its incarnations WindowsTricks Word and Text Processing pages that deal with the programatic processing of words or text (i.e. editors, formatters, spelling checkers, etc.) Wub technology behind this web site XML pages related to XML XOTcl Code pages of topics and code relating to the XOTcl object oriented extension