Documentation
- List what files from libtextcat 2.2 go where ?
- MIME type should be as returned by xdg-utils' 'xdg-mime query filetype ...'
- Try listing names of dependency packages for most distros
- How to trouble-shoot with delve, get to a file with filters and labels
- Explain when indexing and updating are done, eg in the results list, Index on
 a result already indexed doesn't update it

General
- Fix the FIXMEs
- Get rid of dead code/classes/methods...
- Advertise service via Rendezvous
- MIMEScanner should also return parent types so that we don't filter out types unnecessarily
- Load desktop files from /usr/share/applications/kde ?
- DBUS_API_SUBJECT_TO_CHANGE only needed for DBus < 1.0
- Document which query parameters apply to Web engines
- Extend metadata beyond title,location,language,type,timestamp,size
- Sync with gtk+'s xdgmime
- Build against Fedora's patched libtextcat

Tokenize
- Allow to cache documents that had to be converted ? eg PDF, MS Word
- PDF filter with poppler
- WordPerfect filter with libwpd
- Office filter with libgst
- Check whether pdftotext flattens text in PDF documents that have columns
- HtmlFilter should skip htdig_noindex blocks (http://www.htdig.org/attrs.html#noindex_start)
- HtmlFilter to look for META tags Author, Creator, Publisher and CreationDate
- Filters should have a version number so that new versions force reindexing documents of the
 given type
- XmLFilter is slow-ish, rewrite file parsing with the TextReader interface

SQL
- Move history files into the index directories
- Labels are lost when a document is queued for indexing !

Monitor
- Implement support for Solaris FEM

Collect
- Comply with robot stuff defined at http://www.robotstxt.org/
- Harvest mode grabs all pages on a specific site down to a certain depth
- Make User-Agent string configurable
- Make download timeout configurable
- Support for HTML frames
- Test NeonDownloader

Search
- With engines that provide a redirection URL for results (eg Acoona), it looks like
  the query hitory is not saved/checked correctly
- Make sure Description files' SyndicationRight is not private or closed
- Get hold of stopwords lists for the languages supported by Xapian's stemmers
 and remove stopwords from queries as first step of search
- If a Web query fails, get spelling suggestions from the MERGED database
- Unify spelling suggestions, terms expansion and default-to-OR search as user feedback
- Enable to search in results, either by combining queries or via a results set
- The ext filter should apply to all engines
- Google and maybe others support the site filter so don't remove it from queries

Index
- Play around with the XAPIAN_FLUSH_THRESHOLD env var
- MD5 hash to determine on updates whether documents have changed, as done by omindex
- Reopen connection to remote indexes when necessary; does Xapian throw a RemoteError ?
- Allow to access remote Xapian indexes tunneled through ssh with xapian-progsrv,
  and make sure ssh will ask passwords with /usr/libexec/openssh/ssh-askpass
- Index xattrs if any
- Index Nautilus metadata (http://linuxboxadmin.com/articles/nautilus.php)
- Reverse terms so that left wildcards can be applied ?
- XapianIndex could do with some common code refactoring
- With Xapian >= 1.0, all indexes can be browsed with the new global posting list, ie
  Xapian::Database::postlist_begin("")
- Xapian > 1.0 has a version of Xapian::Database::allterms_begin() that takes a prefix
- With Xapian > 1.0.2, for date ranges, use QueryParser::add_valuerangeprocessor()
 NumberValueRangeProcessor and sortable_serialise()
- Automatically categorize documents based on MIME type and source into picture, video, etc...
- DBusXapianIndex to use D-Bus method Index
- pinot-index to instantiate a DBusXapianIndex if dealing with the daemon index
- After indexing or updating a document, a call to getDocumentInfo() shouldn't be necessary

Mail
- Find out what kind of locking scheme Mozilla uses (POSIX lock ?) and use that
- Index Evolution email (Camel, might be useful for other types actually)
- Index mail headers
- Decypher and use Mozilla's mailbox scheme, eg
  mailbox://mbox_file_name?number=2164959&part=1.2&type=text/plain&filename=portability.txt
- When parsing email's Date field, take the timezone offset into account, eg in
    Date: Thu, 25 Aug 2005 11:04:49 +0800
  +0800 is basically same as SGT. At the moment the date is assumed to be GMT !
- Keep track of attachments and avoid indexing the same file twice

Daemon
- Allow building without inotify/the DBus daemon
- Clean up method names
- Prefer ustring to string whenever possible
- Queue unindexing too
- Don't link against SOAP stuff, it's not needed here
- Labels should be managed by the daemon, and not saved to the configuration file
- DBus SetDocument[s]Labels should create labels if necessary
- Reintroduce Index method in D-Bus interface
- There's currently no way to get a document's ID without running a search
- Follow updates to Xesam specs
- Enable to deactivate D-Bus interface
- Force full scans on Reload ?

UI
- When sorting results by host name, give better score to results that appear
 several times
- Show which threads are running, what they are doing, and allow to stop them
 selectively
- Automatic indexing of a query's results depending on type, source, size,
 language
- Display search engines icons (Gtk::IconSource::set_filename() and Gtk::Style::render_icon())
- Replace glademm with libglademm ?
- Make unique (http://guniqueapp.akl.lt/)
- Either Live Query behaves like a live query (eg results list updated when new
 documents match) or it is renamed to something else to avoid confusion
- When viewing a result, all rows for that same URL should be updated with the
 Viewed icon
- Set results' indexed status after IndexingThread returns
- Show date ranges in queries summary
- Make use of GTKmm 2.10 StatusIcon
- Query expansion should be interactive
- UI doesn't show documents indexed by the daemon the very first time it's run,
 at least until it's restarted
- Errors should say what failed !
- Unknown exceptions in IndexingThread or elsewhere should be logged as errors
- Show whether Pinot was built with boost Spirit and how many plugins of each
 type there are
- Delete all temporary files when exiting
- Add less than, equal to, greater than filters on size for stored queries
- Show which stored queries are fully, partially or not at all Web friendly
- List viewed URLs
- Unify ExpandQuery and Querying threads !
- Keep a list of recently used URLs, eg in the import dialog

