PLAN
----

Milestone 0
===========
   * (DONE) Add $self to all new routines
   * (DONE) Put pseudocode for all new routines
   * (DONE) Review existing routines for possible bits to extract
   * (DONE) Consider renaming Document::Manager to Document::Repository
   * (DONE) Post to CPAN

Milestone 1
===========
   * (DONE) soap_client.pl - add capability to add a slew of svg's
   * (DONE) Insert the svg's from the recent release
   * (DONE) Evaluate ocal cgi's and scripts to determine DMS needs
   * (DONE) Cut a release to CPAN & announce

Milestone 2
===========
   * (DONE) Report # of docs
   * (DONE) Flesh out Document::Manager with more functionality
   * (DONE) Consider if I should create a WebService::DocSys module? - no
   * (DONE) Make ls_docs display data about the files it lists

   * Test storing of content via D::Object::content()
   * Test getting and setting state of a Document::Object
   * Create a better way of setting default metadata
   * Flesh out POD in submit_clipart
   * Insert the latest release into the dms
   * Report # pending docs, # new today
   * Report # authors
   * Figure out how to specify perl lib paths with env var instead of in
     scripts
   * Make dmsd set the DMS location
   * Determine how to set up certs for openclipart

Milestone 3
===========
   * Add SOAP routine to add/remove a keyword to a given document
   * Consider breaking out Document class from Document::Manager
     or Document::Metadata or Document::Object ?
   * Implement replacement for PrintSubmittedFilesForMonth(incoming,
     sort_by=FILEMTIME, sort_order=DESC)
   * Function for determining if a file has an acceptable file ext
   * Function for determining if a file has an acceptable mimetype
   * Function to KeywordList (incl. descriptions)
   * get_metainfo() - to get keywords; specify sorting criteria & num to
     retrieve.  Also get license info to validate it's correct.
   * verify_metadata() - returns error message, if any.
   * make_thumbnail() - use svg2png - see make-thumbnail
   * Attach bug report
   * Set up way to auto-update VERSION (see TT2)

Milestone 4
===========
   * Implement a simple commenting system
   * In Document::Object, can I eliminate the extra asserts by doing
     them in the new() function?

Milestone 5
===========
   * Figure out way to add a metadata "object" to Document::Manager
   * Review other DMS capabilities for other cmds to be added
   * Plan out how / if I should add a db for caching info

Future
======
   * Create some tests
   * Ideally, documents() should never encounter an error condition...
   * Should Document::Repository::add() really be put()?
   * Add error_msg handling for new routines
   * Document inputs/outputs for all new routines
   * Should Document::Repository really die in its new() routine?
   * Add logging / changelog
   * Persist the next_id so it can be loaded...
   * Access Control Lists?
   * delete/undelete
   * Attachment of notes (or should this be done as metadata?)
   * diff's
   * content search
   * What to do about localization, translations, etc.?
   * Document format conversion (to pdf, png, html, etc.)
   * Triggers / Events - whenever a change occurs, listeners are notified
   * Automatic distribution - either on triggers or scheduled
   * Status watching (notify when quantity of files reaches threshholds, etc.)
   * Conversion of mail to DMS
   * Repackaging (tar.gz / zip)
   * File system mapping (webdav, etc.)
   * Create docs like at
     http://pwp.netcabo.pt/users/1/0154115101/software/newdocms/technical-info.html
   * Consider caching of query results
   * Get deleted document list
   * Purge (permanently remove deleted documents)
   * Prune (permanently remove old revisions of documents)
   * Archive (creates backup of some or all of repository for
     backup/pruning)
   * Compress (compresses past versions of documents)
   * On the fly (de)compression
   * Apply hierarchical organization based on metadata
   * Thumbnails
   * Encryption
   * Import tree (each dir or file representing a document)
   * Generate dist package of some/all documents
   * Different access levels based on group membership
   * Scheduled changes of access (becomes public on date X)
   * 

