Debtags is the replacement for the Debian package sections that scales well with the size of the archive.
Every tag belongs to a facet, which clearly defines its meaning and context. A facet is a point of view from which we look at the package archive.
Some facets are quite generic:
role: role of the package in the system (program, plugin, documentation, development library...)
use: main purpose of the program (browsing, chatting, searching...)
implemented-in: language the software is implemented in (C, C++, ...)
interface: user interface of the package (x11, commandline, text mode, web...)
works-with: what kind of data can be processed with this packag (audio, plain text, images...)
Since it is not compulsory for a package to have a tag from every facet defined by Debtags, there are facets that are specific to some particular domain or group of users:
admin: purpose of the package when doing system administration (backup, boot, logging...)
devel: purpose of the package when doing software development (bugtracker, compiler, debugger, library...)
game: what kind of game is provided by the package (adventure, arcade, sport...)
sound: purpose of the package when working with sound and music (mixer, player, recorder, sequencer...)
These are some examples: there are of course many more.
These are some advantages of this system:
A package is not classified using a single concept, but using a superimposition of various different concepts, along different points of view. This means that it is possible to create rather precise classifications, such as "
One does not need to have a category for everything, since concepts can be easily approximated. For example, it does not make sense to introduce a
devel::lang:brainfucktag for just a couple of packages, but that can easily be approximated using
One can start a search from the most intuitive point of view. Some people may approach an image editor starting from
use::viewing, while some may approach it starting from
works-with::image: for Debtags, it does not matter.
Every tag is well defined. Belonging to a facet gives tags a very precise meaning: compare a hypothetical tag "
c++" with the tags
devel::lang:c++used by Debtags.