Chapter 1. Introduction


The average software project -- any project, really -- covers a great many items of a similar nature: bug reports, functional requirements, wish-list requests, help requests, use cases, etc. A tool which could help track these issues automatically would be a great boon, and indeed many tools have sprung up to cover the defect-tracking angle; Gnats, Bugzilla, and others do a fine job.

Unfortunately, these tools, while very capable, can be extremely confusing to install, often requiring cooperation by the system administrator to set up a user account dedicated to the tool, edit files requiring root access, require a dedicated webserver or socket, etc. This prevents many excellent tools from being adopted by the casual software developer, because the conceptual entry fee is just too high.

Yaktrack aims to combat this by creating a small, simple, lightweight issue-tracking database. "Issues" here mean those items you'll be tracking (like bug reports or functional requirements). The issues are stored in a directory structure referred to as a repository -- essentially, just a directory tree with separate directories for the templates you'll be using and each type of issue.

Yaktrack defines issue types by using templates. Templates are simply regular ASCII files containing a description of the issues to be tracked in the format of an XML (Extensible Markup Language) Document Type Definition, with a few constraints. Yaktrack issues, for example, cannot contain repeating or optional groups of subelements, can only handle enumerated and textual attributes for elements, can only consist of one element per template, and must have an "#IMPLIED" attribute of the root element named "yaktrackid". And if all that was total gibberish to you, don't worry -- yaktrack templates are easier than they sound, and the stock distribution comes with several examples.

Yaktrack offers three different interfaces to the repository backend:

Command-line tools. The average software developer under Linux is comfortable with command-line tools, and as such, yaktrack's primary interface is through the command line. Like CVS, the yaktrack command-line tools are hierarchical, meaning that you'll type yaktrack file to file a new report, or yaktrack cat to list a report. At each level, if you type an incomplete or invalid command, the software will let you know and provide a brief synopsis of the tool.

Email gateway. While access to databases and commands via email is becoming rarer, it's still a potentially valuable way to do business. Yaktrack provides an email gateway pipe which, when fed RFC 822-style email messages, treats the subject line as a command line and the body of the message as a submitted file, allowing you to perform many command-line tasks (listing issues, submitting issues, querying, etc.) via email.

CGI gateway. The idea of setting up a CGI gateway for bug-tracking or help-desk requests is getting very popular. Yaktrack provides a suite of CGI scripts which allow you to do just that, taking HTML templates and modifying them as necessary to allow almost any yaktrack activity via the web. The simple HTML templates can be easily modified to provide a custom look and feel to your site, and if you are allowed to run CGI scripts in your own user account, you should be able to set up a yaktrack database in short order.