When you start a new project everything is perfectly logical, 0.x means that it is not stable and the api might change. Then you release 1.0 and the api is supposed to be stable. Then 1.1, 1.3 should just be incremetal changes.
But then you want to start the work on version 2. Version 2 will have some major changes and be incompatible with 1. Where is this work supposed to go?
Some options:
- Put it in version 1.x, this is just wrong because 1.x is supposed to be an evolution from 1.0.
- Start versioning from 0 again with a different name, e.g. Foo2 0.1, then when you are done rename it back to Foo 2.0.