We present an implemented computational theory of the kinematic analysis of mechanisms composed of rigid parts, such as door locks, gearboxes, and transmissions. The computational complexity of kinematic analysis depends on the shapes and motion types of the parts of the mechanism, and is in general intractable. We identify engineering restrictions on the shapes and motion types that make the analysis feasible. We show that most mechanisms satisfy the restrictions by surveying 2500 mechanisms in a standard mechanical engineering encyclopedia. We describe an efficient kinematic analysis program for feasible mechanisms. The input is the shapes and the initial positions of the parts. The output is a concise symbolic description of the mechanism's configuration space, which characterizes its kinematic behavior. The program computes the configuration space by identifying potential degrees of freedom, constructing configuration spaces for all pairs of interacting parts, and incrementally composing the pairwise configuration spaces.