Raggle TODO
===========
[*] scrolling
[*] sanitize window modes (remove text reflow from draw())
[*] clean up code (move methods to modules, eliminate globals, etc)
[*] modularize code to make it suitable for reuse
[*] finish inline documentation
[*] command-line options
[*] feed grab save existing items
[*] speed up feed cache loading
[*] theme shouldn't save hard-coded window coordinates
[*] scrolling in Description window
[*] fix blocking for feed grabbing (grab feeds in parallel?)
[*] better theme format
[*] Convert manpage (raggle.1) to -ms
[-] Window resizing.
    Take a copy of ['theme']['window'], so we can resize without
    messing up the initial sizes (they need to be changed so
    resize_term knows what to do (not really, but still).
    We need to know *where* the windows are.
    For instance, in the default config, narrowing "Feeds" means
    widening the other two windows, and such.  
[*] Add a focus mode 'focus_smart'(?) that will select a feed when you
    flip from feeds into items (such that you don't have one feed by all
    visual accounts "Highlighted", but the items from another, since
    just because a feed is highlighted, doesn't mean it's *selected*
    too (though possibly it should, but that's what this is all about).
[*] Add an option ('force_reflow') that will forcibly wrap lines that
    would otherwise evade it (by not having spaces in it, say).
[*] When selecting a feed, automatically (and optionally) select the
    first item in the feed.
[*] OPML import/export support (http://www.opml.org/)
[ ] RSS locator (see link from http://www.pablotron.org/?cid=1154)
[*] item delete, mark items as unread, stick (save, hilite?) items, etc
[*] proxy support (via ENV['HTTP_PROXY'], etc?)
[*] display / dump raw feed output
[*] conditional HTTP GET to reduce bandwidth use and increase speed
[*] "update this feed now!" option from within Raggle
[*] 'manual_update' option for modem lusers
[*] Select Next Unread (n), should work for feeds as well as items
[*] Previous unread item would be useful also (I don't read in order, always)
[ ] Reverse ordering, (on a key) so you can read a big chunk of new
    items in chronological order (most are reverse chron) without
    undue discomfort
[*] Full HTML support is hard, but we at least need to do the right
    thing with <PRE>, this is entirely possible within String#reflow
    o Remove all calls to strip_tags (and have Window#text_draw do it
      *after* the reflow)
    o Watche for <pre[^>]*> </pre[^>]*> in String#reflow
    o Prevent reflow when between the two tags, just pass it word for
      word to text, sticking a \n in when one appears (which you can't
      see, because of the way #reflow is implemented, hence why I'm
      not doing it.
[-] extended RSS support (1.0 modules, including Dublin Core and
    Syndication support, etc)
[*] Check that the feedlist and feedcache are valid, after saving
    them. Write to another file, and check it, then move it into place
[*] select and follow links in description window (suggested by Omnic)
[*] add, remove, edit feeds inside Raggle
[*] SIGHUP to update now (also suggested by Omnic)
[-] Feedster integration
    (they still haven't published their XML-RPC interface :()
[-] Technocrati integration
    (can't find an xmlrpc interface for them)
[*] syndic8 integration
[ ] BlogThis support?
[-] user-configurable http open timeout and http read timeout
    (not gonna do this now)
[-] per-feed xpath configuration?
    (huh? what do i mean by this?)
[*] feed groups (only in web interface at the moment)
[-] clean separation of Ncurses and WEBrick interfaces (maybe an
    Interfaces module).  Don't require Ncurses if WEBrick is
    installed. 
    ( I would prefer if what you mean is "If Ncurses isn't installed
    and webrick is, start the web interface by default" that there be
    a big obvious message say what is happening and why -- richlowe 2003-09-25)
    (i think it already starts the web interface if there's no ncurses
    installed, but w/o the warning message.  the web interface is the
    default in windows; do we want to print a warning for the default?
    -- pabs Thu Oct 09 16:16:36 2003)
[*] Thread#abort_on_exception for feed grabbing thread! (suggested by
    Harry Ohlsen <harryo@qiqsolutions.com>).
[*] thread pool for grabbing an arbitrary number of threads in parallel
[-] internationalization support (information in this mailing list post:
    http://raggle.org/pipermail/raggle-dev/2003-September/000153.html)
    (preliminary, needs more work)
[ ] fix memory hogging (either via weakref caching of feed
    contents or only having the active feed in memory: note this
    method is easier, but relies on sane disk caching for any speed)
[*] update keybindings documentation
[*] save feed attributes on OPML export
[ ] XBEL import/export?
[*] url arg to --import-opml (suggested by Doug Kearns
    <djkea2@mugca.its.monash.edu.au>)
[ ] OCS support (http://internetalchemy.org/ocs/index.html)
[ ] user ratings (either centralized or bayesian, etc)
[*] note about terminal capabilities (no color in OSX, or in vt100 mode, 
    outstanding resize problem, etc... prompted by email from Geoffrey G
    Plitt <ggp@andrew.cmu.edu>)
[-] make Raggle work with Ruby Curses API (heap's suggestion)
    (not doing this, it works 
[ ] create a Gem for Raggle (http://rubygems.rubyforge.org/wiki/wiki.pl?CreateAGemInTenMinutes)
[*] confirm delete feed (suggested by Peter Kleiweg <kleiweg@let.rug.nl>)
[-] automatic new item pseudo-feed (suggested by ")
    (not doing this for this version of Raggle, it's in squaggle though)
[*] automatically opening the desc links in your browser via the 
    number keys (suggested by ")
[-] after completing 0.4 cleanup, rewrite raggle engine in C for
    speed
    (see libfeed and squaggle or C rewrite)
[-] backend abstraction (be able to save to MySQL, LDAP, etc)
    (not doing this, next version using sqlite though)
[-] use URI lib for url handling
    (not doing this, commenta bout it though)
[-] del.icio.us integration
    (not doing this, could be added as a keybinding though)
[*] save feed list periodically (suggested by Manpreet Singh
    <junkblocker@yahoo.com>)
[*] implement feed adding directly from find window
[ ] update Net::HTTP calls to 1.2 (ruby 1.8-style)
[*] add :exec-style bookmarks
[ ] add time field/format string for db bookmarks
[ ] proper SSL certificate store
