Creating documentation is a boring task for developers. They tends to write codes rather than documentations. Lack of documentations is one reason why applications become harder to maintain in the future because the writer of the code often doesn't have a coding standard guide which is understandable by other writers.
Carla Schroder has written a nice article about a tool which can help developers to create documentation automatically. It's called Doxygen and of course, it's open source. It's included in almost every Linux distribution, so you won't have problem finding it. It has wide range of programming language support, including C++, C, Java, Objective-C, Python, IDL (Corba and Microsoft flavors), Fortran, VHDL, PHP, C#, and to some extent D.
Even with a minimal efforts, you can create a nice web-based documentation or even in UNIX manual page format. Have a look on Carla's article or Doxgen's article