I'd define it as Bitcoin is the blockchain data structure and the set of rules that govern what constitutes a valid block. If you want to change the rules that govern what is a valid block (transactions and block structure) then that is a fork. Anything else is not a fork. The reasoning is simple, these are the rules that govern if a specific chain is valid and thus govern consensus.
Nodes however can operate however they want, as long as they agree on the rules that define a valid block. If some nodes decide on a different set of rules, then they will be forced onto their own chain and lose consensus with the main chain.
Take Gavin's IBLT proposal as an example. This is a major change to bitcoind that changes how nodes communicate blocks to each other. This is not a fork simply because it does not change anything at all about what defines a valid or invalid block. Just the communication of blocks.
If all full nodes don't adopt the change then IBLT doesn't function (or the nodes that don't adopt it, are in a major disadvantage in terms of orphan rate and earnings and thus they fall away), thus it is a hard (i.e. non-optional feature change) fork.
Peter R asked me upthread to explain why I think it is a hard fork. So there is my explanation.