This is a collection of work to do in Lintian that isn't a bug fix or a
simple requested new check.  Use the BTS for those since they're more
public and so that other people know things have already been requested.
This is intended for more internal use to track code restructurings,
infrastructure work, needed cleanups, or larger tasks.

Tasks here are sorted roughly by the directory structure of Lintian where
that makes sense so that we don't just have one long list.  Patches for
any of this is welcome, but please discuss on the mailing list first
before you do lots of work since the maintainers may have specific ways
they want it to be done.

If someone is actively working on something, note their name in square
brackets at the beginning.  If someone is noted, coordinate with them
before working on this.

checks:

- Move all static keyword lists into files in data.

- Separate doc-base checks out of checks/menus (or, probably easier,
  rename checks/menus to checks/doc-base and separate out the few bits
  that are actually about menus).

- Go through all tags and make sure that any that should have Policy
  references have them, and more generally that appropriate references are
  present.  (Need some way to track this sort of regular tag maintenance.)

- Check current tag certainties and severities against the results from
  lintian.d.o and adjust.  If something has legitimate overrides, it's not
  severity: certain, for instance.

doc:

- Either update doc/CREDITS based on the changelog file or archive it
  somewhere and say that it's not going to be updated.

- Update the Lintian manual:
  + document severity/certainty
  + document other output formats
  + document the reporting framework
  + developer documentation of the test suite, submitting patches, etc.

frontend:

- Nearly everything in frontend/lintian that isn't command-line parsing is
  really begging to be a module.  Move code out of here and into modules
  as part of rewriting the non-namespace modules in lib, such as Lab.pm
  which should acquire more the laboratory handling from frontend/lintian,
  and Checker.pm, which should acquire most of the smarts of the main
  frontend/lintian checking loop.

lib:

- Finish documentation of Lintian::Output*.

- Add collect function to return the sort of symlink information that's
  currently gathered by checks/menus; we'll find other uses for it.

- Provide a utility function to check a command as currently done in
  checks/menu-format, after which we could split desktop checking and menu
  checking into two separate check scripts.

private:

- Provide a general framework for updating metadata about the archive and
  modify all of the private/refresh-* scripts to use it.  Also set up
  something in debian/rules that will run all of them and update data
  accordingly which can be done routinely before every release.

reporting:

- Turn the bulk of the reporting framework into a module and move report
  generation into frontend as a lintian-report program (or something like
  that) which we can install as a first-class executable.  The
  html_reports script is relatively okay but could stand some cleanup and
  conversion to a module.  The harness script needs serious de-yucking.

t:

- Write new-style test cases for everything tested by the old test suite
  and retire the old test suite.

- Go through t/tests/legacy-libbaz/debian/debian/rules and make sure
  all TODO's are lintian-detected.

- t/runtests has a lot of duplicate code and could stand some
  restructuring and factoring of common code.

- udebs are generally undertested right now and could use some general
  tests, particularly for things that we don't care about with udebs but
  do care about with regular packages.

General:

- Write a real parser for shell scripts that can at least tokenize them
  half-way decently, do some basic analysis of whether code is conditional
  or not, and provide reasonable answers to questions like "is this
  command called in the script" without heinous regex matches.  Replace
  all the ugly, ad hoc script parsing code elsewhere in Lintian with that
  parser.  This is #629247.

External:

- Set up system for automatically filing bugs based on specific lintian
  tags (the most reliable ones), with usertags to ensure the bugs aren't
  repeatedly filed.
