Announcing Fedora Tracker -- comments?
brads at redhat.com
Wed Mar 24 23:12:51 UTC 2004
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
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:
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:
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
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
- 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
- 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!
More information about the fedora-devel-list