To make management of bugs against the dpkg suite easier we add as many of
the following usertags as apply to the bug.

When filing bugs, please do the same to aid triage, by including in the
bug report pseudo-header:

	User: dpkg@packages.debian.org
	Usertags: <usertag...>

Those are the currently used usertags (and the matchings against the old
“pseudo-tags”, which were encoded in the bug title):

Generic tags
============

usertag		pseudo-tag	description
-------		----------	-----------

assert		[ASSERT]	Errors caused by assert().
segfault	[SEGFAULT]	Errors that cause segmentation faults.
conffile	[CONFFILE]	Issues with configuration file handling.
symlink				Issues related to symlink handling.
depends		[DEPENDS]	Issues with dependency relationship handling.
maint-script			Errors related to maintainer scripts.
db				Issues handling the database.
file-metadata			File metadata tracking (perm, acl, cap, hash).
trivial		[TRIVIAL]	Bug should be trivial to fix.
perf		[PERF]		Performance problems.
new-field			Request for new control file fields.
new-option			Request for new command line option.
deb-format			Changes to the binary (.deb) format.
dsc-format			Changes to the source (.dsc) format.
arch		[ARCH]		Updates to ‘cputable’, ‘ostable’ and porting
				patches.
vendor				Vendor support and needed modifications.
build				Project build system issues.
i18n		[UTF-8]		Conversion to the UTF-8 encoding.
i18n		[INTL]		Internationalization problems.
l10n		[INTL]		New or updated translations and bugs affecting
				translation. Include the language code in the
				tag, e.g. [INTL:cy_GB].
doc		[DOC]		Documentation bugs, including --help, program
				output and manpages.

Being considered tags
=====================

usertag			description
-------			-----------

diversion		Issues related to diversions.
apt-feature		??

Program tags
============

usertag			pseudo-tag		description
-------			----------		-----------

dpkg			[DPKG]
dpkg-architecture	[DPKG-ARCHITECTURE]
dpkg-buildflags
dpkg-buildpackage	[DPKG-BUILDPACKAGE]
dpkg-checkbuilddeps	[DPKG-CHECKBUILDDEPS]
dpkg-deb		[DPKG-DEB]
dpkg-distaddfile	[DPKG-DISTADDFILE]
dpkg-divert		[DPKG-DIVERT]
dpkg-genchanges		[DPKG-GENCHANGES]
dpkg-gencontrol		[DPKG-GENCONTROL]
dpkg-gensymbols		[DPKG-GENCSYMBOLS]
dpkg-maintscript-helper
dpkg-mergechangelogs
dpkg-name		[DPKG-NAME]
dpkg-parsechangelog	[DPKG-PARSECHANGELOG]
dpkg-query		[DPKG-QUERY]
dpkg-scanpackages	[DPKG-SCANPACKAGES]
dpkg-scansources	[DPKG-SCANSOURCES]
dpkg-shlibdeps		[DPKG-SHLIBDEPS]
dpkg-source		[DPKG-SOURCE]
dpkg-split		[DPKG-SPLIT]
dpkg-statoverride	[DPKG-STATOVERRIDE]
dpkg-vendor
s-s-d			[S-S-D]			start-stop-daemon
u-a			[U-A]			update-alternatives

install-info		[INSTALL-INFO]

Current categories
==================

,--- Definition ---
user dpkg@packages.debian.org

usercategory dpkg-status [hidden]
 * Status [pending=]
   + Outstanding with Patch Available [0:pending+tag=patch]
   + Outstanding and Confirmed [1:pending+tag=confirmed]
   + Outstanding and More Info Needed [pending+tag=moreinfo]
   + Outstanding but Will Not Fix [pending+tag=wontfix]
   + Outstanding and Unclassified [2:pending]
   + From other Branch [absent]
   + Pending Upload [pending-fixed]
   + Fixed in NMU [fixed]
   + Resolved [done]
   + Unknown Pending Status []

usercategory dpkg-program [hidden]
 * Dpkg Program
  + dpkg program [tag=dpkg]
  + dpkg-deb [tag=dpkg-deb]
  + dpkg-divert [tag=dpkg-divert]
  + dpkg-query [tag=dpkg-query]
  + dpkg-split [tag=dpkg-split]
  + dpkg-statoverride [tag=dpkg-statoverride]
  + dpkg-maintscript-helper [tag=dpkg-maintscript-helper]
  + start-stop-daemon [tag=s-s-d]
  + update-alternatives [tag=u-a]
  + libdpkg [package=libdpkg-dev]
  + dpkg-architecture [tag=dpkg-architecture]
  + dpkg-buildflags [tag=dpkg-buildflags]
  + dpkg-buildpackage [tag=dpkg-buildpackage]
  + dpkg-checkbuilddeps [tag=dpkg-checkbuilddeps]
  + dpkg-distaddfile [tag=dpkg-distaddfile]
  + dpkg-genchanges [tag=dpkg-genchanges]
  + dpkg-gencontrol [tag=dpkg-gencontrol]
  + dpkg-gensymbols [tag=dpkg-gensymbols]
  + dpkg-mergechangelogs [tag=dpkg-mergechangelogs]
  + dpkg-name [tag=dpkg-name]
  + dpkg-parsechangelog [tag=dpkg-parsechangelog]
  + dpkg-scanpackages [tag=dpkg-scanpackages]
  + dpkg-scansources [tag=dpkg-scansources]
  + dpkg-shlibdeps [tag=dpkg-shlibdeps]
  + dpkg-source [tag=dpkg-source]
  + dpkg-vendor [tag=dpkg-vendor]
  + Dpkg perl modules [package=libdpkg-perl]
  + install-info [tag=install-info]
  + dselect [package=dselect]
  + Other [0:]

usercategory dpkg-program-view
 * dpkg-status
 * dpkg-program
 * severity

usercategory dpkg-class [hidden]
 * Dpkg Classification [tag=]
  + Segfault [segfault]
  + Assertion failure [assert]
  + Dependency relationship handling [depends]
  + Conffile handling [conffile]
  + Symlink handling [symlink]
  + Database handling [db]
  + File metadata tracking [file-metadata]
  + Maintainer script handling [maint-script]
  + Performance issue [perf]
  + Trivial fix [trivial]
  + New control field [new-field]
  + New command line option [new-option]
  + Binary package format [deb-format]
  + Source package format [dsc-format]
  + Architecture specific issue [arch]
  + Vendor specific issue [vendor]
  + Own build system [build]
  + Internationalization [i18n]
  + Localization [l10n]
  + Documentation [doc]
  + Other [0:]

usercategory dpkg-class-view
 * dpkg-status
 * dpkg-class
 * severity

# Change default view
usercategory normal
 * dpkg-status
 * severity
 * dpkg-program
 * dpkg-class

usercategory old-normal
 * status
 * severity
 * classification
`---
