title: How does one go about understanding GNU source code?
body: <p>I'm really sorry if this sounds kinda dumb. I just finished reading K&amp;R and I worked on some of the exercises. This summer, for my project, I'm thinking of re-implementing a linux utility to expand my understanding of C further so I downloaded the source for GNU tar and sed as they both seem interesting. However, I'm having trouble understanding where it starts, where's the main implementation, where all the weird macros came from, etc. </p>
  
  <p>I have a lot of time so that's not really an issue. Am I supposed to familiarize myself with the GNU toolchain (ie. make, binutils, ..) first in order to understand the programs? Or maybe I should start with something a bit smaller (if there's such a thing) ?</p>
  
  <p>I have little bit of experience with Java, C++ and python if that matters.</p>
  
  <p>Thanks!</p>