Re: [openstack-dev] [requirements] - taskflow preventing sqla 0.8 upgrade

2014-01-10 Thread Robert Collins
On 5 January 2014 02:02, Sean Dague s...@dague.net wrote:

 So we used to do that the apps against release libraries. And the result was
 more and more full day gate breaks. We did 2 consecutive ones in 2 weeks.

 Basically, once you get to be a certain level of coupled in OpenStack we can
 no longer let you manage your own requirements file. We need a global lever
 on it. Because people were doing it wrong, and slowly (we could go through
 specific examples about how bad this was. This was a top issue at nearly
 every summit I'd been at going back to Essex.
..
 (It was about 14 days to resolve the python client issue, there was a django
 issue around the same time that never made it to the list, as we did it all
 under fire in IRC)

 And we have a solution now. Which is one list of requirements that we can
 test everything with, that we can propose requirements updates
 speculatively, and see what works and what doesn't. And *after* we know they
 work, we propose the changes back into the projects, now automatically.

So the flip-flop thing is certainly very interesting. We wouldn't want
that to happen again.

 I do see the issue Sean is pointing at, which is that we have to fix
 the libraries first and then the things that use them. OTOH thats
 normal in the software world, I don't see anything unique about it.


 Well, as the person that normally gets stuck figuring this out when .eu has
 been gate blocked for a day, and I'm one of the first people up on the east
 coast, I find the normal state of affairs unsatisfying. :)

:)

 I also think that what we are basically dealing with is the classical N^2
 comms problem. With N git trees that we need to all get working together,
 this gets exponentially more difficult over time. Which is why we created
 the integrated gate and the global requirements lever.

I don't think we are - I think we're dealing with the fact that we've
had no signal - no backpressure - on projects that have upper caps set
to remove those caps. So they stick there and we all suffer.

 Another solution would be reduce the number of OpenStack git trees to make
 N^2 more manageable, and let us with single commits affect multiple
 components. But that's not the direction we've taken.

I don't think thats necessary.

What I'd like to see is:
A) two test sets for every commit:
 - commit with latest-release of all deps
 - commit with latest-trunk [or dependent zuul ref] of all deps

B) *if* there are upper version caps for any reason, some signal back
to developers that this exists and that we need to fix our code to
work with that newer release.
  - Possibly we should allow major version caps where major releases
are anticipated to be incompatible without warning about that *until*
there is a [pre-]release of the new major version available

-Rob

-- 
Robert Collins rbtcoll...@hp.com
Distinguished Technologist
HP Converged Cloud

___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [requirements] - taskflow preventing sqla 0.8 upgrade

2014-01-10 Thread Sean Dague

On 01/10/2014 04:13 AM, Robert Collins wrote:

On 5 January 2014 02:02, Sean Dague s...@dague.net wrote:


So we used to do that the apps against release libraries. And the result was
more and more full day gate breaks. We did 2 consecutive ones in 2 weeks.

Basically, once you get to be a certain level of coupled in OpenStack we can
no longer let you manage your own requirements file. We need a global lever
on it. Because people were doing it wrong, and slowly (we could go through
specific examples about how bad this was. This was a top issue at nearly
every summit I'd been at going back to Essex.
..
(It was about 14 days to resolve the python client issue, there was a django
issue around the same time that never made it to the list, as we did it all
under fire in IRC)

And we have a solution now. Which is one list of requirements that we can
test everything with, that we can propose requirements updates
speculatively, and see what works and what doesn't. And *after* we know they
work, we propose the changes back into the projects, now automatically.


So the flip-flop thing is certainly very interesting. We wouldn't want
that to happen again.


I do see the issue Sean is pointing at, which is that we have to fix
the libraries first and then the things that use them. OTOH thats
normal in the software world, I don't see anything unique about it.



Well, as the person that normally gets stuck figuring this out when .eu has
been gate blocked for a day, and I'm one of the first people up on the east
coast, I find the normal state of affairs unsatisfying. :)


:)


I also think that what we are basically dealing with is the classical N^2
comms problem. With N git trees that we need to all get working together,
this gets exponentially more difficult over time. Which is why we created
the integrated gate and the global requirements lever.


I don't think we are - I think we're dealing with the fact that we've
had no signal - no backpressure - on projects that have upper caps set
to remove those caps. So they stick there and we all suffer.


Another solution would be reduce the number of OpenStack git trees to make
N^2 more manageable, and let us with single commits affect multiple
components. But that's not the direction we've taken.


I don't think thats necessary.

What I'd like to see is:
A) two test sets for every commit:
  - commit with latest-release of all deps
  - commit with latest-trunk [or dependent zuul ref] of all deps

B) *if* there are upper version caps for any reason, some signal back
to developers that this exists and that we need to fix our code to
work with that newer release.
   - Possibly we should allow major version caps where major releases
are anticipated to be incompatible without warning about that *until*
there is a [pre-]release of the new major version available


Honestly, I would too. I actually proposed just this at Summit. :) But 
it's a ton of work, that is lacking for volunteers right now. Earliest 
I'm going to look at it is Juno, but I'm not really sure I can really 
commit on this one. And I expect this all by itself needs two or three 
people where this is a top priority.


So consider this a call for volunteers. If you want to be an OpenStack 
hero, here is a great way to do so.


-Sean

--
Sean Dague
Samsung Research America
s...@dague.net / sean.da...@samsung.com
http://dague.net

___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [requirements] - taskflow preventing sqla 0.8 upgrade

2014-01-07 Thread Doug Hellmann
On Mon, Jan 6, 2014 at 6:21 PM, Jeremy Stanley fu...@yuggoth.org wrote:

 On 2014-01-06 17:23:31 -0500 (-0500), Doug Hellmann wrote:
 [...]
  The global requirements syncing seems to have fixed the issue for
  apps, although it just occurred to me that I'm not sure we check
  that the requirements lists are the same when we cut a release.
  Do we do that already?

 Not yet in any automated fashion but keep in mind that we've only
 gotten the requirements update proposal job working reliably this
 cycle, so it could still take some time for the various projects to
 decide how to finish syncing up.


Makes sense. I was just thinking about some of the assumptions we're making
elsewhere in this thread w.r.t. syncing requirements.

Doug



 --
 Jeremy Stanley

 ___
 OpenStack-dev mailing list
 OpenStack-dev@lists.openstack.org
 http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev

___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [requirements] - taskflow preventing sqla 0.8 upgrade

2014-01-06 Thread Doug Hellmann
On Sat, Jan 4, 2014 at 8:02 AM, Sean Dague s...@dague.net wrote:

 On 01/03/2014 08:27 PM, Robert Collins wrote:

 On 4 January 2014 08:44, Doug Hellmann doug.hellm...@dreamhost.com
 wrote:

 It seems safer to gate changes to libraries against the apps' trunk (to
 avoid making backwards-incompatible changes), and then gate changes to
 the
 apps against the released libraries (to ensure they work with something
 available to be packaged by the distros). There are lots and lots of
 version
 numbers available to us, so I see no problem with releasing new versions
 of
 libraries frequently.


 So we used to do that the apps against release libraries. And the result
 was more and more full day gate breaks. We did 2 consecutive ones in 2
 weeks.

 Basically, once you get to be a certain level of coupled in OpenStack we
 can no longer let you manage your own requirements file. We need a global
 lever on it. Because people were doing it wrong, and slowly (we could go
 through specific examples about how bad this was. This was a top issue at
 nearly every summit I'd been at going back to Essex.

 Some reading from the break times:
  * http://lists.openstack.org/pipermail/openstack-dev/2013-
 July/011660.html
  * http://lists.openstack.org/pipermail/openstack-dev/2013-
 July/011708.html
  * http://lists.openstack.org/pipermail/openstack-dev/2013-
 July/012342.html

 (It was about 14 days to resolve the python client issue, there was a
 django issue around the same time that never made it to the list, as we did
 it all under fire in IRC)

 And we have a solution now. Which is one list of requirements that we can
 test everything with, that we can propose requirements updates
 speculatively, and see what works and what doesn't. And *after* we know
 they work, we propose the changes back into the projects, now
 automatically.


  I do see the issue Sean is pointing at, which is that we have to fix
 the libraries first and then the things that use them. OTOH thats
 normal in the software world, I don't see anything unique about it.


 Well, as the person that normally gets stuck figuring this out when .eu
 has been gate blocked for a day, and I'm one of the first people up on the
 east coast, I find the normal state of affairs unsatisfying. :)


I appreciate you going through the details with me.

As I said at the beginning, I'm not opposed to bringing taskflow into the
oslo program at all -- and we can still do that, if Josh wants to,
retaining the existing core review team, permissions, etc. -- but since we
plan to release more libraries over time I want to make sure that we're set
up to handle cases like this where we have access to the developers and
source for a library, but don't call it an openstack library.



 I also think that what we are basically dealing with is the classical N^2
 comms problem. With N git trees that we need to all get working together,
 this gets exponentially more difficult over time. Which is why we created
 the integrated gate and the global requirements lever.

 Another solution would be reduce the number of OpenStack git trees to make
 N^2 more manageable, and let us with single commits affect multiple
 components. But that's not the direction we've taken.


The global requirements syncing seems to have fixed the issue for apps,
although it just occurred to me that I'm not sure we check that the
requirements lists are the same when we cut a release. Do we do that
already?

Doug





 -Sean

 --
 Sean Dague
 Samsung Research America
 s...@dague.net / sean.da...@samsung.com
 http://dague.net

 ___
 OpenStack-dev mailing list
 OpenStack-dev@lists.openstack.org
 http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev

___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [requirements] - taskflow preventing sqla 0.8 upgrade

2014-01-06 Thread Doug Hellmann
On Sun, Jan 5, 2014 at 5:02 PM, James E. Blair jebl...@openstack.orgwrote:

 Joshua Harlow harlo...@yahoo-inc.com writes:

  It seems simple to have variations of venvs (or something similar)
  that taskflow tox.ini can have that specify the different 0.7, 0.8,
  0.9, when sqlalchemy 1.0 comes out then this should become a nonissue
  (hopefully). I will bug the infra folks to see what can be done here
  (hopefully this is as simple as it sounds).

 It is.  See pecan for an example:


 http://git.openstack.org/cgit/openstack-infra/config/tree/modules/openstack_project/files/jenkins_job_builder/config/projects.yaml#n1636


toxgen is another tool that might be useful for setting up your tests. It
tries to simplify creating a tox.ini with variations on different axes
(like changing versions of sqlalchemy but keeping all the other
dependencies the same).

There's source for toxgen at https://bitbucket.org/cdevienne/toxgen and
there's a copy in the WSME tree (I don't know if they're the same) with a
tox-tmpl.ini file to serve as an example.

Doug





 And thanks to Ryan Petrello for setting that system up!

 -Jim

 ___
 OpenStack-dev mailing list
 OpenStack-dev@lists.openstack.org
 http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev

___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [requirements] - taskflow preventing sqla 0.8 upgrade

2014-01-06 Thread Jeremy Stanley
On 2014-01-06 17:23:31 -0500 (-0500), Doug Hellmann wrote:
[...]
 The global requirements syncing seems to have fixed the issue for
 apps, although it just occurred to me that I'm not sure we check
 that the requirements lists are the same when we cut a release.
 Do we do that already?

Not yet in any automated fashion but keep in mind that we've only
gotten the requirements update proposal job working reliably this
cycle, so it could still take some time for the various projects to
decide how to finish syncing up.
-- 
Jeremy Stanley

___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [requirements] - taskflow preventing sqla 0.8 upgrade

2014-01-05 Thread Joshua Harlow
With regards to the futures module it should just work fine with the packaging 
of https://pypi.python.org/pypi/futures which is a backport of the 3.2 
concurrent futures package into 2.6,2.7, so that's the package there.

Feel free to bug me on irc if u want any other help with dependencies, the 
entrypoint failures shouldn't happen (possibly due to this). If u need help 
just bug harlowja on irc or jump in #openstack-state-management where 
others can help to...

Sent from my really tiny device...

 On Jan 4, 2014, at 7:26 AM, Thomas Goirand z...@debian.org wrote:
 
 Sean,
 
 Before everything, I'd like to thank you for insisting in making the
 transition to SQLA 0.8.x.
 
 Since it has been uploaded to Sid, this SQLA 0.7.99 has been without
 any doubt the biggest reoccurring pain in the but with the packaging of
 OpenStack. Without people like you, insisting again and again, I would
 have loose hope that progress could happen in OpenStack! So thanks
 again, Sean.
 
 On 01/03/2014 11:26 PM, Sean Dague wrote:
 Given that sqla 0.9 just came out, I wanted to explore, again, what the
 state of the world was with sqla 0.8 (especially given that Ubuntu and
 Red Hat are both shipping 0.8 in their OpenStack bundles) -
 https://review.openstack.org/#/c/64831/
 
 The answer is not great. But more importantly, the answer is actually
 worse than the last time we checked, which I think gives this some
 urgency to move forward.
 
 For me, it's been urgent since the 6th of July...
 
 SQLA 0.8.2 was uploaded to Sid on the 6th of July. Since then, I've been
 bugging everyone on this list about it, explaining that I have no choice
 but to have Debian packages to support it (since I upload in Sid, and
 Sid has SQL 0.8.x). It seems I still haven't been heard.
 
 Now, we're 6 months after that, and after the release of Havana which
 happened more than 3 months after this, and after everything was fixed
 in all core packages (the last one was heat, at the end of August). So,
 in January 2014, I'm still fixing manually most requirements.txt, which
 still advertize for support of only SQL 0.7.99. I currently have
 fixes-SQLAlchemy-requirement.patch in Cinder, Neutron, and Nova (for
 Havana), just to allow it and stop the software to break because it was
 decided it is the case, even though they perfectly work with SQLA 0.8.
 Some other project have SQLAlchemy=0.7.8,=0.7.99 in the
 requirements.txt, but do not break as badly as these 3 just because of
 the bad declaration that doesn't reflect the reality (that's the case
 for Heat Keystone and Glance, for example).
 
 Something is going extremely wrong here. And seeing the actual result of
 the SQLA transition, I am really leaning toward thinking we have a
 process problem. What I believe is wrong, is that instead of having
 project wide decisions imposing some constraints, we have leaf packages
 that do. Until absolutely all of OpenStack is ready and fixed, then
 there's no constraint applied. This is the thing that must change.
 
 It shouldn't be this way. It should be from top to bottom. While I do
 understand that we do need the gate to be able to continue working with
 all projects at any given time, we still must find a solution so that
 this kind of 6 months transition never happens again. This really goes
 against the culture that we have inside OpenStack, and our common belief
 that things must be able to move fast.
 
 On 01/04/2014 04:13 AM, Sean Dague wrote:
 Because of entry points any library that specifies any dependencies
 that OpenStack components specify, at incompatible levels, means that
 library effectively puts a hold on the rest of OpenStack and prevents
 it from being able to move forward.
 
 That's exactly the kind of *very bad* habits that needs to stop in
 OpenStack.
 
 On 01/04/2014 04:13 AM, Sean Dague wrote:
 The only other option is that libraries we own (stackforge / oslo),
 for condition to be included in global- requirements, *can never*
 specify a maximum version of any dependency (and I really mean
 never), and can never specify a minimum greater than current global
 requirements.
 
 PLEASE !!! Let's do this !!! :)
 
 On 01/04/2014 05:29 AM, Sean Dague wrote:
 It actually tells us that a human, somewhere, decided that their
 software did not work with some combination of other software
 
 Often it's even worse. Sometimes, a human decide that, just it case, the
 software will declare itself incompatible with some non-existent future
 version of another software, even if there's no way to know.
 
 We're even more into sci-fi when we see stuff like:
 
 pbr=0.5.21,1
 
 Monty, did you decide you would release 1.0 with lots of backward
 incompatibility? Has the topic been raised and I missed it??? I'm
 convinced this isn't the case (and let's pretend it isn't, just until
 the end of this message).
 
 So, how does one know that the thing he's using in PBR will be the thing
 that will cause trouble later on? For a version which hasn't been
 released 

Re: [openstack-dev] [requirements] - taskflow preventing sqla 0.8 upgrade

2014-01-05 Thread Clint Byrum
I've skimmed the rest of the thread and not seen something mentioned
that seems like it matters a lot. If I missed this suggestion buried
deep in the ensuing discussion, I apologize for that.

Since TaskFlow wants to be generally consumable and not only driven as
an OpenStack component, it should not be following global requirements.
It should actually expand its SQL Alchemy compatibility to all supported
versions of SQLAlchemy. Ideally it would have a gate for each major
version of SQL Alchemy that upstream supports.

Otherwise it will never even be able to work with any project that
doesn't share its SQL Alchemy version pin.

Excerpts from Joshua Harlow's message of 2014-01-03 08:37:17 -0800:
 So taskflow was tested with the version of sqlalchemy that was available and 
 in the requirements at the time of its 0.1 release (taskflow syncs it's 
 requirements from the same global requirements). From what I remember this is 
 the same requirement that everyone else is bound to:
 
 SQLAlchemy=0.7.8,=0.7.99
 
 I can unpin it if this is desired (the openstack requirements repo has the 
 same version restriction). What would be recommended here? As more code moves 
 to pypi reusable libraries (oslo.db when it arrives comes to mind) I think 
 this will be hit more often. Let's come up with a good strategy to follow.
 
 Thoughts??

___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [requirements] - taskflow preventing sqla 0.8 upgrade

2014-01-05 Thread Joshua Harlow
Agreed, we are going to expand it and work on figuring out how to test against 
multiple versions. It does work with 0.8 and it seems even like 0.9 works fine 
also. But all compatible also means I can't guarantee 0.10 (if it comes out) 
will work since afaik semver means sqlalchemy could still break things when 
it's   1.0. Anyone got a time machine I can use to check the future ;-)

It seems simple to have variations of venvs (or something similar) that 
taskflow tox.ini can have that specify the different 0.7, 0.8, 0.9, when 
sqlalchemy 1.0 comes out then this should become a nonissue (hopefully). I will 
bug the infra folks to see what can be done here (hopefully this is as simple 
as it sounds). 

Sent from my really tiny device...

 On Jan 5, 2014, at 8:22 AM, Clint Byrum cl...@fewbar.com wrote:
 
 I've skimmed the rest of the thread and not seen something mentioned
 that seems like it matters a lot. If I missed this suggestion buried
 deep in the ensuing discussion, I apologize for that.
 
 Since TaskFlow wants to be generally consumable and not only driven as
 an OpenStack component, it should not be following global requirements.
 It should actually expand its SQL Alchemy compatibility to all supported
 versions of SQLAlchemy. Ideally it would have a gate for each major
 version of SQL Alchemy that upstream supports.
 
 Otherwise it will never even be able to work with any project that
 doesn't share its SQL Alchemy version pin.
 
 Excerpts from Joshua Harlow's message of 2014-01-03 08:37:17 -0800:
 So taskflow was tested with the version of sqlalchemy that was available and 
 in the requirements at the time of its 0.1 release (taskflow syncs it's 
 requirements from the same global requirements). From what I remember this 
 is the same requirement that everyone else is bound to:
 
 SQLAlchemy=0.7.8,=0.7.99
 
 I can unpin it if this is desired (the openstack requirements repo has the 
 same version restriction). What would be recommended here? As more code 
 moves to pypi reusable libraries (oslo.db when it arrives comes to mind) I 
 think this will be hit more often. Let's come up with a good strategy to 
 follow.
 
 Thoughts??
 
 ___
 OpenStack-dev mailing list
 OpenStack-dev@lists.openstack.org
 http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev

___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [requirements] - taskflow preventing sqla 0.8 upgrade

2014-01-05 Thread James E. Blair
Joshua Harlow harlo...@yahoo-inc.com writes:

 It seems simple to have variations of venvs (or something similar)
 that taskflow tox.ini can have that specify the different 0.7, 0.8,
 0.9, when sqlalchemy 1.0 comes out then this should become a nonissue
 (hopefully). I will bug the infra folks to see what can be done here
 (hopefully this is as simple as it sounds).

It is.  See pecan for an example:

  
http://git.openstack.org/cgit/openstack-infra/config/tree/modules/openstack_project/files/jenkins_job_builder/config/projects.yaml#n1636

And thanks to Ryan Petrello for setting that system up!

-Jim

___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [requirements] - taskflow preventing sqla 0.8 upgrade

2014-01-04 Thread Sean Dague

On 01/03/2014 08:27 PM, Robert Collins wrote:

On 4 January 2014 08:44, Doug Hellmann doug.hellm...@dreamhost.com wrote:

It seems safer to gate changes to libraries against the apps' trunk (to
avoid making backwards-incompatible changes), and then gate changes to the
apps against the released libraries (to ensure they work with something
available to be packaged by the distros). There are lots and lots of version
numbers available to us, so I see no problem with releasing new versions of
libraries frequently.


So we used to do that the apps against release libraries. And the result 
was more and more full day gate breaks. We did 2 consecutive ones in 2 
weeks.


Basically, once you get to be a certain level of coupled in OpenStack we 
can no longer let you manage your own requirements file. We need a 
global lever on it. Because people were doing it wrong, and slowly (we 
could go through specific examples about how bad this was. This was a 
top issue at nearly every summit I'd been at going back to Essex.


Some reading from the break times:
 * http://lists.openstack.org/pipermail/openstack-dev/2013-July/011660.html
 * http://lists.openstack.org/pipermail/openstack-dev/2013-July/011708.html
 * http://lists.openstack.org/pipermail/openstack-dev/2013-July/012342.html

(It was about 14 days to resolve the python client issue, there was a 
django issue around the same time that never made it to the list, as we 
did it all under fire in IRC)


And we have a solution now. Which is one list of requirements that we 
can test everything with, that we can propose requirements updates 
speculatively, and see what works and what doesn't. And *after* we know 
they work, we propose the changes back into the projects, now automatically.



I do see the issue Sean is pointing at, which is that we have to fix
the libraries first and then the things that use them. OTOH thats
normal in the software world, I don't see anything unique about it.


Well, as the person that normally gets stuck figuring this out when .eu 
has been gate blocked for a day, and I'm one of the first people up on 
the east coast, I find the normal state of affairs unsatisfying. :)


I also think that what we are basically dealing with is the classical 
N^2 comms problem. With N git trees that we need to all get working 
together, this gets exponentially more difficult over time. Which is why 
we created the integrated gate and the global requirements lever.


Another solution would be reduce the number of OpenStack git trees to 
make N^2 more manageable, and let us with single commits affect multiple 
components. But that's not the direction we've taken.


-Sean

--
Sean Dague
Samsung Research America
s...@dague.net / sean.da...@samsung.com
http://dague.net

___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [requirements] - taskflow preventing sqla 0.8 upgrade

2014-01-04 Thread Thomas Goirand
Sean,

Before everything, I'd like to thank you for insisting in making the
transition to SQLA 0.8.x.

Since it has been uploaded to Sid, this SQLA 0.7.99 has been without
any doubt the biggest reoccurring pain in the but with the packaging of
OpenStack. Without people like you, insisting again and again, I would
have loose hope that progress could happen in OpenStack! So thanks
again, Sean.

On 01/03/2014 11:26 PM, Sean Dague wrote:
 Given that sqla 0.9 just came out, I wanted to explore, again, what the
 state of the world was with sqla 0.8 (especially given that Ubuntu and
 Red Hat are both shipping 0.8 in their OpenStack bundles) -
 https://review.openstack.org/#/c/64831/
 
 The answer is not great. But more importantly, the answer is actually
 worse than the last time we checked, which I think gives this some
 urgency to move forward.

For me, it's been urgent since the 6th of July...

SQLA 0.8.2 was uploaded to Sid on the 6th of July. Since then, I've been
bugging everyone on this list about it, explaining that I have no choice
but to have Debian packages to support it (since I upload in Sid, and
Sid has SQL 0.8.x). It seems I still haven't been heard.

Now, we're 6 months after that, and after the release of Havana which
happened more than 3 months after this, and after everything was fixed
in all core packages (the last one was heat, at the end of August). So,
in January 2014, I'm still fixing manually most requirements.txt, which
still advertize for support of only SQL 0.7.99. I currently have
fixes-SQLAlchemy-requirement.patch in Cinder, Neutron, and Nova (for
Havana), just to allow it and stop the software to break because it was
decided it is the case, even though they perfectly work with SQLA 0.8.
Some other project have SQLAlchemy=0.7.8,=0.7.99 in the
requirements.txt, but do not break as badly as these 3 just because of
the bad declaration that doesn't reflect the reality (that's the case
for Heat Keystone and Glance, for example).

Something is going extremely wrong here. And seeing the actual result of
the SQLA transition, I am really leaning toward thinking we have a
process problem. What I believe is wrong, is that instead of having
project wide decisions imposing some constraints, we have leaf packages
that do. Until absolutely all of OpenStack is ready and fixed, then
there's no constraint applied. This is the thing that must change.

It shouldn't be this way. It should be from top to bottom. While I do
understand that we do need the gate to be able to continue working with
all projects at any given time, we still must find a solution so that
this kind of 6 months transition never happens again. This really goes
against the culture that we have inside OpenStack, and our common belief
that things must be able to move fast.

On 01/04/2014 04:13 AM, Sean Dague wrote:
 Because of entry points any library that specifies any dependencies
 that OpenStack components specify, at incompatible levels, means that
 library effectively puts a hold on the rest of OpenStack and prevents
 it from being able to move forward.

That's exactly the kind of *very bad* habits that needs to stop in
OpenStack.

On 01/04/2014 04:13 AM, Sean Dague wrote:
 The only other option is that libraries we own (stackforge / oslo),
 for condition to be included in global- requirements, *can never*
 specify a maximum version of any dependency (and I really mean
 never), and can never specify a minimum greater than current global
 requirements.

PLEASE !!! Let's do this !!! :)

On 01/04/2014 05:29 AM, Sean Dague wrote:
 It actually tells us that a human, somewhere, decided that their
 software did not work with some combination of other software

Often it's even worse. Sometimes, a human decide that, just it case, the
software will declare itself incompatible with some non-existent future
version of another software, even if there's no way to know.

We're even more into sci-fi when we see stuff like:

pbr=0.5.21,1

Monty, did you decide you would release 1.0 with lots of backward
incompatibility? Has the topic been raised and I missed it??? I'm
convinced this isn't the case (and let's pretend it isn't, just until
the end of this message).

So, how does one know that the thing he's using in PBR will be the thing
that will cause trouble later on? For a version which hasn't been
released yet?!? Who's the person with such a looking glass, who can
predict the future? I'd like to know as well some stuff in my personal
future...

Please, let's stop this kind of non-sense and stop pretending we can
tell if something is incompatible with a version of something else that
doesn't even exist yet. It's hurting and slowing down the whole of
OpenStack for no reason.

 One of the key problems is taskflow, which has an sqla pin, which breaks
 all the cinder entry points. This was actually entirely the problem
 global requirements was meant to address, but it really can't when there
 are nested requirements like this, in stackforge projects 

Re: [openstack-dev] [requirements] - taskflow preventing sqla 0.8 upgrade

2014-01-04 Thread Thomas Goirand
On 01/04/2014 07:53 AM, Joshua Harlow wrote:
 So another idea that was talked about on IRC.
 
 Taskflow exposes entrypoints for these storage backends (like your storage
 callback/interface idea).
 
 It currently provides 3 such 'default' backends [sqlalchemy, file/dir
 based, in-memory -- mainly for testing].
 
 A 4th one is in progress for icehouse (zookeeper based).
 
 These backends are used to store intermediary 'flow/task' state (allowing
 the taskflow engine to resume if an app crashes/stopped while doing stuff).
 
 A couple ideas about this, since its already pluggable.
 
 Split the sqlalchemy backend - 'taskflow-sa' repo/new package. For those
 projects that want to use this backend, they include it (still means
 'taskflow-sa' package has a dependency on sqlalchemy of some version).
 Another idea is to move the sqlalchemy dependency currently in taskflow
 requirements.txt - taskflow test-requirements.txt and for those projects
 that want to use the sqlalchemy backend, they include the sqlalchemy
 version themselves in there requirements.txt (taskflow keeps it in
 test-requirements.txt so that it can run its unit/integration tests,
 making sure the backend still works).
 
 I'm not really sure which is the best, none seem super-great, but
 sometimes u just work with what u got :-P

Feel free to explore all kinds of direction you want, but *AFTER* we've
moved to SQLA 0.8. It's been really too long already...

Thanks for your understanding.

Thomas


___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [requirements] - taskflow preventing sqla 0.8 upgrade

2014-01-04 Thread Joshua Harlow
Such a bad state seems like FUD.

Taskflow was just syncing its requirements with the same requirements that 
everyone else is... Those global requirements have 0.7.99 in them as we speak 
(which is why taskflow picked up that version). 

The issue here will be worked through and fixed, it won't be the last time a 
library that is used in various projects causes dependency issues, so we are 
working through this process as we learn what works best. 1, don't sync with 
that requirements file to attempt to use the same version as integrating 
projects, or become more integrated with the gate... or a few other solutions 
that have been discussed...

New release will happen early next week of taskflow with adjusted sqlalchemy 
upper bound.

Sent from my really tiny device...

 On Jan 4, 2014, at 7:27 AM, Thomas Goirand z...@debian.org wrote:
 
 On 01/04/2014 06:10 AM, Ivan Melnikov wrote:
 On 04.01.2014 01:29, Sean Dague wrote:
 On 01/03/2014 04:17 PM, Doug Hellmann wrote:
 [...]
 That's what made me think of the solution. But isn't setuptools in fact
 telling us that somehow the versions of things we expected to have
 installed are no longer installed and so something *is* broken (even if
 the versions of the installed libraries work together).
 
 It actually tells us that a human, somewhere, decided that their
 software did not work with some combination of other software, and that
 we are no longer able to correct their mistaken assumptions.
 [...]
 
 But sometimes humans are not wrong. For example, no released TaskFlow
 version really works with SQLAlchemy = 0.8 -- that was fixed only
 recently (https://review.openstack.org/#/c/62661/).
 
 What's wrong is to allow taskflow to be added to the global-requirements
 if it is in such a bad state, blocking such an important transition that
 has been needed for more than 6 months.
 
 Thomas
 
 
 ___
 OpenStack-dev mailing list
 OpenStack-dev@lists.openstack.org
 http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev

___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [requirements] - taskflow preventing sqla 0.8 upgrade

2014-01-04 Thread Joshua Harlow
I was more of referring to general dependency issues, sqlalchemy hopefully 
never again but one never knows :P

Sent from my really tiny device...

 On Jan 4, 2014, at 8:40 AM, Thomas Goirand z...@debian.org wrote:
 
 On 01/05/2014 12:12 AM, Joshua Harlow wrote:
 it won't
 be the last time a library that is used in various projects
 causes dependency issues
 
 Please, tell me the opposite thing. Please tell me that this is the last
 time we're having a discussion about problems with SQLA 0.8. Please tell
 me that we're actually learning from these mistakes and that we'll see
 improvements...
 
 Thomas
 
  Db Csq
 ___
 OpenStack-dev mailing list
 OpenStack-dev@lists.openstack.org
 http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-devsaws

___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [requirements] - taskflow preventing sqla 0.8 upgrade

2014-01-04 Thread Robert Collins
On 5 January 2014 04:22, Thomas Goirand z...@debian.org wrote:
 Sean,

 Before everything, I'd like to thank you for insisting in making the
 transition to SQLA 0.8.x.

 Since it has been uploaded to Sid, this SQLA 0.7.99 has been without
 any doubt the biggest reoccurring pain in the but with the packaging of
 OpenStack. Without people like you, insisting again and again, I would
 have loose hope that progress could happen in OpenStack! So thanks
 again, Sean.


 We're even more into sci-fi when we see stuff like:

 pbr=0.5.21,1

 Monty, did you decide you would release 1.0 with lots of backward
 incompatibility? Has the topic been raised and I missed it??? I'm
 convinced this isn't the case (and let's pretend it isn't, just until
 the end of this message).

Strictly speak, yes. More generously, this should be

pbr=0.5.21,2

Because pbr is using semver, and 0.x has no stability guarantees, so
the point when we will hit an incompatible change to a stable API is
the 2 transition.

-Rob

-- 
Robert Collins rbtcoll...@hp.com
Distinguished Technologist
HP Converged Cloud

___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


[openstack-dev] [requirements] - taskflow preventing sqla 0.8 upgrade

2014-01-03 Thread Sean Dague
Given that sqla 0.9 just came out, I wanted to explore, again, what the 
state of the world was with sqla 0.8 (especially given that Ubuntu and 
Red Hat are both shipping 0.8 in their OpenStack bundles) - 
https://review.openstack.org/#/c/64831/


The answer is not great. But more importantly, the answer is actually 
worse than the last time we checked, which I think gives this some 
urgency to move forward.


One of the key problems is taskflow, which has an sqla pin, which breaks 
all the cinder entry points. This was actually entirely the problem 
global requirements was meant to address, but it really can't when there 
are nested requirements like this, in stackforge projects that aren't 
installing via git (so we can rewrite their requirements).


So why does taskflow have the SQLA pin? And if the answer is global 
requirements, then taskflow can't be installing via pypi like it is now, 
because it's by nature taking a wedge. So we need a real solution here 
to un bind us, because right now it's actually impossible to upgrade 
sqla in requirements because of taskflow.


-Sean

--
Sean Dague
Samsung Research America
s...@dague.net / sean.da...@samsung.com
http://dague.net

___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [requirements] - taskflow preventing sqla 0.8 upgrade

2014-01-03 Thread Joshua Harlow
So taskflow was tested with the version of sqlalchemy that was available and in 
the requirements at the time of its 0.1 release (taskflow syncs it's 
requirements from the same global requirements). From what I remember this is 
the same requirement that everyone else is bound to:

SQLAlchemy=0.7.8,=0.7.99

I can unpin it if this is desired (the openstack requirements repo has the same 
version restriction). What would be recommended here? As more code moves to 
pypi reusable libraries (oslo.db when it arrives comes to mind) I think this 
will be hit more often. Let's come up with a good strategy to follow.

Thoughts??

Sent from my really tiny device...

On Jan 3, 2014, at 7:30 AM, Sean Dague 
s...@dague.netmailto:s...@dague.net wrote:

Given that sqla 0.9 just came out, I wanted to explore, again, what the state 
of the world was with sqla 0.8 (especially given that Ubuntu and Red Hat are 
both shipping 0.8 in their OpenStack bundles) - 
https://review.openstack.org/#/c/64831/

The answer is not great. But more importantly, the answer is actually worse 
than the last time we checked, which I think gives this some urgency to move 
forward.

One of the key problems is taskflow, which has an sqla pin, which breaks all 
the cinder entry points. This was actually entirely the problem global 
requirements was meant to address, but it really can't when there are nested 
requirements like this, in stackforge projects that aren't installing via git 
(so we can rewrite their requirements).

So why does taskflow have the SQLA pin? And if the answer is global 
requirements, then taskflow can't be installing via pypi like it is now, 
because it's by nature taking a wedge. So we need a real solution here to un 
bind us, because right now it's actually impossible to upgrade sqla in 
requirements because of taskflow.

   -Sean

--
Sean Dague
Samsung Research America
s...@dague.netmailto:s...@dague.net / 
sean.da...@samsung.commailto:sean.da...@samsung.com
http://dague.net

___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.orgmailto:OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [requirements] - taskflow preventing sqla 0.8 upgrade

2014-01-03 Thread Sean Dague

On 01/03/2014 11:37 AM, Joshua Harlow wrote:

So taskflow was tested with the version of sqlalchemy that was available
and in the requirements at the time of its 0.1 release (taskflow syncs
it's requirements from the same global requirements). From what I
remember this is the same requirement that everyone else is bound to:

SQLAlchemy=0.7.8,=0.7.99

I can unpin it if this is desired (the openstack requirements repo has
the same version restriction). What would be recommended here? As more
code moves to pypi reusable libraries (oslo.db when it arrives comes to
mind) I think this will be hit more often. Let's come up with a good
strategy to follow.

Thoughts??


So I think that given taskflow's usage, it really needs to live under 
the Oslo program, and follow the same rules that are applied to oslo 
libraries. (https://wiki.openstack.org/wiki/Oslo#Graduation)


Which means it needs to be part of the integrated gate, so we can update 
it's requirements globally. It also means that changes to it will be 
gated on full devstack runs.


We can work through the details on #openstack-infra. ttx has been doing 
the same for oslo.rootwrap this week.


-Sean

--
Sean Dague
Samsung Research America
s...@dague.net / sean.da...@samsung.com
http://dague.net

___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [requirements] - taskflow preventing sqla 0.8 upgrade

2014-01-03 Thread Joshua Harlow
Ok, I think I'm fine with that (although not really sure what that
entails).

What does the living under the 'oslo program' change?

Does that entail getting sucked into the incubator (which seems to be what
your graduating link is about).

I don't think its a good idea for taskflow to be in the 'incubator'.
Taskflow is meant to be just like any other 3rd party library.

Or were u mainly referring to the 'devstack-gate integration' section?

I'd be interested in hearing dougs opinion here (cc'd him) as
https://etherpad.openstack.org/p/icehouse-oslo-splitting-the-incubator
would seem to cause even more of these types of new 3rd party libraries to
appear on pypi (and therefore causing similar issues of transitive
dependencies as taskflow).

Will bug u on #openstack-infra soon :-)

On 1/3/14, 9:05 AM, Sean Dague s...@dague.net wrote:

On 01/03/2014 11:37 AM, Joshua Harlow wrote:
 So taskflow was tested with the version of sqlalchemy that was available
 and in the requirements at the time of its 0.1 release (taskflow syncs
 it's requirements from the same global requirements). From what I
 remember this is the same requirement that everyone else is bound to:

 SQLAlchemy=0.7.8,=0.7.99

 I can unpin it if this is desired (the openstack requirements repo has
 the same version restriction). What would be recommended here? As more
 code moves to pypi reusable libraries (oslo.db when it arrives comes to
 mind) I think this will be hit more often. Let's come up with a good
 strategy to follow.

 Thoughts??

So I think that given taskflow's usage, it really needs to live under
the Oslo program, and follow the same rules that are applied to oslo
libraries. (https://wiki.openstack.org/wiki/Oslo#Graduation)

Which means it needs to be part of the integrated gate, so we can update
it's requirements globally. It also means that changes to it will be
gated on full devstack runs.

We can work through the details on #openstack-infra. ttx has been doing
the same for oslo.rootwrap this week.

   -Sean

-- 
Sean Dague
Samsung Research America
s...@dague.net / sean.da...@samsung.com
http://dague.net

___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [requirements] - taskflow preventing sqla 0.8 upgrade

2014-01-03 Thread Sean Dague

On 01/03/2014 12:45 PM, Joshua Harlow wrote:

Ok, I think I'm fine with that (although not really sure what that
entails).

What does the living under the 'oslo program' change?

Does that entail getting sucked into the incubator (which seems to be what
your graduating link is about).

I don't think its a good idea for taskflow to be in the 'incubator'.
Taskflow is meant to be just like any other 3rd party library.


I didn't mean the incubator, I meant like oslo.* libs that we've spun 
out already.



Or were u mainly referring to the 'devstack-gate integration' section?


Correct. Just to understand what the libs live under. Basically taskflow 
is getting deeply integrated into projects in the same way oslo.* libs 
are, and as such, given it has non trivial requirements of it's own, we 
have to treat it like all the other OpenStack components and 
symmetrically gate on it.


That will guaruntee you can't release a taskflow library that can break 
OpenStack, because we'll be testing every commit, which is goodness.



I'd be interested in hearing dougs opinion here (cc'd him) as
https://etherpad.openstack.org/p/icehouse-oslo-splitting-the-incubator
would seem to cause even more of these types of new 3rd party libraries to
appear on pypi (and therefore causing similar issues of transitive
dependencies as taskflow).

Will bug u on #openstack-infra soon :-)


Definitely think doug should weigh in as well.

-Sean

--
Sean Dague
Samsung Research America
s...@dague.net / sean.da...@samsung.com
http://dague.net

___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [requirements] - taskflow preventing sqla 0.8 upgrade

2014-01-03 Thread Joshua Harlow
Sounds good to me. 

Talked on #openstack-infra with some folks there and just awaiting next
steps.

Doesn't seem like should be anything to hard to adjust/move/...

-Josh

On 1/3/14, 11:27 AM, Sean Dague s...@dague.net wrote:

On 01/03/2014 12:45 PM, Joshua Harlow wrote:
 Ok, I think I'm fine with that (although not really sure what that
 entails).

 What does the living under the 'oslo program' change?

 Does that entail getting sucked into the incubator (which seems to be
what
 your graduating link is about).

 I don't think its a good idea for taskflow to be in the 'incubator'.
 Taskflow is meant to be just like any other 3rd party library.

I didn't mean the incubator, I meant like oslo.* libs that we've spun
out already.

 Or were u mainly referring to the 'devstack-gate integration' section?

Correct. Just to understand what the libs live under. Basically taskflow
is getting deeply integrated into projects in the same way oslo.* libs
are, and as such, given it has non trivial requirements of it's own, we
have to treat it like all the other OpenStack components and
symmetrically gate on it.

That will guaruntee you can't release a taskflow library that can break
OpenStack, because we'll be testing every commit, which is goodness.

 I'd be interested in hearing dougs opinion here (cc'd him) as
 https://etherpad.openstack.org/p/icehouse-oslo-splitting-the-incubator
 would seem to cause even more of these types of new 3rd party libraries
to
 appear on pypi (and therefore causing similar issues of transitive
 dependencies as taskflow).

 Will bug u on #openstack-infra soon :-)

Definitely think doug should weigh in as well.

   -Sean

-- 
Sean Dague
Samsung Research America
s...@dague.net / sean.da...@samsung.com
http://dague.net

___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [requirements] - taskflow preventing sqla 0.8 upgrade

2014-01-03 Thread Doug Hellmann
On Fri, Jan 3, 2014 at 12:45 PM, Joshua Harlow harlo...@yahoo-inc.comwrote:

 Ok, I think I'm fine with that (although not really sure what that
 entails).

 What does the living under the 'oslo program' change?

 Does that entail getting sucked into the incubator (which seems to be what
 your graduating link is about).

 I don't think its a good idea for taskflow to be in the 'incubator'.
 Taskflow is meant to be just like any other 3rd party library.


No, as we discussed in Hong Kong, there's no reason to add taskflow to the
incubator.

Whether or not it needs to be part of the oslo program (or any other
program) is a separate question. I'm not opposed to bringing it in, but
didn't see the point when it came up at the summit.

I understand that moving taskflow into oslo would avoid the policy decision
we have in place to not do symmetric gating on unreleased versions of
things not owned by the OpenStack project. However, I don't know if we
want to be testing against the git head of libraries no matter where they
live. As fungi pointed out on IRC, gating against pre-release versions of
libraries may allow us to reach a state where the software works when
installed from git, but not from the released packages.

It seems safer to gate changes to libraries against the apps' trunk (to
avoid making backwards-incompatible changes), and then gate changes to the
apps against the released libraries (to ensure they work with something
available to be packaged by the distros). There are lots and lots of
version numbers available to us, so I see no problem with releasing new
versions of libraries frequently.

Am I missing something that makes that not work?

Doug




 Or were u mainly referring to the 'devstack-gate integration' section?

 I'd be interested in hearing dougs opinion here (cc'd him) as
 https://etherpad.openstack.org/p/icehouse-oslo-splitting-the-incubator
 would seem to cause even more of these types of new 3rd party libraries to
 appear on pypi (and therefore causing similar issues of transitive
 dependencies as taskflow).

 Will bug u on #openstack-infra soon :-)

 On 1/3/14, 9:05 AM, Sean Dague s...@dague.net wrote:

 On 01/03/2014 11:37 AM, Joshua Harlow wrote:
  So taskflow was tested with the version of sqlalchemy that was available
  and in the requirements at the time of its 0.1 release (taskflow syncs
  it's requirements from the same global requirements). From what I
  remember this is the same requirement that everyone else is bound to:
 
  SQLAlchemy=0.7.8,=0.7.99
 
  I can unpin it if this is desired (the openstack requirements repo has
  the same version restriction). What would be recommended here? As more
  code moves to pypi reusable libraries (oslo.db when it arrives comes to
  mind) I think this will be hit more often. Let's come up with a good
  strategy to follow.
 
  Thoughts??
 
 So I think that given taskflow's usage, it really needs to live under
 the Oslo program, and follow the same rules that are applied to oslo
 libraries. (https://wiki.openstack.org/wiki/Oslo#Graduation)
 
 Which means it needs to be part of the integrated gate, so we can update
 it's requirements globally. It also means that changes to it will be
 gated on full devstack runs.
 
 We can work through the details on #openstack-infra. ttx has been doing
 the same for oslo.rootwrap this week.
 
-Sean
 
 --
 Sean Dague
 Samsung Research America
 s...@dague.net / sean.da...@samsung.com
 http://dague.net
 
 ___
 OpenStack-dev mailing list
 OpenStack-dev@lists.openstack.org
 http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [requirements] - taskflow preventing sqla 0.8 upgrade

2014-01-03 Thread Joshua Harlow
I'd be up for that 'dual' gating. It would help make sure that nothing major is 
breaking in the next version as well as the version released on pypi isn't also 
causing problems.

Although git head gating does seem odd, especially as git head/trunk is where 
things change (and should be allowed to break and change, change is good) and 
the level of false positives that would be raised might become to much of a 
pain. I'd rather not discourage innovation on trunk if we can; since this is 
what stable releases are for.

Btw the sqlalchemy changes (unpinning) should be fine.

Ivan did a couple of tests (basic stuff, not full integration).

- https://review.openstack.org/#/c/64869/
- https://review.openstack.org/#/c/64881/

Both passed basic unit tests (full integration against real mysql, not sqlite 
will happen soon I hope with https://bugs.launchpad.net/taskflow/+bug/1265886).

If we really need to I can push out a 0.1.2 with the unpinned version (one of 
the above reviews).

-Josh

From: Doug Hellmann 
doug.hellm...@dreamhost.commailto:doug.hellm...@dreamhost.com
Date: Friday, January 3, 2014 at 11:44 AM
To: Joshua Harlow harlo...@yahoo-inc.commailto:harlo...@yahoo-inc.com
Cc: OpenStack Development Mailing List (not for usage questions) 
openstack-dev@lists.openstack.orgmailto:openstack-dev@lists.openstack.org, 
Sean Dague s...@dague.netmailto:s...@dague.net
Subject: Re: [openstack-dev] [requirements] - taskflow preventing sqla 0.8 
upgrade




On Fri, Jan 3, 2014 at 12:45 PM, Joshua Harlow 
harlo...@yahoo-inc.commailto:harlo...@yahoo-inc.com wrote:
Ok, I think I'm fine with that (although not really sure what that
entails).

What does the living under the 'oslo program' change?

Does that entail getting sucked into the incubator (which seems to be what
your graduating link is about).

I don't think its a good idea for taskflow to be in the 'incubator'.
Taskflow is meant to be just like any other 3rd party library.

No, as we discussed in Hong Kong, there's no reason to add taskflow to the 
incubator.

Whether or not it needs to be part of the oslo program (or any other program) 
is a separate question. I'm not opposed to bringing it in, but didn't see the 
point when it came up at the summit.

I understand that moving taskflow into oslo would avoid the policy decision we 
have in place to not do symmetric gating on unreleased versions of things not 
owned by the OpenStack project. However, I don't know if we want to be 
testing against the git head of libraries no matter where they live. As fungi 
pointed out on IRC, gating against pre-release versions of libraries may allow 
us to reach a state where the software works when installed from git, but not 
from the released packages.

It seems safer to gate changes to libraries against the apps' trunk (to avoid 
making backwards-incompatible changes), and then gate changes to the apps 
against the released libraries (to ensure they work with something available to 
be packaged by the distros). There are lots and lots of version numbers 
available to us, so I see no problem with releasing new versions of libraries 
frequently.

Am I missing something that makes that not work?

Doug



Or were u mainly referring to the 'devstack-gate integration' section?

I'd be interested in hearing dougs opinion here (cc'd him) as
https://etherpad.openstack.org/p/icehouse-oslo-splitting-the-incubator
would seem to cause even more of these types of new 3rd party libraries to
appear on pypi (and therefore causing similar issues of transitive
dependencies as taskflow).

Will bug u on #openstack-infra soon :-)

On 1/3/14, 9:05 AM, Sean Dague s...@dague.netmailto:s...@dague.net wrote:

On 01/03/2014 11:37 AM, Joshua Harlow wrote:
 So taskflow was tested with the version of sqlalchemy that was available
 and in the requirements at the time of its 0.1 release (taskflow syncs
 it's requirements from the same global requirements). From what I
 remember this is the same requirement that everyone else is bound to:

 SQLAlchemy=0.7.8,=0.7.99

 I can unpin it if this is desired (the openstack requirements repo has
 the same version restriction). What would be recommended here? As more
 code moves to pypi reusable libraries (oslo.db when it arrives comes to
 mind) I think this will be hit more often. Let's come up with a good
 strategy to follow.

 Thoughts??

So I think that given taskflow's usage, it really needs to live under
the Oslo program, and follow the same rules that are applied to oslo
libraries. (https://wiki.openstack.org/wiki/Oslo#Graduation)

Which means it needs to be part of the integrated gate, so we can update
it's requirements globally. It also means that changes to it will be
gated on full devstack runs.

We can work through the details on #openstack-infra. ttx has been doing
the same for oslo.rootwrap this week.

   -Sean

--
Sean Dague
Samsung Research America
s...@dague.netmailto:s...@dague.net / 
sean.da...@samsung.commailto:sean.da...@samsung.com
http

Re: [openstack-dev] [requirements] - taskflow preventing sqla 0.8 upgrade

2014-01-03 Thread Sean Dague

On 01/03/2014 02:44 PM, Doug Hellmann wrote:




On Fri, Jan 3, 2014 at 12:45 PM, Joshua Harlow harlo...@yahoo-inc.com
mailto:harlo...@yahoo-inc.com wrote:

Ok, I think I'm fine with that (although not really sure what that
entails).

What does the living under the 'oslo program' change?

Does that entail getting sucked into the incubator (which seems to
be what
your graduating link is about).

I don't think its a good idea for taskflow to be in the 'incubator'.
Taskflow is meant to be just like any other 3rd party library.


No, as we discussed in Hong Kong, there's no reason to add taskflow to
the incubator.

Whether or not it needs to be part of the oslo program (or any other
program) is a separate question. I'm not opposed to bringing it in, but
didn't see the point when it came up at the summit.

I understand that moving taskflow into oslo would avoid the policy
decision we have in place to not do symmetric gating on unreleased
versions of things not owned by the OpenStack project. However, I
don't know if we want to be testing against the git head of libraries no
matter where they live. As fungi pointed out on IRC, gating against
pre-release versions of libraries may allow us to reach a state where
the software works when installed from git, but not from the released
packages.

It seems safer to gate changes to libraries against the apps' trunk (to
avoid making backwards-incompatible changes), and then gate changes to
the apps against the released libraries (to ensure they work with
something available to be packaged by the distros). There are lots and
lots of version numbers available to us, so I see no problem with
releasing new versions of libraries frequently.

Am I missing something that makes that not work?


Requirements wedging.

Because of entry points any library that specifies any dependencies that 
OpenStack components specify, at incompatible levels, means that library 
effectively puts a hold on the rest of OpenStack and prevents it from 
being able to move forward.


Which means every time we need to then change a library dependency it's 
going to require triggering a release, solely to change library 
dependencies.


This is the giant disaster that we created global requirements to avoid, 
so that we have one nob to turn.


The only other option is that libraries we own (stackforge / oslo), for 
condition to be included in global- requirements, *can never* specify a 
maximum version of any dependency (and I really mean never), and can 
never specify a minimum greater than current global requirements.


-Sean

--
Sean Dague
Samsung Research America
s...@dague.net / sean.da...@samsung.com
http://dague.net

___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [requirements] - taskflow preventing sqla 0.8 upgrade

2014-01-03 Thread Jeremy Stanley
On 2014-01-03 14:44:40 -0500 (-0500), Doug Hellmann wrote:
[...]
 It seems safer to gate changes to libraries against the apps'
 trunk (to avoid making backwards-incompatible changes), and then
 gate changes to the apps against the released libraries (to
 ensure they work with something available to be packaged by the
 distros). There are lots and lots of version numbers available to
 us, so I see no problem with releasing new versions of libraries
 frequently.
[...]

Well, for the benefit of the pure OpenStack CD crowd, it would
continue to make sense to also test trunk of everything together. I
think what we had arrived at during the last summit was that we
wanted to make sure that server changes are being gated against
released libraries/clients *in addition to trunk* so that we ensure
features are released in those before we start relying on them. We
similarly probably need to test changes for a library/client against
released versions of any other libraries or clients on which they
depend as well, for those same reasons.
-- 
Jeremy Stanley

___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [requirements] - taskflow preventing sqla 0.8 upgrade

2014-01-03 Thread Doug Hellmann
On Fri, Jan 3, 2014 at 3:13 PM, Sean Dague s...@dague.net wrote:

 On 01/03/2014 02:44 PM, Doug Hellmann wrote:




 On Fri, Jan 3, 2014 at 12:45 PM, Joshua Harlow harlo...@yahoo-inc.com
 mailto:harlo...@yahoo-inc.com wrote:

 Ok, I think I'm fine with that (although not really sure what that
 entails).

 What does the living under the 'oslo program' change?

 Does that entail getting sucked into the incubator (which seems to
 be what
 your graduating link is about).

 I don't think its a good idea for taskflow to be in the 'incubator'.
 Taskflow is meant to be just like any other 3rd party library.


 No, as we discussed in Hong Kong, there's no reason to add taskflow to
 the incubator.

 Whether or not it needs to be part of the oslo program (or any other
 program) is a separate question. I'm not opposed to bringing it in, but
 didn't see the point when it came up at the summit.

 I understand that moving taskflow into oslo would avoid the policy
 decision we have in place to not do symmetric gating on unreleased
 versions of things not owned by the OpenStack project. However, I
 don't know if we want to be testing against the git head of libraries no
 matter where they live. As fungi pointed out on IRC, gating against
 pre-release versions of libraries may allow us to reach a state where
 the software works when installed from git, but not from the released
 packages.

 It seems safer to gate changes to libraries against the apps' trunk (to
 avoid making backwards-incompatible changes), and then gate changes to
 the apps against the released libraries (to ensure they work with
 something available to be packaged by the distros). There are lots and
 lots of version numbers available to us, so I see no problem with
 releasing new versions of libraries frequently.

 Am I missing something that makes that not work?


 Requirements wedging.

 Because of entry points any library that specifies any dependencies that
 OpenStack components specify, at incompatible levels, means that library
 effectively puts a hold on the rest of OpenStack and prevents it from being
 able to move forward.


I have considered changing stevedore so it uses entry points to find
plugins, but then handles the import itself specifically to eliminate the
requirements checks for plugin dependencies enforced by pkg_resources. So
far I haven't convinced myself that it's a good idea, but I'm open to
discussion. :-)




 Which means every time we need to then change a library dependency it's
 going to require triggering a release, solely to change library
 dependencies.

 This is the giant disaster that we created global requirements to avoid,
 so that we have one nob to turn.

 The only other option is that libraries we own (stackforge / oslo), for
 condition to be included in global- requirements, *can never* specify a
 maximum version of any dependency (and I really mean never), and can never
 specify a minimum greater than current global requirements.


That seems like a more appealing solution than testing against unreleased
versions via git checkouts. It is is also an approach we could encourage
authors of libraries we don't own to use.

Doug





 -Sean

 --
 Sean Dague
 Samsung Research America
 s...@dague.net / sean.da...@samsung.com
 http://dague.net

 ___
 OpenStack-dev mailing list
 OpenStack-dev@lists.openstack.org
 http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev

___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [requirements] - taskflow preventing sqla 0.8 upgrade

2014-01-03 Thread Sean Dague

On 01/03/2014 03:30 PM, Doug Hellmann wrote:




On Fri, Jan 3, 2014 at 3:13 PM, Sean Dague s...@dague.net
mailto:s...@dague.net wrote:

On 01/03/2014 02:44 PM, Doug Hellmann wrote:




On Fri, Jan 3, 2014 at 12:45 PM, Joshua Harlow
harlo...@yahoo-inc.com mailto:harlo...@yahoo-inc.com
mailto:harlo...@yahoo-inc.com
mailto:harlo...@yahoo-inc.com__ wrote:

 Ok, I think I'm fine with that (although not really sure
what that
 entails).

 What does the living under the 'oslo program' change?

 Does that entail getting sucked into the incubator (which
seems to
 be what
 your graduating link is about).

 I don't think its a good idea for taskflow to be in the
'incubator'.
 Taskflow is meant to be just like any other 3rd party library.


No, as we discussed in Hong Kong, there's no reason to add
taskflow to
the incubator.

Whether or not it needs to be part of the oslo program (or any other
program) is a separate question. I'm not opposed to bringing it
in, but
didn't see the point when it came up at the summit.

I understand that moving taskflow into oslo would avoid the policy
decision we have in place to not do symmetric gating on unreleased
versions of things not owned by the OpenStack project. However, I
don't know if we want to be testing against the git head of
libraries no
matter where they live. As fungi pointed out on IRC, gating against
pre-release versions of libraries may allow us to reach a state
where
the software works when installed from git, but not from the
released
packages.

It seems safer to gate changes to libraries against the apps'
trunk (to
avoid making backwards-incompatible changes), and then gate
changes to
the apps against the released libraries (to ensure they work with
something available to be packaged by the distros). There are
lots and
lots of version numbers available to us, so I see no problem with
releasing new versions of libraries frequently.

Am I missing something that makes that not work?


Requirements wedging.

Because of entry points any library that specifies any dependencies
that OpenStack components specify, at incompatible levels, means
that library effectively puts a hold on the rest of OpenStack and
prevents it from being able to move forward.


I have considered changing stevedore so it uses entry points to find
plugins, but then handles the import itself specifically to eliminate
the requirements checks for plugin dependencies enforced by
pkg_resources. So far I haven't convinced myself that it's a good idea,
but I'm open to discussion. :-)


Well, about 1/3 of our requirements wedges are actually completely entry 
point related. They were a class of problems we never had before we 
switched to entry points.


This entire taskflow block wouldn't have been a problem if it wasn't 
loaded with entry points.


-Sean

--
Sean Dague
Samsung Research America
s...@dague.net / sean.da...@samsung.com
http://dague.net

___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [requirements] - taskflow preventing sqla 0.8 upgrade

2014-01-03 Thread Doug Hellmann
On Fri, Jan 3, 2014 at 4:08 PM, Sean Dague s...@dague.net wrote:

 On 01/03/2014 03:30 PM, Doug Hellmann wrote:




 On Fri, Jan 3, 2014 at 3:13 PM, Sean Dague s...@dague.net
 mailto:s...@dague.net wrote:

 On 01/03/2014 02:44 PM, Doug Hellmann wrote:




 On Fri, Jan 3, 2014 at 12:45 PM, Joshua Harlow
 harlo...@yahoo-inc.com mailto:harlo...@yahoo-inc.com
 mailto:harlo...@yahoo-inc.com

 mailto:harlo...@yahoo-inc.com__ wrote:

  Ok, I think I'm fine with that (although not really sure
 what that
  entails).

  What does the living under the 'oslo program' change?

  Does that entail getting sucked into the incubator (which
 seems to
  be what
  your graduating link is about).

  I don't think its a good idea for taskflow to be in the
 'incubator'.
  Taskflow is meant to be just like any other 3rd party
 library.


 No, as we discussed in Hong Kong, there's no reason to add
 taskflow to
 the incubator.

 Whether or not it needs to be part of the oslo program (or any
 other
 program) is a separate question. I'm not opposed to bringing it
 in, but
 didn't see the point when it came up at the summit.

 I understand that moving taskflow into oslo would avoid the policy
 decision we have in place to not do symmetric gating on unreleased
 versions of things not owned by the OpenStack project. However,
 I
 don't know if we want to be testing against the git head of
 libraries no
 matter where they live. As fungi pointed out on IRC, gating
 against
 pre-release versions of libraries may allow us to reach a state
 where
 the software works when installed from git, but not from the
 released
 packages.

 It seems safer to gate changes to libraries against the apps'
 trunk (to
 avoid making backwards-incompatible changes), and then gate
 changes to
 the apps against the released libraries (to ensure they work with
 something available to be packaged by the distros). There are
 lots and
 lots of version numbers available to us, so I see no problem with
 releasing new versions of libraries frequently.

 Am I missing something that makes that not work?


 Requirements wedging.

 Because of entry points any library that specifies any dependencies
 that OpenStack components specify, at incompatible levels, means
 that library effectively puts a hold on the rest of OpenStack and
 prevents it from being able to move forward.


 I have considered changing stevedore so it uses entry points to find
 plugins, but then handles the import itself specifically to eliminate
 the requirements checks for plugin dependencies enforced by
 pkg_resources. So far I haven't convinced myself that it's a good idea,
 but I'm open to discussion. :-)


 Well, about 1/3 of our requirements wedges are actually completely entry
 point related. They were a class of problems we never had before we
 switched to entry points.


That's what made me think of the solution. But isn't setuptools in fact
telling us that somehow the versions of things we expected to have
installed are no longer installed and so something *is* broken (even if the
versions of the installed libraries work together).

Doug




 This entire taskflow block wouldn't have been a problem if it wasn't
 loaded with entry points.



 -Sean

 --
 Sean Dague
 Samsung Research America
 s...@dague.net / sean.da...@samsung.com
 http://dague.net

 ___
 OpenStack-dev mailing list
 OpenStack-dev@lists.openstack.org
 http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev

___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [requirements] - taskflow preventing sqla 0.8 upgrade

2014-01-03 Thread Sean Dague

On 01/03/2014 04:17 PM, Doug Hellmann wrote:




On Fri, Jan 3, 2014 at 4:08 PM, Sean Dague s...@dague.net
mailto:s...@dague.net wrote:

On 01/03/2014 03:30 PM, Doug Hellmann wrote:




On Fri, Jan 3, 2014 at 3:13 PM, Sean Dague s...@dague.net
mailto:s...@dague.net
mailto:s...@dague.net mailto:s...@dague.net wrote:

 On 01/03/2014 02:44 PM, Doug Hellmann wrote:




 On Fri, Jan 3, 2014 at 12:45 PM, Joshua Harlow
 harlo...@yahoo-inc.com mailto:harlo...@yahoo-inc.com
mailto:harlo...@yahoo-inc.com mailto:harlo...@yahoo-inc.com__
 mailto:harlo...@yahoo-inc.com
mailto:harlo...@yahoo-inc.com

 mailto:harlo...@yahoo-inc.com
mailto:harlo...@yahoo-inc.com wrote:

  Ok, I think I'm fine with that (although not
really sure
 what that
  entails).

  What does the living under the 'oslo program' change?

  Does that entail getting sucked into the incubator
(which
 seems to
  be what
  your graduating link is about).

  I don't think its a good idea for taskflow to be
in the
 'incubator'.
  Taskflow is meant to be just like any other 3rd
party library.


 No, as we discussed in Hong Kong, there's no reason to add
 taskflow to
 the incubator.

 Whether or not it needs to be part of the oslo program
(or any other
 program) is a separate question. I'm not opposed to
bringing it
 in, but
 didn't see the point when it came up at the summit.

 I understand that moving taskflow into oslo would avoid
the policy
 decision we have in place to not do symmetric gating on
unreleased
 versions of things not owned by the OpenStack
project. However, I
 don't know if we want to be testing against the git head of
 libraries no
 matter where they live. As fungi pointed out on IRC,
gating against
 pre-release versions of libraries may allow us to reach
a state
 where
 the software works when installed from git, but not
from the
 released
 packages.

 It seems safer to gate changes to libraries against the
apps'
 trunk (to
 avoid making backwards-incompatible changes), and then gate
 changes to
 the apps against the released libraries (to ensure they
work with
 something available to be packaged by the distros).
There are
 lots and
 lots of version numbers available to us, so I see no
problem with
 releasing new versions of libraries frequently.

 Am I missing something that makes that not work?


 Requirements wedging.

 Because of entry points any library that specifies any
dependencies
 that OpenStack components specify, at incompatible levels,
means
 that library effectively puts a hold on the rest of
OpenStack and
 prevents it from being able to move forward.


I have considered changing stevedore so it uses entry points to find
plugins, but then handles the import itself specifically to
eliminate
the requirements checks for plugin dependencies enforced by
pkg_resources. So far I haven't convinced myself that it's a
good idea,
but I'm open to discussion. :-)


Well, about 1/3 of our requirements wedges are actually completely
entry point related. They were a class of problems we never had
before we switched to entry points.


That's what made me think of the solution. But isn't setuptools in fact
telling us that somehow the versions of things we expected to have
installed are no longer installed and so something *is* broken (even if
the versions of the installed libraries work together).


It actually tells us that a human, somewhere, decided that their 
software did not work with some combination of other software, and that 
we are no longer able to correct their mistaken assumptions.


There is a reason the Linux distros don't blindly follow what libraries 
say they depend on, because humans are foulable, and can only look 
backwards and not forwards in time.


-Sean

--
Sean Dague
Samsung Research America
s...@dague.net / sean.da...@samsung.com
http://dague.net

___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org

Re: [openstack-dev] [requirements] - taskflow preventing sqla 0.8 upgrade

2014-01-03 Thread Ivan Melnikov
On 04.01.2014 01:29, Sean Dague wrote:
 On 01/03/2014 04:17 PM, Doug Hellmann wrote:
[...]
 That's what made me think of the solution. But isn't setuptools in fact
 telling us that somehow the versions of things we expected to have
 installed are no longer installed and so something *is* broken (even if
 the versions of the installed libraries work together).
 
 It actually tells us that a human, somewhere, decided that their
 software did not work with some combination of other software, and that
 we are no longer able to correct their mistaken assumptions.
[...]

But sometimes humans are not wrong. For example, no released TaskFlow
version really works with SQLAlchemy = 0.8 -- that was fixed only
recently (https://review.openstack.org/#/c/62661/).

I consider requirements to be part of the code, so if they are too
strict (or too broad), that must be fixed, in a usual opensource way:
via filing bug report, suggesting patch and so on.

Requirements should reflect reality, especially for libraries that are
intended to be useful outside of OpenStack, too. For example, current
TaskFlow requirement for SQLAlchemy is too strict, so we'll fix that,
and release new version with that fix.

-- 
WBR,
Ivan A. Melnikov

___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [requirements] - taskflow preventing sqla 0.8 upgrade

2014-01-03 Thread Sean Dague

On 01/03/2014 05:10 PM, Ivan Melnikov wrote:

On 04.01.2014 01:29, Sean Dague wrote:

On 01/03/2014 04:17 PM, Doug Hellmann wrote:

[...]

That's what made me think of the solution. But isn't setuptools in fact
telling us that somehow the versions of things we expected to have
installed are no longer installed and so something *is* broken (even if
the versions of the installed libraries work together).


It actually tells us that a human, somewhere, decided that their
software did not work with some combination of other software, and that
we are no longer able to correct their mistaken assumptions.

[...]

But sometimes humans are not wrong. For example, no released TaskFlow
version really works with SQLAlchemy = 0.8 -- that was fixed only
recently (https://review.openstack.org/#/c/62661/).

I consider requirements to be part of the code, so if they are too
strict (or too broad), that must be fixed, in a usual opensource way:
via filing bug report, suggesting patch and so on.

Requirements should reflect reality, especially for libraries that are
intended to be useful outside of OpenStack, too. For example, current
TaskFlow requirement for SQLAlchemy is too strict, so we'll fix that,
and release new version with that fix.


Well part of the problem is because of it being a dependency of a 
dependency, our global requirements process couldn't explore whether or 
not it functioned in a real environment.


Which brings us back to the idea of making this a project that works in 
the integrated gate.


It's also kind of problematic that apparently the introduction of 
taskflow actually caused a regression from Havana (which the distros 
managed to make work with sqla 0.8 even though it wasn't in global 
requirements, but this apparently would have broken).


And the next question is when is a sqla 0.9 compatible version going to 
be out there? Because we can't even explore allowing openstack to use 
sqla 0.9 until taskflow does, again because it's a blocking requirement.


It's exactly these kind of lock step problems that we avoid with the 
rest of openstack by making it an integrated gate with global 
requirements sync. But that we can't really handle with the library model.


-Sean

--
Sean Dague
Samsung Research America
s...@dague.net / sean.da...@samsung.com
http://dague.net

___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [requirements] - taskflow preventing sqla 0.8 upgrade

2014-01-03 Thread Joshua Harlow
Since the library model is what most everyone else uses outside of
openstack (I assume?) what can we do to get there so that this model works
as well?

Expanding dependencies recursively seems like it could help? This could
then detect transitive dependency issues (and doesn't seem so hard to do).

I like the idea of 'gate on all the things' (that I've heard come up
before) but I don't know if its possible? If we hooked into the pypi
upload 'stream' it would seem like we could automatically trigger
openstack builds when a known dependency (or dependency of a
dependency...) is uploaded (maybe?). That would be pretty neat.

In general it really seems like having more libraries, not less is ideal
(making us solve this issue whether we want to or not really). As
libraries can then be used outside of openstack (taskflow is already being
used elsewhere also), libraries create well-defined apis and boundaries
between programs (...). I know they also create this dependency hell
problem (anvil has been hitting these same issues for a while to). But I
think we can figure out a solution that fits both worlds, the world of
things we can gate on and the world of things we can't (3rd party
libraries that aren't under openstack control). Taskflow is in-between
those worlds, so it allows us to explore how to make both of those worlds
work.

-Josh

On 1/3/14, 2:54 PM, Sean Dague s...@dague.net wrote:

On 01/03/2014 05:10 PM, Ivan Melnikov wrote:
 On 04.01.2014 01:29, Sean Dague wrote:
 On 01/03/2014 04:17 PM, Doug Hellmann wrote:
 [...]
 That's what made me think of the solution. But isn't setuptools in
fact
 telling us that somehow the versions of things we expected to have
 installed are no longer installed and so something *is* broken (even
if
 the versions of the installed libraries work together).

 It actually tells us that a human, somewhere, decided that their
 software did not work with some combination of other software, and that
 we are no longer able to correct their mistaken assumptions.
 [...]

 But sometimes humans are not wrong. For example, no released TaskFlow
 version really works with SQLAlchemy = 0.8 -- that was fixed only
 recently (https://review.openstack.org/#/c/62661/).

 I consider requirements to be part of the code, so if they are too
 strict (or too broad), that must be fixed, in a usual opensource way:
 via filing bug report, suggesting patch and so on.

 Requirements should reflect reality, especially for libraries that are
 intended to be useful outside of OpenStack, too. For example, current
 TaskFlow requirement for SQLAlchemy is too strict, so we'll fix that,
 and release new version with that fix.

Well part of the problem is because of it being a dependency of a
dependency, our global requirements process couldn't explore whether or
not it functioned in a real environment.

Which brings us back to the idea of making this a project that works in
the integrated gate.

It's also kind of problematic that apparently the introduction of
taskflow actually caused a regression from Havana (which the distros
managed to make work with sqla 0.8 even though it wasn't in global
requirements, but this apparently would have broken).

And the next question is when is a sqla 0.9 compatible version going to
be out there? Because we can't even explore allowing openstack to use
sqla 0.9 until taskflow does, again because it's a blocking requirement.

It's exactly these kind of lock step problems that we avoid with the
rest of openstack by making it an integrated gate with global
requirements sync. But that we can't really handle with the library model.

   -Sean

-- 
Sean Dague
Samsung Research America
s...@dague.net / sean.da...@samsung.com
http://dague.net

___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [requirements] - taskflow preventing sqla 0.8 upgrade

2014-01-03 Thread Sean Dague

On 01/03/2014 06:14 PM, Joshua Harlow wrote:

Since the library model is what most everyone else uses outside of
openstack (I assume?) what can we do to get there so that this model works
as well?

Expanding dependencies recursively seems like it could help? This could
then detect transitive dependency issues (and doesn't seem so hard to do).


We actually talked about having pip be able to help us here with a 
--requirements-override piece of function. dstufft seemed positive on 
the concept.



I like the idea of 'gate on all the things' (that I've heard come up
before) but I don't know if its possible? If we hooked into the pypi
upload 'stream' it would seem like we could automatically trigger
openstack builds when a known dependency (or dependency of a
dependency...) is uploaded (maybe?). That would be pretty neat.



In general it really seems like having more libraries, not less is ideal
(making us solve this issue whether we want to or not really). As
libraries can then be used outside of openstack (taskflow is already being
used elsewhere also), libraries create well-defined apis and boundaries
between programs (...). I know they also create this dependency hell
problem (anvil has been hitting these same issues for a while to). But I
think we can figure out a solution that fits both worlds, the world of
things we can gate on and the world of things we can't (3rd party
libraries that aren't under openstack control). Taskflow is in-between
those worlds, so it allows us to explore how to make both of those worlds
work.


In general I agree however, if you get between OpenStack and SQLA 
you've now touched the 3rd rail. Because we have deep experience about 
how bad the compatibility between versions can be, and we can't be 
beholden to another project about our SQLA upgrade timeframe.


So I think that generalities aside, if are a library, and use SQLA, we 
probably need to really think about putting it in the integrated gate.


Because otherwise what we are saying is taskflow is completely dictating 
the SQLA version in the Icehouse release of OpenStack. And that's the 
wrong place for that decision to be.


If taskflow worked with a storage callback mechanism, and got a storage 
interface from the program that was calling it, then things would be 
much different. But because it's going straight to the database and 
managing tables directly, through a known unstable library, that 
OpenStack itself needs some control over, it's definitely a different case.


-Sean

--
Sean Dague
Samsung Research America
s...@dague.net / sean.da...@samsung.com
http://dague.net

___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [requirements] - taskflow preventing sqla 0.8 upgrade

2014-01-03 Thread Joshua Harlow
So another idea that was talked about on IRC.

Taskflow exposes entrypoints for these storage backends (like your storage
callback/interface idea).

It currently provides 3 such 'default' backends [sqlalchemy, file/dir
based, in-memory -- mainly for testing].

A 4th one is in progress for icehouse (zookeeper based).

These backends are used to store intermediary 'flow/task' state (allowing
the taskflow engine to resume if an app crashes/stopped while doing stuff).

A couple ideas about this, since its already pluggable.

Split the sqlalchemy backend - 'taskflow-sa' repo/new package. For those
projects that want to use this backend, they include it (still means
'taskflow-sa' package has a dependency on sqlalchemy of some version).
Another idea is to move the sqlalchemy dependency currently in taskflow
requirements.txt - taskflow test-requirements.txt and for those projects
that want to use the sqlalchemy backend, they include the sqlalchemy
version themselves in there requirements.txt (taskflow keeps it in
test-requirements.txt so that it can run its unit/integration tests,
making sure the backend still works).

I'm not really sure which is the best, none seem super-great, but
sometimes u just work with what u got :-P

On 1/3/14, 3:32 PM, Sean Dague s...@dague.net wrote:

On 01/03/2014 06:14 PM, Joshua Harlow wrote:
 Since the library model is what most everyone else uses outside of
 openstack (I assume?) what can we do to get there so that this model
works
 as well?

 Expanding dependencies recursively seems like it could help? This could
 then detect transitive dependency issues (and doesn't seem so hard to
do).

We actually talked about having pip be able to help us here with a
--requirements-override piece of function. dstufft seemed positive on
the concept.

 I like the idea of 'gate on all the things' (that I've heard come up
 before) but I don't know if its possible? If we hooked into the pypi
 upload 'stream' it would seem like we could automatically trigger
 openstack builds when a known dependency (or dependency of a
 dependency...) is uploaded (maybe?). That would be pretty neat.
 
 In general it really seems like having more libraries, not less is ideal
 (making us solve this issue whether we want to or not really). As
 libraries can then be used outside of openstack (taskflow is already
being
 used elsewhere also), libraries create well-defined apis and boundaries
 between programs (...). I know they also create this dependency hell
 problem (anvil has been hitting these same issues for a while to). But I
 think we can figure out a solution that fits both worlds, the world of
 things we can gate on and the world of things we can't (3rd party
 libraries that aren't under openstack control). Taskflow is in-between
 those worlds, so it allows us to explore how to make both of those
worlds
 work.

In general I agree however, if you get between OpenStack and SQLA
you've now touched the 3rd rail. Because we have deep experience about
how bad the compatibility between versions can be, and we can't be
beholden to another project about our SQLA upgrade timeframe.

So I think that generalities aside, if are a library, and use SQLA, we
probably need to really think about putting it in the integrated gate.

Because otherwise what we are saying is taskflow is completely dictating
the SQLA version in the Icehouse release of OpenStack. And that's the
wrong place for that decision to be.

If taskflow worked with a storage callback mechanism, and got a storage
interface from the program that was calling it, then things would be
much different. But because it's going straight to the database and
managing tables directly, through a known unstable library, that
OpenStack itself needs some control over, it's definitely a different
case.

   -Sean

-- 
Sean Dague
Samsung Research America
s...@dague.net / sean.da...@samsung.com
http://dague.net

___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev