Re: [openstack-dev] [trove] Start to port Trove to Python 3 in Mitaka cycle?
On 02/18/2016 08:20 PM, Victor Stinner wrote: > I discussed with some Trove developers who are interested to start the > Python 3 port right now. What do you think? Mitaka b3 is just around the corner (in less than 10 days now), so at the end, it doesn't change things much, unless all of your patches are accepted before that. IMO, it's time to get momentum to port things to Py3. I wish it happens. Cheers, Thomas Goirand (zigo) __ OpenStack Development Mailing List (not for usage questions) Unsubscribe: openstack-dev-requ...@lists.openstack.org?subject:unsubscribe http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
Re: [openstack-dev] [trove] Start to port Trove to Python 3 in Mitaka cycle?
Great, so in response to your email (below) and Flavio's email [1], I submit to you that the way to handle this is as we had discussed at earlier meeting(s) and that is to wait for Newton. Thanks, -amrith [1] http://openstack.markmail.org/thread/4uksb3kmhnagoc5a > -Original Message- > From: Victor Stinner [mailto:vstin...@redhat.com] > Sent: Thursday, February 18, 2016 9:42 AM > To: OpenStack Development Mailing List (not for usage questions) >> Subject: Re: [openstack-dev] [trove] Start to port Trove to Python 3 in > Mitaka cycle? > > 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 > > __ > OpenStack Development Mailing List (not for usage questions) > Unsubscribe: openstack-dev-requ...@lists.openstack.org?subject:unsubscribe > http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev __ OpenStack Development Mailing List (not for usage questions) Unsubscribe: openstack-dev-requ...@lists.openstack.org?subject:unsubscribe http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
Re: [openstack-dev] [trove] Start to port Trove to Python 3 in Mitaka cycle?
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 __ OpenStack Development Mailing List (not for usage questions) Unsubscribe: openstack-dev-requ...@lists.openstack.org?subject:unsubscribe http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
Re: [openstack-dev] [trove] Start to port Trove to Python 3 in Mitaka cycle?
On 18/02/16 13:15 +, Amrith Kumar wrote: Victor, thanks for the changes and the patch sets. TL;DR: We've discussed this a couple of times already, once at a Trove meeting[1], once at length at the midcycle, and concluded that post-Mitaka is the right time to merge changes relative to Python 3. Once you have all the changes that you feel should be merged for Mitaka relative to Python 3, let us revisit for sure. -- Longer version -- At this point in the development cycle, the intent is that we work on and submit code for accepted and committed projects for the Mitaka cycle, and bug fixes. Python 3 was not an accepted and committed project for Trove in the Mitaka cycle. This is not the first time when a "low risk" change set for a project will be proposed and someone will want to have it included in the release even at this stage, and I don't believe that it will be the last time. For those who would like to work on the Python 3 port, I believe that like other multi-commit projects, they can cherry pick your code, or make their patches dependent on your changes. I don't believe that a failure to merge these into Mitaka would obstruct their ongoing development. 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. We discussed this matter at some length at a Trove meeting [1], and we discussed it again at the mid-cycle. The comment you reference is the result of that discussion at the mid-cycle. If I had my way, I'd rather hold any spare cycles available to get the project that we wanted in Mitaka (backup to Ceph [2]), which is currently in jeopardy of not making the Mitaka deadlines. Let's definitely discuss this again once you have all the changes that you feel should be merged for Mitaka ready. 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. Once the committed projects for Mitaka have been merged, it may be reasonable to take all of these changes in one set. My experience from other projects is that py3 patches will come and they'll keep coming until the gate is made voting. Requesting the folks working on the py3 port to get all the patches ready before doing proper reviews adds a significant amount of work to the team. In Glance, Py3 patches have always been small and they have not introduced other issues (at least that I can remember). The above is not to ask the Trove team to change the project's priorities but just to provide feedback from other projects. I do recommend, however, to make this a priority for newton if it doesn't make it in Mitaka. The Py3 effort has been huge and it is becoming more and more of an important support to provide. Flavio -amrith -- Amrith Kumar, CTO | amr...@tesora.com Tesora, Inc | @amrithkumar 125 CambridgePark Drive, Suite 400 | http://www.tesora.com Cambridge, MA. 02140| GPG: 0x5e48849a9d21a29b [1] https://wiki.openstack.org/wiki/Trove/MeetingAgendaHistory#Trove_Meeting.2C_Jan_20.2C_2016 [2] https://review.openstack.org/#/c/256057/ -Original Message- From: Victor Stinner [mailto:vstin...@redhat.com] Sent: Thursday, February 18, 2016 7:20 AM To: OpenStack Development Mailing List (not for usage questions)Subject: [openstack-dev] [trove] Start to port Trove to Python 3 in Mitaka cycle? Hi, When I began to work on porting Trove to Python 3, I was blocked by MySQL- Python which is not compatible with Python 3. I tried a big change replacing MySQL-Python with PyMySQL, since other OpenStack services also moved to PyMySQL. But tests fail and I'm unable to fix them :-/ https://review.openstack.org/#/c/225915/ Recently, I noticed that the dependency is now skipped on Python 3 (thanks to env markers in requirements.txt), and so "tox -e py34" is able to create the test environment. So I abandoned my PyMySQL change (I will reopen it later) and started new simpler patches following the plan of my Python 3 blueprint for Trove: https://blueprints.launchpad.net/trove/+spec/trove-python3 In short: (1) fix the Python 3 gate (2) make the Python 3 gate voting (3) port more and more unit tests My patches: trove: "Add a minimal py34 test environment" https://review.openstack.org/#/c/279098/ => fix "tox -e py34", start with a whitelist of the 3 most basic unit tests trove: "Port test_template unit test to Python 3" https://review.openstack.org/#/c/279119/ => port another unit test openstack-infra/project-config: "Add non-voting gate-trove-python34 check" https://review.openstack.org/#/c/279108/ IMHO these changes are simple and the risk of regression is low, but amrith wrote me "thanks for your change set but per last trove meeting, I think this should wait till mitaka is done,
Re: [openstack-dev] [trove] Start to port Trove to Python 3 in Mitaka cycle?
Victor, thanks for the changes and the patch sets. TL;DR: We've discussed this a couple of times already, once at a Trove meeting[1], once at length at the midcycle, and concluded that post-Mitaka is the right time to merge changes relative to Python 3. Once you have all the changes that you feel should be merged for Mitaka relative to Python 3, let us revisit for sure. -- Longer version -- At this point in the development cycle, the intent is that we work on and submit code for accepted and committed projects for the Mitaka cycle, and bug fixes. Python 3 was not an accepted and committed project for Trove in the Mitaka cycle. This is not the first time when a "low risk" change set for a project will be proposed and someone will want to have it included in the release even at this stage, and I don't believe that it will be the last time. For those who would like to work on the Python 3 port, I believe that like other multi-commit projects, they can cherry pick your code, or make their patches dependent on your changes. I don't believe that a failure to merge these into Mitaka would obstruct their ongoing development. 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. We discussed this matter at some length at a Trove meeting [1], and we discussed it again at the mid-cycle. The comment you reference is the result of that discussion at the mid-cycle. If I had my way, I'd rather hold any spare cycles available to get the project that we wanted in Mitaka (backup to Ceph [2]), which is currently in jeopardy of not making the Mitaka deadlines. Let's definitely discuss this again once you have all the changes that you feel should be merged for Mitaka ready. 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. Once the committed projects for Mitaka have been merged, it may be reasonable to take all of these changes in one set. -amrith -- Amrith Kumar, CTO | amr...@tesora.com Tesora, Inc | @amrithkumar 125 CambridgePark Drive, Suite 400 | http://www.tesora.com Cambridge, MA. 02140| GPG: 0x5e48849a9d21a29b [1] https://wiki.openstack.org/wiki/Trove/MeetingAgendaHistory#Trove_Meeting.2C_Jan_20.2C_2016 [2] https://review.openstack.org/#/c/256057/ > -Original Message- > From: Victor Stinner [mailto:vstin...@redhat.com] > Sent: Thursday, February 18, 2016 7:20 AM > To: OpenStack Development Mailing List (not for usage questions) >> Subject: [openstack-dev] [trove] Start to port Trove to Python 3 in Mitaka > cycle? > > Hi, > > When I began to work on porting Trove to Python 3, I was blocked by MySQL- > Python which is not compatible with Python 3. I tried a big change > replacing MySQL-Python with PyMySQL, since other OpenStack services also > moved to PyMySQL. But tests fail and I'm unable to fix them :-/ > https://review.openstack.org/#/c/225915/ > > Recently, I noticed that the dependency is now skipped on Python 3 (thanks > to env markers in requirements.txt), and so "tox -e py34" is able to > create the test environment. > > So I abandoned my PyMySQL change (I will reopen it later) and started new > simpler patches following the plan of my Python 3 blueprint for Trove: > https://blueprints.launchpad.net/trove/+spec/trove-python3 > > In short: > > (1) fix the Python 3 gate > (2) make the Python 3 gate voting > (3) port more and more unit tests > > My patches: > > trove: "Add a minimal py34 test environment" > https://review.openstack.org/#/c/279098/ > => fix "tox -e py34", start with a whitelist of the 3 most basic unit > tests > > trove: "Port test_template unit test to Python 3" > https://review.openstack.org/#/c/279119/ > => port another unit test > > openstack-infra/project-config: "Add non-voting gate-trove-python34 check" > https://review.openstack.org/#/c/279108/ > > > IMHO these changes are simple and the risk of regression is low, but > amrith wrote me "thanks for your change set but per last trove meeting, I > think this should wait till mitaka is done, and we can pick it up early in > newton." > > I discussed with some Trove developers who are interested to start the > Python 3 port right now. What do you think? > > Maybe we can discuss that in the next Trove meeting? > https://wiki.openstack.org/wiki/Meetings/TroveMeeting > (Wednesdays at 18:00 UTC in #openstack-meeting-alt) > > Oops, I just missed the meeting yesterday. I was too slow to write this > email :-) > > Victor > > __ > OpenStack Development Mailing List (not for usage questions) > Unsubscribe: openstack-dev-requ...@lists.openstack.org?subject:unsubscribe >
[openstack-dev] [trove] Start to port Trove to Python 3 in Mitaka cycle?
Hi, When I began to work on porting Trove to Python 3, I was blocked by MySQL-Python which is not compatible with Python 3. I tried a big change replacing MySQL-Python with PyMySQL, since other OpenStack services also moved to PyMySQL. But tests fail and I'm unable to fix them :-/ https://review.openstack.org/#/c/225915/ Recently, I noticed that the dependency is now skipped on Python 3 (thanks to env markers in requirements.txt), and so "tox -e py34" is able to create the test environment. So I abandoned my PyMySQL change (I will reopen it later) and started new simpler patches following the plan of my Python 3 blueprint for Trove: https://blueprints.launchpad.net/trove/+spec/trove-python3 In short: (1) fix the Python 3 gate (2) make the Python 3 gate voting (3) port more and more unit tests My patches: trove: "Add a minimal py34 test environment" https://review.openstack.org/#/c/279098/ => fix "tox -e py34", start with a whitelist of the 3 most basic unit tests trove: "Port test_template unit test to Python 3" https://review.openstack.org/#/c/279119/ => port another unit test openstack-infra/project-config: "Add non-voting gate-trove-python34 check" https://review.openstack.org/#/c/279108/ IMHO these changes are simple and the risk of regression is low, but amrith wrote me "thanks for your change set but per last trove meeting, I think this should wait till mitaka is done, and we can pick it up early in newton." I discussed with some Trove developers who are interested to start the Python 3 port right now. What do you think? Maybe we can discuss that in the next Trove meeting? https://wiki.openstack.org/wiki/Meetings/TroveMeeting (Wednesdays at 18:00 UTC in #openstack-meeting-alt) Oops, I just missed the meeting yesterday. I was too slow to write this email :-) Victor __ OpenStack Development Mailing List (not for usage questions) Unsubscribe: openstack-dev-requ...@lists.openstack.org?subject:unsubscribe http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev