In programming, canonical means "according to the rules." And non-canonical means "not according to the rules." In the early Christian church, the "canon" was the officially chosen text. In The New Hacker's Dictionary , Eric Raymond tells us that the word meant "reed" in its Greek and Latin origin, and a certain length of reed came to be used as a standard measure. In some knowledge areas, such as music and literature, the "canon" is the body of work that everyone studies.
The terms are sometimes used to distinguish whether a programming interface follows a particular standard or precedent or whether it departs from it.
Also see canonicalization .