The path I've been using is basically using the tor spec and implement it. I'll also say that, for C, Tor is pretty clear, so the source can be used to clarify the docs.
Other things that might be useful for warm-up purposes:
(1) Right now the test executable is pretty just a hard-coded 'wget' that runs through Tor. If we could expand it to be an analogue of the traditional Tor binary, that'd be cool. It'd mean figuring out how to pull in the existing options via command line arguments and/or config files, and then extending haskell-tor to allow some of the same flags normal-tor has.
(2) Running hpc over the source code while running the test suite, and then finding tests to run on the uncovered bits would be great. Theoretically the library is well set up for building up fake, internal test networks and then running higher-level tests, too. This needs to be done.
(3) There's some stuff in the Tor spec about reporting bandwidth usage when publishing node descriptions. I think you could just add a wrapper around the network stack argument and come up with something pretty clean, awesome, and simple, but again ... needs to be thought out and done.
(4) Flow control! I put a little bit of flow control stuff in, but I suspect it might be wrong. But at least you'd have some existing stuff to start from.
Those seem like the easiest four to jump on, if you don't want to start adding core features as your first step. :) And certainly the first two are going to be priorities for me, as soon as I fix a couple early issues people have submitted and get a chance to put more time into it.
- Adam