hwd -- The How We Doin'? project tracking tool
hwd [options] schedule-file(s)
--nextid Display the next highest task ID --todo Displays tasks left to do, started or not. --started Displays tasks that have been started --started=person Displays tasks started by person --tasks Displays tasks sorted by person --tasks[=person] Displays tasks for a given user --burndown Display a burn-down table --wrap=n Wrap output at n columns, or 0 for no wrapping. Default is 72, or terminal width if available. --csv Output in CSV format --nonotes Omit the notes from the output --strict Die on problems in the input file (default) --nostrict Print output even if there are non-fatal errors -h, --help Display this help -H, --man Longer manpage for prove -V, --version Display version info
Limit the dump of tasks to only those that are left to do, whether or not they've been started.
Shows what tasks have been started by the person specified, or by everyone if no one one is specified.
Ape is working on... 104 - Add FK constraints between FOOHEAD and BARDETAIL (2/2) Chimp is working on... 107 - Refactor (1/1)
Shows the list of tasks and their status sorted by user. If a person is specified, only the tasks for that person will be shown.
Shows the next ID available.
Print a "burn down" graph:
YYYY/MM/DD Total Todo 2005/07/15 100 98 2005/07/17 100 77 2005/07/18 100 75 2005/07/19 100 70
That is, how fast is the amount of work left "burning down" to zero?
--strict is on and hwd will not print output if there are errors in the input. You can use the
--nostrict for when you're getting your first schedule pulled together and don't mind the errors and the inaccuracies they cause, in the name of seeing some output.
Display version info.
The HWD file format is intentionally very simple. It's designed to be usable in plain ol' text editors, and merge easily in a version control system like Subversion.
The order of lines in the file are significant, except for work lines that correspond to a numbered task.
The core of an .hwd file is the task line. Each task line corresponds to one task. Here are some sample task lines:
-Report printing --Data entry screen (4h, #101) --Data entry validation (6h, #102) Needs to handle Canadian postcodes, too. --Data marshalling ---Design temp tables (2h, #67, added 2006-01-05) ---SQL queries (4h, #103) --Report generation ---Install Report-o-gram (2h, #105, deleted 2006-02-08) Not needed for this project. We'll work with what we have. ---Write report code (2h, #106)
The number of dashes before each line indicate the depth in the work outline. The text up to the parentheses is the name/description of the task. Lines beginning with whitespace are notes (see below).
The parenthetical block is control information for the task, and may include any of the following, separated by commas, in any order:
The task number is an optional, unique, arbitrary, numeric key for the task. If you're not doing task tracking, you don't need one. The task number must match
Estimated amount of actual work to be done on the task. Rollup tasks, or tasks with subtasks, may not have time estimates on them. Times must match
/^(\d+\.)?\d+h$/ for hours, or
/^\d+m$ for minutes.
Tells the date the task was added to the schedule
Tells the date the task was deleted from the schedule. Note that it appears in the file, but if you just delete the line from the file, you won't have that history to tell that your amount of work went down.
Any line that starts with whitespace is seen as a note for the task immediately preceding it.
Any line that begins with a
# is a comment in the file, and is ignored during processing.
If you want to use hwd as just an outliner/scheduler, that's fine. However, you can then put your work entries into the .hwd file and have hwd tell you how you're doing on the project.
Work is recorded with work lines that follow this format:
Who Date Task# Time X?
All fields are separated by whitespace, and the Who column cannot contain spaces. The optional
X tells whether the task was completed or not.
Here are some examples.
--Do some stuff (#105) --Do some other stuff (#253) Arlo 3/09 105 3h Arlo 3/09 253 15m X
Arlo worked on March 9th on task 105 for 3 hours, and then on task 253 for 15 minutes, and completed it. At this point, task 105 is open and 253 is closed.
Later, we find these work entries.
Arlo 3/10 105 2 X Arlo 3/10 253 5
Arlo finished up 105, but found bugs in task 253 and went back to work on it. Now, task 105 is closed, and 253 has been re-opened because more work was done on it without having been completed. Note that without specifying "h" for hours or "m" for minutes, hwd assumes hours.
It's not necessary to have numbered tasks to use the work tracking. If you don't want to hassle with numbering, you can use the magic task number of
^ (caret) to apply the work to the most recent task in the file. For example, our previous examples could have been written as
--Do some stuff (#105) Arlo 3/09 ^ 3 Arlo 3/10 ^ 2 X --Do some other stuff (#253) Arlo 3/09 ^ .25h X Arlo 3/10 ^ 5h
Note that for unnumbered tasks, the relative order of the lines is important so that the work is applied to the appropriate tasks. For numbered tasks, tasks and work can appear in any order. Also, you can combine numbered and unnumbered, so that you can have:
--Do some stuff (#105) --Do some other stuff (#253) Arlo 3/09 105 2 X Arlo 3/10 ^ 5 Arlo 3/10 105 15m X Arlo 3/09 ^ 3
--burndown flag gives totals as they happen. I want them to give a Monday-morning total since I like to plot weekly, not daily.
Please use the CPAN bug ticketing system at http://rt.cpan.org/. You can also mail bugs, fixes and enhancements to
<bug-app-hwd at rt.cpan.org>.
<andy at petdance.com>
Copyright 2006 by Andy Lester
<andy at petdance.com>.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.