How is cocos2d-x source/API version managed?

I am a newbie of cocos2d-x.

I am curious about the version management of cocos2d-x hosted at github https://github.com/cocos2d/cocos2d-x/. As you may know, the API definitions in cocos2d-x 2.2 is very different from that cocos2d-x 3.0, even 3.0alpha0 and 3.0rc0 are also different:

  1. The building system. 3.0alpha0 is using Makefile directly while 3.0rc0 is using CMake to generate Makefile.
  2. The source tree structure. 3.0alpha0 has a different tree structures.
  3. The API naming and set. It is a major difference. For example, in 3.0alpha0, Object is exposed as a base class, while 3.0rc0 isn’t.

So why does it have so many differences between two similar version? It might take much more effort to maintain two kinds of API, source tree at the same time. Why not to unify them into one?

Any comments are appreciated!

As the name implies alpha version API is subject to change. There are two versions which are being maintained. 2.x and 3.x. So 3.0rc0 was just a latest version of 3.x so you should ignore the alpha