| Posted | Nick | Remark | |
|---|---|---|---|
| #openstack-sdks - 2017-04-03 | |||
| 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 | |
| 18:18:48 | elmiko | i guess that would be needed if we couldn't make the first one specific enough? | |