tehgeekmeister’s blog

March 18, 2008

how to grok a multi-file project?

Filed under: programming — Tags: , , — tehgeekmeister @ 12:38 am

i’ve decided that my next step in learning haskell and programming will be to get familiarized with and start contributing to a few open source projects.  the ones i’m most interested in and feel the most capable to use/contribute to in any way are yi and happs, and to get started i’ve built and looked around the source of both of them a bit: but i’ve found it very difficult to get oriented in projects of this size.  being that the most complicated things i’ve ever coded are somewhere along the lines of maybench or trivial exercises, i’m not used to figuring out where to start or how to go about understanding larger projects.  so, if anyone out there (hi planet haskell!) has any suggestions for how to get acquainted with a larger project, or can help in any other way, it’d be muchly appreciated.  even better if you’re involved in the development of either yi or happs and would be willing to answer some questions/point me in the right direction until i’m up to speed and able to contribute on my own!

p.s.: one idea i’d had was to attempt to document both projects, seeing as they both are in need of more documentation, and i’d absolutely have to become intricately familiar with the source in order to do that — but the problem remains of how to manage the complexity of a multi-file project, where one starts in order to figure out the whole contraption.


  1. This is how I documented Hoogle: http://www.cs.york.ac.uk/fp/darcs/hoogle/docs/module_layout.svg

    I would recommend trying to do something like that for the projects, its very useful documentation

    Comment by Neil Mitchell — March 18, 2008 @ 3:13 am

  2. When I try to understand code, I indeed start to document it, or if I feel it’s necessary clean it up while I go. I think this works rather well.

    Comment by Thomas — March 18, 2008 @ 4:20 pm

  3. Happs is a notoriously complicated program that uses the most advanced and confusing features of Haskell. It’s probably not an easy place to get started.

    Comment by solrize — March 19, 2008 @ 12:26 am

  4. neil: that seems like a good way to get a grasp of the dependencies between modules. thanks! i might even make a little two part program that consumes a source tree (first part) and then from the dependency graph generated from that generates a diagram (second part), as this could be useful for a lot of people in various languages (and it could be made language agnostic if the parsing/dependency graph generation is separated from the rest of the functionality).

    thomas: thanks, i think that’s what i’ll be doing with the two projects, as i think that’s what i’m best capable of doing at this point. once i’ve gotten some progress with documentation, then i might be able to use/contribute to the projects.

    solrize: i was aware that happs is doing some very sophisticated things, but i was not aware that they were using more difficult aspects of haskell. what sort of advanced/confusing features are they using? do you think it’d be an okay project to work on documenting/playing around with, just to learn from, or is it complicated enough i might not want to even bother with that? in the end, i’m more interested in using happs than contributing — while i’m really fascinated by the project, i don’t think it’s anywhere near my ability to contribute quite yet — but i’d still like to attempt to understand it, in hopes of being able to both use it better and contribute in the future.

    Comment by tehgeekmeister — March 19, 2008 @ 12:34 am

RSS feed for comments on this post. TrackBack URI

Leave a Reply to Thomas Cancel reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

Create a free website or blog at WordPress.com.

%d bloggers like this: