vmware / vsphere-automation-sdk-python

Python samples, language bindings, and API reference documentation for vSphere, VMC, and NSX-T using the VMware REST API
MIT License
748 stars 311 forks source link

Confusing versioning #184

Closed rapgro closed 5 years ago

rapgro commented 5 years ago

There's a current release tagged as version 6.8.7 and setup.py has 1.4.0, why?

https://github.com/vmware/vsphere-automation-sdk-python/blob/c30a34cd36d261b343a487c47c64a8573ac70a79/setup.py#L8

tianhao64 commented 5 years ago

Hi @rapgro, yes you are right, there is a version mismatch here. The short answer is that we will try to fix this issue when we push bindings out to pypi.

The reason we are having this issue is that originally the python sdk repo only hosted vSphere bindings so we used the vsphere binding version as the sdk version, which was a mistake as vSphere version (6.x.x) doesn't not follow the semantic versioning. Later on we added VMC console and NSX APIs to the sdk. These different products have different release schedules. It doesn't make sense to use any of these product versions as the sdk version. We tried to follow semantic versioning later on but it's already too late as it will be confusing and may overlap with vSphere versions regardless of what we use for the new version(for e.g 1.0.0 or 7.0.0). So instead we tried to following semantic versioning on each individual binding files. A while ago we started to treat the whole SDK as a python package and that's when we added the mentioned setup.py and started with 1.0.0. The rule we are following here is that if any product in the sdk is updated, we will bump the minor version. We have 4 releases so far, thus the version 1.4.0.

AFAIU, the version in setup.py matters more as it is used by pip for install and upgrade. The release versions in SDK repo doesn't matter much as the sdk package is not on pypi yet. It's only used as a snapshot of the repo. I agree it's confusing and against the best practice. We will try to fix this once we push the sdk package to pypi.

rapgro commented 5 years ago

Ok, thanks for the explanation. I don't know then what version to use for an official package review in Fedora, as well for EPEL7 (addon repository for RHEL7 or CentOS7).