Digital cameras by their nature should be infinitely flexible. But the camera makers sell them with a given set of features. What if you want other capabilities? If the digital camera makers were the sole determiners we'd be stuck with the features they design into the cameras. Fortunately many people have worked out ways to change the capabilities of digital cameras.
CHDK "is a firmware enhancement that operates on a number of Canon Cameras. CHDK gets loaded into your camera's memory upon bootup (either manually or automatically). It provides additional functionality beyond that currently provided by the native camera firmware."