Seems to me that a sensible model is: x.y.z X is a truly major, ground-shaking architectural change, quite possibly breaking backwards compatibility. Y is a significant feature addition. Z is a minor release: a bugfix, or performance enhancement, for instance.