Earlier  
Posted Nick Remark
#openstack-sdks - 2017-04-03
17:25:18 cdent edleafe, elmiko : I'm cogitating on how to provide a final revision on https://review.openstack.org/#/c/421846/ (compatibility guidelines). I think I may do what I say in my last comment about "one tactic". Any thoughts?
17:25:35 openstackgerrit Ankur proposed openstack/python-openstackclient master: Network L3 Router Commands for OSC https://review.openstack.org/385729
17:29:13 edleafe cdent: I thought the motivation for this *was* the TC tag
17:29:56 cdent the motivation was that they wanted to use the guidelines and they seemed bad
17:30:09 cdent but now that they are revised we should revise them so they are not about tags, but about the bigger thing, the mission
17:30:23 cdent thus my statement: interoperability right there in the mission
17:31:38 cdent if we guide to the mission, the relevancy for tags (or new tags) falls out of that, but the tags will be mission oriented, not "make some tags to deal with whatever situation is lying around"
17:34:01 edleafe I get that, but it seems like looking at it as a single concern will make it essentially useless for the vast majority of OpenStack developers
17:34:38 edleafe Really, I joke and call it the "Monty case", but I don't know anyone else who has such stringent requirements
17:35:29 cdent that's kind of the point: are we trying to describe interop or not? I felt that the outcome from a) the ptg, b) the discussion on the document and c) look at TheMission is that we are. If we are, then the implications are _severe_
17:35:56 cdent and thus the document needs to be pretty explicit about just how difficult things are, and the things to look out for
17:37:02 elmiko i'm having a difficult time following the action item here, are we still trying to figure how to mention alternatives without blessing them?>
17:37:59 cdent elmiko: no, more general than that: get something published that is actionable
17:38:16 elmiko cdent: ok, cool. i thought we were in the weeds about that.
17:38:27 cdent ed pointed out a few more contradictions and issues in his comments shortly before my last one
17:38:29 edleafe I felt that the PTG was really a non-outcome, because we didn't have the two factions talking with each other
17:38:51 elmiko i agree with the sentiment that using these guidelines as the bar for a tag is problematic at best
17:39:23 edleafe elmiko: so how would the TC determine if a project has earned that tag?
17:39:49 elmiko edleafe: i guess it depends a little on the conversation here
17:39:51 elmiko like for example
17:40:11 cdent edleafe: I don't quite agree (about PTG). I think we established that there were some people who did not want to prioritize service wide interoperability and stability and that's okay, but that if you do, there are consequences
17:40:16 elmiko if the guidelines are about the mission and interop, then maybe we need a document that clearly defines what you need for the tag (ugh, more docs)
17:40:33 elmiko but, if the guidelines *are* about the tag, then we need to be more explicit i suppose
17:41:30 elmiko i have to admit, i feel we have gotten so far zoomed in as a result of one issue that i'm having trouble placing all this into the "bigger picture" as stated above
17:41:32 edleafe cdent: hence my blog post. The morning group was concerned with moving an API forward without breaking clients. They really showed no concern for interop at the level that Monty et al did in the afternoon
17:42:12 cdent edleafe: hence my suggestion of renaming this document to interoperability guidelines and being able to publish that as a step in a potentially multi-step process
17:42:34 cdent (elmiko, yes, it's hard to tell where to focus)
17:43:36 elmiko cdent: that seems like a sensible option to me
17:43:41 edleafe cdent: So this would be an "api-interoperability" guiddeline, and there would be another, similar "api-compatibility" guideline? Or just the former and forget about the latter?
17:44:29 cdent do the former, and if there is demand and/or time do the latter
17:45:26 cdent i'm not sure if there is demand for the latter, but there was clearly demand for the former because people we're wielding the older (incomplete) guideline as a weapon
17:45:59 elmiko ouch
17:46:13 cdent were
17:46:14 edleafe I think that the latter would be more widely useful OpenStack-wide in improving APIs
17:46:20 cdent because I know edleafe is watching out for such things
17:46:21 elmiko it's starting to sound like the tag should really be "api-interop" focused then?
17:46:27 elmiko edleafe: ++
17:46:30 edleafe cdent: I let that one slide
17:47:12 edleafe Not many projects will implement microversions and be as strict about them as interop requires
17:47:24 cdent edleafe: how do you react to the assertion that forward stability/compatibility is impossible in the kind of environment that openstack projects exist in?
17:47:57 cdent or the other assertion, held by some, that if you're not concerning yourself with interop you shouldn't be openstack?
17:47:59 edleafe But I can see many projects improving their versioning (*cough* glance *cough*) to at least not break clients
17:48:15 elmiko lol
17:48:35 cdent how did microversions leak in here?
17:48:38 edleafe Impossible? No
17:48:45 edleafe Difficult? Sure
17:49:28 edleafe cdent: because we determined that no one knew of any versioning system that could meet the demands of interop besides microversions
17:49:30 cdent (is proxying assertions to cover bases, I've completely lost touch with my own position on this stuff)
17:49:47 edleafe And thus demanding interop means demanding microversions
17:49:56 elmiko cdent: i can totally empathize
17:50:31 cdent if glance improved their versioning, even if they didn't use microversions™ they would still be microversions if they were selectable in some fashion
17:51:09 cdent if you are doing some kind of versioning
17:51:24 edleafe They could adopt semver
17:51:35 edleafe (and stick to it!)
17:51:45 sdague edleafe: that's actually a pretty accurate replay of what happened, we invented this thing because all the existing strategies broke down when you were talking about multiple deployments that were upgrading at independent schedules
17:51:58 cdent and you can choose what version you want at request time (by uri, or header, content type) then you have the equivalent functionality of microversioning, and thus you have interop
17:52:00 sdague edleafe: I really don't think semver is meaningful for network based services
17:52:47 sdague because semver is what you use in libraries to know what you can safely upgrade to, and what you just vendor. But you can't vendor a network api. :)
17:52:47 cdent brb
17:53:52 edleafe sdague: the point was that there are other ways to sanely version your API other than microversions
17:54:13 dtroyer besides, semver is hard enough to get right that consumers can't always trust it anyway… which is why I've come to the conclusion that I don't care _what_ you use to signal a change, just make it have an order (because ranges) and discoverable
17:54:27 edleafe Some projects have a visceral reaction to even thinking of microversions
17:54:36 edleafe I don't understand that, but it's there
17:54:49 dtroyer because anti-Nova sentiment?
17:55:04 edleafe dtroyer: that's part of it
17:55:23 edleafe but also because it's perceived as this huge amount of overhead
17:55:43 cdent it's perceived as a way to keep tech debt in both client libraries and servers
17:55:57 dtroyer heh, the overhead is thinking about the consumers of your API rathern than just treating it as write-only
17:56:10 cdent for some that's a valid cost, for the sake of the user, for others not so much
17:56:25 cdent round-about-jinx
17:57:47 edleafe sdague summarized the users well in https://review.openstack.org/#/c/444892/2/guidelines/microversions-architecture.rst
17:58:09 edleafe It's hard to satisfy all those use cases
17:58:10 sdague yeh, I need to get back to that document
17:58:36 sdague edleafe: right, well, it is why we ended up with the microversion solution
17:58:45 sdague that was our set of constraints
17:58:50 sdague solve for X
17:59:03 elmiko edleafe: i think there is another angle to avoiding microversions. for teams that are stretched or have hard downstream asks, it can be a tough load of tech debt to take on.
17:59:22 cdent if the current document didn't have a) any mention of microversions, b) the alternatives section what would it mean or imply for people? Would it serve a useful purpose?
17:59:34 edleafe elmiko: can you explain what the tech debt is that is taken on?
18:00:13 cdent it's not even debt, it's work
18:00:33 elmiko edleafe: so, imo, initially someone has to implement the handling of the microversion into the wsgi framework. additionally that knowledge needs to be communicated in a manner that will live on if the implementor disappears.
18:00:54 sdague cdent: what I heard in the room, it was the debt that people were concerned about. They didn't want to maintain old behaviors.
18:01:03 elmiko after it's implemented, then there is the function of keeping the older pathways working while new bits are added
18:01:10 cdent sdague: yeah, but that's not what elmiko is talking about here
18:01:10 sdague right
18:01:16 ZZelle dtroyer, hi
18:01:20 cdent s/here/at first/
18:01:28 sdague cdent: ok
18:01:50 edleafe elmiko: yeah, I get the initial workload to make the change, but really, any change requires work
18:01:55 elmiko as the old paths start to rot, i've experienced a brain-drain in the area of keeping them alive when bugs do creep in *or* if there needs to changes to the overall model of the application in question.
18:02:20 elmiko edleafe: agreed, i'm just airing my perceived drawbacks to a smaller team
18:02:34 elmiko my largest experience is with sahara
18:02:34 edleafe So for a project that wants to maintain compatibility, they have to maintain the old behaviors in any event
18:02:46 sdague elmiko: yeh, that's definitely a concern. But the real world implications of that are that a service is just going to stop working for existing clients.
18:03:12 sdague which, makes it a hard choice for people to choose to deploy and count on
18:03:19 elmiko sdague: agreed
18:03:43 elmiko bare in mind that i'm mainly talking about projects that may not be hot-beds of openstack activity. (for example sahara)
18:03:47 edleafe elmiko: re: bitrot - yeah, agreed. That's why I don't subscribe to the "once an API is released, you have to maintain it forever" school of thought
18:04:09 edleafe elmiko: see: https://blog.leafe.com/api-longevity/
18:04:15 sdague edleafe: it mostly depends on who has control over the deployment

Earlier   Later