All, About six months ago, as the result of a conversation on IRC, I began playing with the idea of a "tracker" for Fedora: Something to tie together the many apt and yum repositories out there into a single, simple to use framework. There is, of course, a great deal of software available for Fedora outside of the core package set. But the question I kept running into was "How do I figure out which repository, if any, has the package I'm looking for, assuming I even know the name of the package in the first place?". None of the answers to this question that I'd come across were really satisfactory. They either required me to already have a comprehensive list of third-party repositories (synaptic) or were too general (google, rpmfind, etc). So, partly to scratch this itch and partly to teach myself Python, I started work on a tool for easily indexing and searching Fedora repositories. I've been quiet about things because until now the Fedora Tracker was mostly an educational project. But it's now at a point where I think it could be of use to others and I'd appreciate some constructive criticism. I'm announcing it on this list instead of fedora-list because I'd don't know how much traffic my webhost can handle and I'd like to stress-test it with a smaller group of well-clued people first. The url is: http://academy.phpwebhosting.com/cgi-bin/tracker/tracker.py Since this is my first python project, any feedback regarding the quality of the code would also be appreciated. I figured out a lot of this stuff, like how to dissect the rpm headers, "by ear", so no doubt there are many places where my approach could be improved upon. Should anyone care to peruse it, the code is available here: http://academy.phpwebhosting.com/tracker/tracker-2004032400.tar.bz2 The app basically consists of two components: The web-based frontend allows users to search indexed repositories and submit repos for indexing. Another tool called tracker-process.py runs as a cron job and pulls down the headers for each queued repo, storing that info in the database. There is more that I plan to do, but since my work at Red Hat is unrelated to the Tracker project (or development of any sort) how soon I can do more is dependent upon how much free time I have (not much at the moment). That said, here are the main items on my TODO list: - Support for repo-side configuration. I would implement this by having tracker-process.py look for a "tracker.conf" file in the headers or base directory of a repo. By modifying this file, the administrator of a repo could specify a list of mirrors for the repository, alter the repository description, indicate when the repo should be re-indexed, etc. - Support for updating a repository that has been indexed (see above) - Support for storing a list of mirrors for a repository (see above) - Support for the proposed common XML-based metadata format (http://linux.duke.edu/projects/metadata/readme.metadata) - Improvements to the searching mechanism, such as protecting quoted strings (currently the search is either done as a series of AND'ed keyword matches or as one big regex match). - Ability to display dependencies (for the life of me I cannot figure out how to interpret the dependency data in the rpm headers). Any reference to documentation would be appreciated. - Improvements to the user interface. For example, currently if a search yields multiple versions of the same package they are all listed. When I have some time I'm going to change this so that packages with multiple versions/architectures are displayed under one package name and only expanded when the package is selected. - Index Fedora Core packages. Currently this is a problem because the default repository is too busy for tracker-process.py to be able to reliably index it. Once support for mirrors is set up, this should not be a problem. Alternately, I could just index a mirror and then change the url in the database. =;) - Comment things more thoroughly and convert existing comments to pydoc or similar - Re-arrange files so that the url is more accessible - Whatever else comes to mind or is suggested to me =;) Thanks to everybody who helps make Fedora such a fun distro to use! --Brad