[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Project Suggestions



(To the rest of the list: I've included a list of things here that I
feel that *anyone* wishing to hack the Hurd should probably be able to
do.  I'd like to include this text in a getting started page, so
feedback is appreciated.  Especially if someone who's been through
these recently can assess how long they think it should take to do
these tasks)

On Mon, Jun 04, 2001 at 11:57:01AM -0400, Thomas A Langan wrote:

> Basically, IMO I am a quick learner and a good programmer; my
> learning curve is getting up to speed with the actual internal
> implementation of *nix (I have read a book on the design and
> imlementation of 4.4BSD, but looking at code is a different story).

It's important to remember that the Hurd merely looks like Unix.  I
would next expect to find many similarities between 4.4BSD and the
Hurd.

> > Also, I assume that by "1 week or less" you mean 40-60 hours worth
> > of work.  Is this your idea of 1 week?  If not, please clarify.

> Yes, about 40 hours of work would probably be perfect.  I just need
> something to get my hands dirty that will hopefully give me better
> intuition for choosing a project.

There's a few components that you're going to want to learn:

 o How translators work
 o How cthreads work
 o How mig works

I have found the cthreads documentation to be reasonable, but have
found that many examples from other Mach implementations don't work
out of the box.

A good source for documentation is: 
http://www.cs.cmu.edu/afs/cs/project/mach/public/www/doc/tutorials.html

I propose that a good initial project is a set of "hello world"
applications for Hurd programming.  Specific examples:

o A cthreads app that spawns 2 threads and demonstrates mutex locking
o A low level app that passes a number/a string between two mach tasks
o 2 low level apps that find one another's message port and send information
 back and forth.
o Some translators that demonstrate very simple tasks (with and without trivfs)
 - Manipulation of the directory entry the translator is associated with
 - Attaching to multiple entries directly
 - Coping with file IO (eg. cat /translator)
 - Emulating a filesystem hierarchy

The key to these items is simplicity.  Just about every piece of
example code I've seen insists on doing more than one thing.  These
should be useful as a teaching tool both for yourself in a few months
and for others.

Gordon, Marcus, Neal, and Okuji have done small samples of code over
time.  I would collect a bunch of that and try to learn from their
examples.

> > Lastly, where did you look for information first?

Thanks for this answer, it will help us get this information to new
people easier.

Tks,
Jeff Bailey



Reply to: