Earlier  
Posted Nick Remark
#openstack-sdks - 2017-04-03
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 cdent brb
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: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 sdague right
18:01:10 cdent sdague: yeah, but that's not what elmiko is talking about here
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 edleafe So for a project that wants to maintain compatibility, they have to maintain the old behaviors in any event
18:02:34 elmiko my largest experience is with sahara
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.
18:13:58 cdent but it may be we don't need to do anything about that
18:14:06 dtroyer its just the form of the help line, we put the '(name or ID)' test at the end pretty much everywhere, except some differences have snuck in. Fix yours, I'll get the other ones
18:14:26 dtroyer there's an RST error in there too that stevemar noted but +2'd anyway
18:14:53 ZZelle dtroyer, so something like 'Server ... (name or ID).' instead of 'Server (name or ID) ...'?
18:15:04 stevemar ZZelle: yep
18:15:13 ZZelle stevemar, dtroyer good for me
18:15:17 dtroyer yes. look at nearly every other command in that file than the add commands near yours
18:15:18 elmiko cdent: imo, for a guideline that will define a tag, it should be as explicit as possible in terms of the hoops needed to jump through
18:15:37 elmiko so, that may speak to having 2 separate docs
18:17:23 cdent I remain a bit unclear on what the second doc is

Earlier   Later