How do Wiki Categories work

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. (except that you can't click on the page title any more, you have to choose References from the Page menu.)

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.

PYK 2015-11-08: In that case, "categories" is an unfortunate name for this system, as "keywords" would have been more fitting. It goes to show that the idea was half-baked from the beginning, and that initial descriptions of it shouldn't be taken too dogmatically.

EMJ 2015-11-08: The name was already used by other wikis for the same sort of concept, so why not? As for being half-baked, no, it seems to have been more of "hey, we can do what they do with our existing functionality, we just have to use it in a particular way". And at the time (yes, I was here then!) it looked like a clever and wonderful idea. Also, there is no reason why "A class or division of people or things regarded as having particular shared characteristics" ( http://www.oxforddictionaries.com/ ) has to be part of a hierarchy (though of course it can). For an explanation of why I and others have a very deep suspicion of any attempt to turn even part of the Wiki into to a hierarchy, ask someone about the unperson episode. Hierarchies are useful, but they are not essential, and can even be used to hide things. They are also, by the way, contrary to the spirit of the internet.


Major Categories

In addition to the list of categories automatically generated by clicking on the title of the Category Category page, the following is a manually-curated list of major categories (where, for the time being, "major" means "in this list"):

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.

Category Calculator%|%Calculator]
calculators: scientific or otherwise
Channel
pages about channels 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 megawidgets 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 Proposals
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 widgets
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