<== Priority minus one ==>

* Fix the random number generator!
  - It uses /dev/random (which is non-portable and insecure)
  - Should use a non-deterministic RNG that provides a uniform
    distribution of bits (which *may* use /dev/random itself)
  - Either:
    + Make it a function, which provides a sequence of
      bytes whose bits are uniformly distributed
    + Or make everyone call BOOST directly and use their RNG
    + Or, have CryptEngine give the random numbers? This will
      be the first approach. Nettle's Yarrow implementation
      will be used.
* Monotone:
  - Include more operations (add_symlink, for example)
  - Checkout actually does setup.
  - Stop using ccutils and find a better way to call Monotone? (Lua?)
* PubRepository:
  - Fix setup()
  - Finish rewriting compromise()
* Split the code!
  - The code should be split into:
    + libVCS (supporting mtn, git, mercurial etc)
    + libcrypt (plugabble, etc)
    + libapso
    + apso
* Split keystore. There are two things being kept in the keystore:
  - The keymap (which is global
  - The user's list of keys
  These should be two separate classes
* Start using Monotone's sanity.{hh,cc}

<== Priority zero ==>

* Use singletons for keystore, cryptengine & other classes
  One good thing would be to have CryptEngine and VersionControl
  configurable on-the-fly. Get an instance, and tell it what
  plugin it should use.
* Write a plugin for Crypto++ so we can use the same key taht is
  used in Monotone (see keys.{hh,cc} there)
* Fix the (non-)use of exceptions
* Write a good test suite using BOOST (And Lua, like Monotone?)
* Documentation:
  - Fix index and table of contents in texinfo file
  - Review texinfo file
  - Fix the documentation for Doxygen (it's incomplete)

<== Priority one ==>

* Optimize
* Send setup of cryptengine and vcrepository to inside the faade, so users
  only need to specify them as strings
* Investigate how we could add Git, Arch, etc
* See if AspectC++ may help with sanity checks & other things
  - I couldn't compile anything (not a single hello, world) with aspectC++ :-(
  - Also, it seems that at this point AspectC++ doesn't work with Boost

<== Priority two ==>

* Read options from config file
* Make options nicer to the user
  - Maybe use some defaults?
* Graphical Interface
* Start using other crypto libraries

