Introduction
Debtags is the replacement for the Debian package sections that scales well with the size of the archive.
It uses multiple categories per package (tags in short), chosen from a controlled vocabulary, organised borrowing principles of faceted classification.
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 "
role::program
,interface::x11
,works-with::mail
,use::viewing
,uitoolkit::gtk
,implemented-in::c
" -
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:brainfuck
tag for just a couple of packages, but that can easily be approximated usingdevel::interpreter
,devel::compiler
anduse::entertaining
. -
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 fromworks-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 tagsimplemented-in::c++
anddevel::lang:c++
used by Debtags.