I am sure when a person, especially a novice programmer, downloads a open source software package and decompresses it, he will get shocked by the many and complex directories and files of different kinds, and he won't know where to start reading and analyzing that project. Actually, large projects usually organize those directories and files in a structured way. It is called a souce code tree, which is a hierarchical directory structure. Those directories are named in a typical way in most cases. Here lists some common subdirectory names and their meanings.
src | Source code |
TLD | Root of Java souce code |
main | Source code for the main part of the program, usually platform-independent |
[program-name] | Source code for [program-name] |
lib | Source code for library |
[lib-name] | Source code for [lib-name] |
common | Code elements shared between applications |
include | Common C and C++ header files |
doc | Documentation |
rc / res | Resource (such as bitmaps, icons, etc) |
arch | Code specific to a given processor architecture |
os | Operating system-specific code |
CVS / RCS / SCCS | Revision control system files |
build / compile / classes / obj / Release / Debug | Compilation directory |
tools | Tools used during the build process |
test | Test scripts and input and output files |
conf | Buildtime configuration information |
etc | Runtime configuration information |
eg | Examples |
bin | Depository for executable files and shell scripts |
contrib | User-contributed tools and code, usually maintained outside the main project |