pulp/pulp-smash

Switch from date-based versioning to semantic versioning

nixocio opened this issue · 3 comments

Pulp Smash currently uses a date-based versioning scheme. A new version is released every Thursday, with version numbers like 2018.06.07. Let's switch to semantic versioning. Let's do this after all Pulp tests have been moved out of Pulp Smash and into other repositories.

This will require bumping the version epoch. That is, a 1! will need to be prepended to the current version.

I recommend we take a look at the OpenStack pbr package, which helps managing semantic versioning based on git tags, and generates the changelog and all the stuff.

https://docs.openstack.org/pbr/latest/user/features.html

I recommend against the use of pbr for version management, for a couple reasons.

First, it's a new dependency. Each additional dependency makes Pulp Smash harder to learn, buggier, and harder to package.

Second, it significantly complicates the packaging machinery. It adds a layer on top of the well understood setuptools packaging machinery, while still requiring that the user understand how the underlying packaging machinery would work without pbr. It also overrides the build_sphinx command, it requires the use of git, it adds a setup.cfg file that's less flexible than setup.py while containing the same information, and so on.

Third, it implements several misfeatures. For example: it requires requirements.txt and optionally requirements-py3.txt to specify dependencies. See: setup.py vs requirements.txt. I'm also suspicious of its auto-generation of MANIFEST.in file and its auto-generation of the changelog from git (which means it's impossible to amend changelog files without changing existing git history).

If we're going to put effort into complicating the packaging machinery, I'd suggest looking into something like pipenv instead. It has a clear value proposition and is made by the well-respected Kenneth Reitz.