Slicer includes several different types of files, stored in different locations.

The Slicer core Tcl source files are in 3 subdirectories of the slicer2/Base/tcl directory, depending upon their use.
Tcl Source Files
slicer2/Base/tcl/tcl-main
These are the files Slicer must have to run.
slicer2/Base/tcl/tcl-modules
These files are optional, and each one implements a specific function in Slicer. These Tcl files are called modules.
slicer2/Base/tcl/tcl-shared
These files implement functionality that multiple modules may share. For example, generally helpful procedures or new widgets are here.

VTK classes that are part of the core of Slicer are in the slicer2/Base/cxx directory.
C++ Source Files
slicer2/Base/cxx
These are the classes that Slicer adds to VTK.
The VTK classes are compiled outside the source tree, in the slicer2/Base/builds/[os-name] subdirectory.

Build Files
slicer2/Base/builds/[os-name]
cmake generated files are at this level.
slicer2/Base/builds/[os-name]/bin
Once built, the shared library files are placed here.
slicer2/Base/builds/[os-name]/cxx
The generated, Tcl-wrapped, cxx files are placed here, as well as compiled object files.

We are migrating towards a more independent module structure, populating the slicer2/Modules directory. New modules are added by creating a directory with a name that starts with vtk, such as vtkCustomModule. Full instructions, and an automated script, for adding a new module can be found in that subdirectory.
In each module, there is a tcl subdirectory in which you can place the Tcl files associated with your module. There is also a cxx directory, similar to the Slicer core cxx directory.

Module Source Files
slicer2/Modules/vtkCustomModule/cxx
These are the VTK classes that the Custom Module adds to Slicer.
slicer2/Modules/vtkCustomModule/tcl
Tcl files that implement the GUI and functionality of the module.
slicer2/Modules/vtkCustomModule/builds/[os-name]
Subdirectories are created for each OS on which you are going to build the C++ classes, for example, solaris8.

Scripts to run Slicer and perform useful functions are in the slicer2/Scripts directory.
Shell Scripts
slicer2/Scripts
Useful shell scripts. Read slicer2/Scripts/README.scripts for an overview.
slicer2/Scripts/genlib.tcl
Runs cmake and compiles C++ source code for the support libraries that are necessary for slicer to build (VTK, Insight, GSL, TCL, TK, BLT).
slicer2/Scripts/cmaker.tcl
Runs cmake and compiles C++ source code.
slicer2/Scripts/tarup.tcl
Packages Slicer for distribution.

This website is also in the Slicer source code tree. You may generate the website and Tcl code documentation locally yourself.
Website
slicer2/Doc
This directory contains files used to generate this website.