Another possibility (more developer-friendly in my opinion) could be:
* increase minor version with each feature release (currently expected
each six months).
* increase major version / reinit minor version with each core feature
removal [1] (e.g. serialization, finalizers).
My two cents,
Daniel.
[1]: Never say never.