Introduction

todo is a program to keep track of a todo list. Most of the time, todo lists are just text files. However, when a project is spread over a long time (i.e. a free project), the todo list becomes much more detailed than it would be for a project one works on full-time. Thus, the todo list becomes much bigger and maintaining the list becomes a task of its own.

A todo list is also useful for other tasks. For example, a changelog is just a todo list with all items completed. A changelog and a todo list are also good sources of documentation. They usually contain known/fixed bugs, features of a program (even in a chronological and thus causal order, which makes a good outline for a manual) along with other information. Another use for a well-maintained todo list is as a progress report. When your boss asks you what exactly you did this week on such and such project, you just open up todo and run a query. I find this particularly useful at work, where I give a progress report every week. Since I've started using todo, my reports are more detailed than I would bother to write up at the end of the week.

todo is itself a very simple implementation, just a hack to get something working. So, if you see very ugly code in it, it's either made that way for fun (the query code), or I just didn't bother doing it right. I know that it's all so wrong, it will change when I have some motivation to do more work on it.

Installation

There is no installation required. Just make sure mozilla or links is in your $PATH and run todo.

Compilation

Compilation is a bit cumbersome. It uses some packages from my other projects. The dependency graph is:

Once you have everything downloaded and made (and the paths in Makefile set up), just
make
should do it :)

Download

Here are the items you will need to download. That's some list, isn't it. Luckily, you only need the first one if you are not going to compile.

Usage

todo uses an html interface. It has a simple web server ripped off from another project of mine. todo will fork() and execute a browser to display it's output.

the complete syntax for it is:

todo [-n|-m|-g] [port] filename
or
todo -c filename
There's no way to delete something or edit a previously entered entry, don't look for it.

A todo file consists of records. A record consists of entries. A record corresponds to a job (to be/) done and an entry corresponds to the description of the status achived on the job.

todo let's you categorize records using tags. A record may have any number of tags associated with it. If you want to view only records that have a tag, enter 't=tag' at the filter textbox. See here for more information on filters.

The todo file format was designed so that it's very easy to transport the database. So if you need to carry the todo list around, just copy the file. todo could also be implemented to use an SQL server instead of a text file and be much more elegant but that would not permit me to copy todo files around easily.

See Also

If you are interested in improving todo, please see the TODO file for more info. Even if you are a beginner in C, you can do a lot since the code is not complex at all. You can email any comments/questions to cinarus at yahoo dot com.
Hosted by www.Geocities.ws

1