  0.3 branch ideas

   - changelog viewer needs search

   - ~a is totally borked

   - Parse changelogs and display them more intelligently;
     use highlighting or other means to distinguish new
     stuff from old stuff.

   - left to do in UTF8:

    * ACS -> WACS  (done in src/vscreen/)
    * possibly split the two directions of transcode for greater clarity

   - Display layout loose ends:

    * wtf is vs_subtree using lists instead of vectors?
      iterator invalidation semantics?
    * add a parallel function to fragment::layout that just does
      size calculations (to avoid the overhead of generating and
      throwing away lots of strings)

      CANCELLED: in the most interesting cases, only one level of
      layout can be saved (because the size of the layout depends
      intimately on the exact contents of the fragment) without
      pointless amounts of effort.  If hypothetical future profiling
      turns this up as a problem, I'll reconsider.
    * review vs_layout_item: can it be done better/more efficiently
      now?

   - Spend a few minutes making the minesweeper code sane again, esp.
     cursor navigation.

   - Add a screen to "audit" Recommendations (so the
user can quickly find out which ones are unsatisfied)

   - Problem resolver changes:
    * Better display of proposed solutions
    * Store and present 'justifications' for solutions
      (i.e., I did this to resolve this dep, then this to
       resolve this other dep, etc)
    * Let the user 'cherry-pick' individual actions from a solution
    * Disable Auto-Install by default??
    * Better weighting of manual changes -- eg, try very hard to
      preserve non-kept packages, but not at all to preserve manually
      kept packages unless they're held.  (in particular, should
      it be costless to install or upgrade software?)

   - Parse Debian changelogs so they can be displayed better.

   - Come up with some useful markup system; move Help to it (be lazy
     and just base it on the long-description code?)


  Older TODO items:

 -> Implement joeyh's Suggests suggestion.  (what was it?)

 -> Make Suggests-Important really default to false (mm, brown paper bag..)

 -> Enrico's package tags

 -> Look at that Archive column patch (won't hurt to add?)

 -> Mutt-style tagging?

 -> Try warning the user if he/she is going to exceed the available disk space.

  Simpler things:

 -> Let packages be flagged as "interesting", and provide useful functions to
  make use of that (view only interesting packages, skip to next interesting
  package, etc)  -- this flagging should be sticky.

 -> It would be nice to make it easy to email a maintainer (just run
   the mailclient as requested)

 -> Strip html entities in downloaded changelogs

 -> Refcounting of packages?  (most helpful if I also track what was installed
    just for dependencies)

 -> (possible suggestion) Commands to clear all actions of a given type
   (installs, removals, upgrades, etc)

 -> For reverse depends, perhaps the dependency itself should be shown after
   all?

 -> Fix the behavior when running aptitude for the first time (instead of
   making all the packages new, we should sort them out)

  Harder things:

 -> Write a vtxxx emulator using the vscreen class, to run dpkg (and debconf,
   for the time being -- see below) inside.

 -> Action browsing.  Make undoable actions subclasses of
   vs_treeitem/vs_subtree and let the user see what he/she has done in the
   past.  Also generic (?)

 -> Mulithread this.  (necessary to make the next option fairly
   simple) This may require taking mutexes before doing UI-type stuff,
   so the window doesn't get yanked out from under us!  Probably best
   not to encode this into the inlines in the header; instead, make
   get_lock() and release_lock() routines in the vscreen class which
   users must call when doing curses calls or modifying the window
   variable.

 -> Allow the user to examine and modify the list of packages to be upgraded
   *while* a download and upgrade are progressing.  That is, let them switch
   from the download and unmark or mark packages and have said packages
   dynamically queued for download, or let them unmark packages from within the
   download screen.  It would also be nice to have progress indicators within
   the main tree for packages that are downloading, and a master indicator (in
   the status or header line?)
     This might not be possible without modifications to the core APT code,
   and Jason has indicated that such modifications are unlikely. :-(

 -> Embed an interface to bugs.debian.org .  Very cool idea, could be tricky
   to implement due to undocumented Web page/LDAP database formats.


     The following are (mostly!) insane ideas that, as one person put it,
   border on 'world domination'.  However, some of the (simpler) items
   originally in this list have actually been implemented!  Be afraid, be very
   afraid..

 -> Integrate debconf support -- make debconf just another vs_treeitem, and
   add debconf-frontend vscreens.

 -> Mouse support (actually easier than you might think)

 -> Assimilate Debian menu system!  That is, allow a user or root to view and
   edit the current Debian menus.

 -> Insert plumbing.

 -- Daniel Burrows <dburrows@debian.org>
