In The Art of Unix Programming, Ken Thompson was quoted to have provided the following design rules:

Particularly fascinating was the point on separating mechanisms from policy. The argument is that mechanisms don’t evolve as quickly as policies, hence coupling the two would make it difficult to improve upon the software without breaking the mechanism. Eric gave the example of X, and the survival of X was attributed to its mechanisms (the raster operations) being separated from the GUI implementations, which had been phased out multiple times.