[openstack-dev] [trove] Start to port Trove to Python 3 in Mitaka cycle?

Victor Stinner vstinner at redhat.com
Thu Feb 18 14:42:24 UTC 2016


Le 18/02/2016 14:15, Amrith Kumar a écrit :
> Let's definitely discuss this again once you have all the changes that you feel should be merged for Mitaka ready.

I don't like working on long patch series. In my experience, after more 
than 4 patches, it's more expensive to maintain the patch serie than to 
write patches. So I prefer to work on few patches, wait until they are 
merged, and then write following patches.

I'm not going to write dozens of patches. I suggest to do as I done in 
the paste, make progress with baby steps :-)

For example, my first change only changes the py34 test environment in 
tox.ini, it cannot break anything on Python 2, and it's enough to fix 
"tox -e py34". It is not in conflict with any other pending change.
https://review.openstack.org/#/c/279098/

 From this point, we can add a voting gate to be able to validate 
following Python 3 changes.


 > What I would like to avoid is a dribble of changes where we don't 
know how much more we have coming down the pike.

You have to be prepared for dozens of small patches. It only depends on 
the size of your project (number of code line numbers) :-)

To have an idea, you can see the Cinder blueprint which has an 
exhaustive list of all changes made for Python 3:
https://blueprints.launchpad.net/cinder/+spec/cinder-python3

I counted 100 patches between June 2015 and February 2016.

FYI with all my pending patches for Cinder (only 4 changes remain), all 
unit tests will pass on Python 3!

It also gives you an idea of the time frame: it took me 9 months to port 
Cinder unit tests to Python 3. So more than a single OpenStack cycle (6 
months).

Since the port is long and painful, I would like to start as soon as 
possible :-)


 > And while your changes may be "low risk", it does mean that if they 
merge now, the large feature sets that we have committed for this 
release will have to go through the cycle of merge conflicts, rebasing, 
code review, gate ... and so on.

The principle of technical debt is that the price only is only 
increasing if you wait longer :-) Merging Python 3 today or tomorrow 
doesn't solve the problem of merge conflicts :-)

It's really up to you to decide to "open the gate" for the flow of 
Python 3 patches, it's also up to you to control how much Python 3 
changes will merged. I can only offer my help to port code. I don't feel 
able to decide when it's the best time to start porting Trove ;-)

By the way, Gerrit provides a great "Conflicts With" information! It 
also helps to decide if it's ok to merge a Python 3 change, or if it's 
better to focus on the other changes in conflict.

Victor



More information about the OpenStack-dev mailing list