Re: [OT] Programming - Where to start (Pretty Long)
> So, to make a short story, long... Do any of you gurus have any
> words of wisdom for a good place to start?
Well, it depends a lot on what you want to do. If you want to get more
familiar with the Hurd, I guess the best way is to take your favourite
programs and (i) port them to the hurd, and (ii) add any missing
If you want to learn programming better, you first need to find an
interesting problem to work on. I think it's best to do something
that's not too system specific, but your taste may be different. For
database-like work, figure out what the current state of pgp
keyservers is like (quite miserable, I suspect), join some project or
start your own. Integrate things like path finding, like at
For more systems-level work, rpc-trace is probably an interesting
piece of code to look at, but if you say it's over your head, I guess you
should start with something less hairy.
Support for translators in tar was discussed just the other day. Now
everybody who have looked at the GNU tar source code (I'm not one of
them) have been disgusted, so you probably don't want to hack GNU tar.
However, you may have better luck with the GNU pax
For kernel work, there are various missing or dysfunctional drivers,
like serial drivers (they work, at least for slow bit rates, but
aren't quite good enough for ppp, if I remember earlier discussions
correctly), kernel support for /dev/random, sound cards, framebuffers,
etc. For all of these, you first need to check list archives for
earlier work and people to talk to, and you also need to keep in mind
that for most stuff it's better with a small kernel driver and a
userspace translator that does the rest of the work, than a big kernel
driver with lots of nifty features.
For all of these suggested projects, you don't need to get it right
the first time, you can start hacking away. When you've learnt more
about what the problem is really like, you can start over and put more
effort into getting it right, both technically, as well as in terms of
coordination with other related projects and people.