Earlier  
Posted Nick Remark
#openstack-sdks - 2017-04-03
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
18:04:39 sdague so... if sahara wasn't a thing the cloud operator deployed, but a thing that I deployed in my tenant
18:04:48 elmiko if my, downstream, employer has hot demands on what goals they would like to see for a particular cycle, it can extremely difficult to get traction for spending signifcant time doing a microversion re-write
18:04:49 sdague then I've got control on the upgrade cycle
18:04:59 sdague which makes it like vendored libraries
18:05:07 sdague and, then I think some of these concerns go away
18:05:13 elmiko sdague: totally agree
18:05:21 elmiko in-tenant services is a fantastic idea
18:05:31 sdague but when the user has no control of the upgrade schedule
18:06:06 sdague ... I have a hard time understanding a different path then the one we've taken
18:06:21 elmiko i feel like this is an area where, due to no ones fault, there are "services" that are embedded into the control plane which would be better served as application riding on top of openshift
18:06:40 elmiko er, openstack
18:06:46 elmiko sorry.. too many open*
18:06:57 cdent elmiko bleeds red
18:06:58 sdague heh
18:07:04 elmiko FOR THE HAT!!!!
18:07:17 edleafe sdague: I'm totally agreed on the microversion approach that nova has followed
18:07:27 sdague elmiko: yeh, that would have been an interesting different road to have taken
18:07:40 elmiko honestly though, i've doing way more with kubernetes recently and the model of deploying "heroic" services on top the orchestration substrate is a powerful idea
18:07:49 edleafe sdague: but I'm trying to find a middle ground to help improve all OpenStack APIs, even for those projects that reject microversions
18:08:08 elmiko sdague: ack, c'est la vie ;)
18:08:32 sdague elmiko: I do kind of wonder if zaneb's ideas around application tokens might get us back headed towards that path
18:08:55 elmiko sdague: i have not seen that written up, but it sounds interesting
18:09:07 cdent elmiko: https://review.openstack.org/#/c/447031/
18:09:13 elmiko cdent++
18:09:29 sdague edleafe: sure, I applaud that effort. However, I also feel like we've got a set of services where this matches well, and it would be nice to get that flag in the ground.
18:09:32 cdent (in the links in the bottom)
18:10:20 dtroyer ZZelle: hey
18:11:02 elmiko i totally agree with the thought that for certain "core" services, mandating microversions is a much stronger idea. but that takes us away from the big tent idea
18:12:01 cdent (I'm going to need to go at any moment now, I think, if there's a concrete outcome to this conversation that is germane to the doc, can somebody leave a new comment there so I can act on it?)
18:12:12 elmiko cdent: ack
18:12:17 cdent thanks
18:12:39 ZZelle dtroyer, about your comment in https://review.openstack.org/#/c/452328/1/doc/source/command-objects/server.rst
18:12:50 ZZelle dtroyer, i am not sure to understand what you mean
18:13:33 cdent I think being more specific about the scope of the doc and the rigor of the standard being set is probably a good way to go, especially if we leave open the option (we always do) for more docs later
18:13:34 cdent That moves the doc forward
18:13:45 cdent but I don't know that that helps us with what might be called the social problem.

Earlier   Later