The Etherington and Roberts Dictionary (reference 10) states that colour fastness is: "That property of a pigment or dye, or the leather, cloth, paper, ink, etc., containing the coloring matter, to retain its original hue, especially without fading, running, or changing when wetted, washed, cleaned; or stored under normal conditions when exposed to light, heat, or other influences."
Essentially, this means that different dyes will have different fastnesses on different materials. For example, linen is much harder to dye than silk or cotton (although indigo dyes both cotton and linen well- see later). A dye which works well on leather will probably not be suitable for wool.
Running occurs principally during washing and exposure to detergents and solvents- everyone knows what happens if a red sock or blue pants are accidentally put in a white wash. Often it takes many washes for an article of clothing to stop leaching dye during the wash, but by that time, it may be so faded that you wouldn't want to wear it anyway!
A dye will run if it has a weak affinity for the material it is attached to, or a much stronger affinity for a non-aqueous solvent. Detergents may cause running because they help to stabilise the hydrophobic regions of dye molecules due to their ability to form micelles.
Nowadays, dyes are specifically designed to bind strongly to the fibres of cloth, to minimise running. For example, Cibacron F, a fibre-reactive dye produced by CIBA-Geigy Ltd11, and Procion MX, produced by ICI. Find more on the Fibre-Reactive Dyes page.
Fading is caused by the chemical alteration of unstable dye molecules to a less strongly coloured or colourless form. This is often caused by the action of sunlight, or by the oxidising action of the atmosphere10. The UV radiation in sunlight has enough energy to cause unstable bonds to break or reform. Oxygen and atmospheric water will react with unstable bonds to alter the structure and affect its colour. There is no way to stop an unstable dye from fading.