### Disclaimer
This is my TODO list. If you're interested in one of these features, there
are 3 options. Either wait for someone to implement it, sponsor someone
to implement it or implement it yourself.

If you want to implement something, please contact me first so that we can
discuss acceptable implementations. In some cases I haven't thought about
it too deeply, but for others I know exactly what I require.

If you have other nice ideas that you think would be an improvement, please
contact me as well. :) Send an email to: Dag Wieers <dag@wieers.com>


### Back-end support
+ Add support for SRPM files (just put them into one directory /SRPMS)
+ Allow to symlink the whole ISO disc in order to replace package-lists
+ Check files that do not match the regexp and compare filename to rpm headers
+ Make rsync/lftp download requests from the same server into 1 request (hardlinks)
+ Symlink files with a relative directory instead of absolute directory
+ Use mirrorlist option from .repo files as a source (for http)
+ Autocreate yum .repo files and apt .list files to be used by local clients
+ Add support for other remote synchronising tools (sitecopy, wget)

### RHN support
+ Fix the 'cached' logininfo which causes old channel information to be present (relogin, logout ?)
+ Check for existence of packages on ISOs (updates vs os)
+ Allow Yam to create new systems (register) in RHN on demand
+ Allow to install all packages (repos.listAllPackages vs repos.listPackages methods) (rhn-download-all option)
+ Remove unavailable packages (rhn-cleanup option)
+ Re-authenticate after X-RHN-Auth-Expire-Offset (3600sec) to prevent SSL handshake failures after timeout

### Repository metadata
+ Add URPMI and Red Carpet support (help needed)
+ Add YaST/YOU support (both for mirroring as providing metadata, seems impossible ?)
+ Create anaconda-style metadata for booting an updated installation
+ Create group information (createrepo -g comps.xml RPMS.os)   
+ Complain when a required tool is not available
+ Increase generation speed by using filecache better (processing per repo vs per metadata)
+ Make .sha1sum also use filesizes
+ Renamed RPMS.local to RPMS.custom (is this better ?)

### Reporting utility
+ Add option to generate a report of recent additions (repoview already has this)

### Configuration
+ Allow to specify rsync/lftp options on a per distribution basis
+ Get rid of iso= and allow each repo to include ISOs (eg. file:///mnt/iso/*.iso)
  This would be very useful to have a separate gfs, lacd, rhaps, rhds2 CD repo
+ Add more working distributions to yam-complex.conf
+ Allow multiple dist sections (if arch is different)
  Python requires unique names, but we could add arch to name [rhel4as-i386] to override arch

### Usability
+ Create information about repository-updates in HEADER.shtml/README.shtml
+ Think of a way to get rid of older/obsolete updates
+ Add cron-script for automatic updating
+ Generate sample yum.conf and apt .list files for people to use
+ Generate yam-chain.conf for more easily chaining Yam servers
+ Would like to display only file-transfers, sadly rsync/lftp do not allow that
+ Make 'name=' not mandatory (if missing, make it pretty using nick, release and arch)
+ Add selinux support

### Web front-end
+ Improve SHTML output (more condensed and useful information)
+ New website should contain nice logo, menu and help
+ New website should contain also remote boot info, repo information and new RPMs
+ Allow to add external html generators (repoview, repojanitor)

### Documentation
+ Add integration/documentation with ISC dhcpd
+ Add documentation about chaining Yam servers
+ Add a yam and yam.conf manpage
+ Comment the code more (pydoc strings)

### Internal python
+ Improve the copy/symlink/rename functions, using exceptions
+ Mirroring code should be in a separate class
+ Repositories should go in seperate classes
+ File-operations may need to go to a separate class, use shutil ? (needs python 2.3)
+ Arguments are ignored, do something with them
+ Improve the remove and symlink stage (combine the check of existing links with creating and removing)

### Bugs
+ basegendir stumbles on broken symlinks (Apt already fixed upstream, thx to Panu)
+ yum-arch stumbles on broken symlinks (https://devel.linux.duke.edu/bugzilla/show_bug.cgi?id=280)
+ Correct file permissions/ownerships of packages in /var/yam (add umask option)

### Yamgen tool / repository metadata
+ Replaces basegendir, createrepo and yum-arch
+ Creates rsyncable bzip2 and gzip data
+ Uses 1 cachedir for all generation
+ Writes out all repository metadata in 1 cycle
+ Complains when files are damaged or unsigned
+ Creates a directory checksum to check for changes
+ Allow to generate x revisions of older packages (default to 2)
+ Self-contained (1 single file) but usable as module
+ Works on python 2.2.3 (RHEL3)
+ Understands directory layout, ie.
    if RPMS.repo is provided, use it as a base for all metadata
    if repo is provided, create symlinks in dirname() for RPMS.repo
+ Also see: http://people.redhat.com/laroche/pyrpm/

### Yamenu tool / remote installation
+ Create small curses tool to manage systems / MAC-addresses / profiles (kickstart)
+ Generate remote syslinux menu to boot any of the available dists
+ Look into providing bootsplash like SuSE
+ Generate a dnsmasq-yam.conf if dnsmasq is installed/running(?)
+ Add default kickstart integration (files/location)
+ Add default AutoYast integration (help needed)
+ Adapt to make Mandrake/SuSE work too (help needed)
+ Add CSM support

### Yampxe tool
+ Generates necessary PXE config-files and allow for 3rd party boot-images

### Yamusb tool
+ Create a bootable USB stick and allow for 3rd party boot-images
