Programming:
- Replacement for setproctitle() - HP/UX support only currently

- Improve PAM support (a pam_lastlog module will cause sshd to exit)
  and maybe support alternate forms of authenications like OPIE via
  pam?

- Complete Tru64 SIA support

- Finish integrating kernel-level auditing code for IRIX and SOLARIS
  (Gilbert.r.loomis@saic.com)

- sftp-server:  Rework to step down to 32bit ints if the platform
  lacks 'long long' == 64bit (Notable SCO w/ SCO compiler)

- Linux hangs for 20 seconds when you do "sleep 20&exit".  All current
  solutions break scp or leaves processes hanging around after the ssh
  connection has ended.  It seems to be linked to two things.  One
  select() under Linux is not as nice as others, and two the children
  of the shell are not killed on exiting the shell.

- Build an automated test suite

- HP/UX has issues with SIGCHILD handling.  There needs to be a wait() defined
  before reinstall.  Keven Steves <stevesk@pobox.com>

Documentation:
- More and better

- Install FAQ?

- General FAQ on S/Key, TIS, RSA, RSA2, DSA, etc and suggestions on when it
  would be best to use them.  

- Create a Documentation/ directory?

Clean up configure/makefiles:
- Clean up configure.in - There are a few double #defined variables
  left to do.  HAVE_LOGIN is one of them.  Consider NOT looking for information
  in wtmpx or utmpx or any of that stuff if it's not detected from the start

- Fix Make functionality so that build from a different directory work. 
  (roth@feep.net)

- Fails to compile when cross compile.
  (vinschen@redhat.com)

- Replace the whole u_intXX_t evilness in acconfig.h with something better???

- Consider splitting the u_intXX_t test for sys/bitype.h  into seperate test
  to allow people to (right/wrongfully) link against Bind directly.

- Move all "openbsd-compat" files to it's own directory.  Consider doing the 
  same with libssh. I don't think we need to split ssh, sshd, etc into their 
  own directory.
  (mouring@eviladmin.org)

Packaging:
- Solaris: Update packaging scripts and build new sysv startup scripts
  (gilbert.r.loomis@saic.com)

- HP/UX: Provide DEPOT package scripts.
  (gilbert.r.loomis@saic.com)
