)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"6900c78960a12e760b805d827812270671abbf9c","unresolved":false,"context_lines":[{"line_number":9,"context_line":"This adds a \"next_min_version\" field in the versions body returned by"},{"line_number":10,"context_line":"the root endpoint for a service using microversions. This gives a clear"},{"line_number":11,"context_line":"signal to clients that the minimum supported microversion is going to"},{"line_number":12,"context_line":"change. It also adds a \"not_before\" field that guarantees the that the"},{"line_number":13,"context_line":"current minimum version will be supported up to that date, giving"},{"line_number":14,"context_line":"consumers a sense of how quickly they need to update their programs."},{"line_number":15,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"5f201791_cd7a1f23","line":12,"updated":"2017-06-21 19:51:31.000000000","message":"s/the that/that/","commit_id":"af592a079f0efc74e3bf320ec7e149044bed466f"}],"guidelines/microversion_specification.rst":[{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"c291ba153516b582dc233b70f2e4b7bc6379c9e0","unresolved":false,"context_lines":[{"line_number":132,"context_line":""},{"line_number":133,"context_line":"The Version API for each service should return the minimum and maximum"},{"line_number":134,"context_line":"versions. These values are used by the client to discover the supported API"},{"line_number":135,"context_line":"versions. A service may also return the next minimum version, which indicates"},{"line_number":136,"context_line":"that the minimum version will be changed, and clients may need to be changed"},{"line_number":137,"context_line":"to request a newer version before the minimum changes."},{"line_number":138,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a1ff146_75693225","line":135,"updated":"2017-03-15 19:31:50.000000000","message":"It feels like this should be \"should\", not \"may\". Would we send an empty string if we did decide to always include it and there was currently no deprecation?\n\nIt seems like we may want to always include this field so clients are more inclined to start looking at it, and know something might be coming.","commit_id":"908cc947969b6b7a22b85bc38602dc09b3901ee0"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"35945301398923785fcdf35638ab2635a54c5a63","unresolved":false,"context_lines":[{"line_number":132,"context_line":""},{"line_number":133,"context_line":"The Version API for each service should return the minimum and maximum"},{"line_number":134,"context_line":"versions. These values are used by the client to discover the supported API"},{"line_number":135,"context_line":"versions. A service may also return the next minimum version, which indicates"},{"line_number":136,"context_line":"that the minimum version will be changed, and clients may need to be changed"},{"line_number":137,"context_line":"to request a newer version before the minimum changes."},{"line_number":138,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a1ff146_0008be90","line":135,"in_reply_to":"3a1ff146_75693225","updated":"2017-03-15 19:56:55.000000000","message":"Agree - much easier to check if you know it\u0027s going to be there. An empty string is fine; another alternative is to send the current minimum as the next minimum, meaning that no change is planned soon.","commit_id":"908cc947969b6b7a22b85bc38602dc09b3901ee0"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"c291ba153516b582dc233b70f2e4b7bc6379c9e0","unresolved":false,"context_lines":[{"line_number":179,"context_line":"SUPPORTED     An older version of the API. No new features will be added to"},{"line_number":180,"context_line":"              this version, but any bugs discovered in the code may be fixed."},{"line_number":181,"context_line":"DEPRECATED    This API will be removed in the foreseeable future. You should"},{"line_number":182,"context_line":"              start planning on using alternatives."},{"line_number":183,"context_line":"EXPERIMENTAL  This API is under development (\u0027alpha\u0027), and you can expect it to"},{"line_number":184,"context_line":"              change or even be removed."},{"line_number":185,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d  \u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a1ff146_d52bc6e9","line":182,"updated":"2017-03-15 19:31:50.000000000","message":"Do we want to use this status if next_min_version exists? It seems to me this implies the entire endpoint (e.g. /v2) is being deprecated, which isn\u0027t the case.","commit_id":"908cc947969b6b7a22b85bc38602dc09b3901ee0"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"35945301398923785fcdf35638ab2635a54c5a63","unresolved":false,"context_lines":[{"line_number":179,"context_line":"SUPPORTED     An older version of the API. No new features will be added to"},{"line_number":180,"context_line":"              this version, but any bugs discovered in the code may be fixed."},{"line_number":181,"context_line":"DEPRECATED    This API will be removed in the foreseeable future. You should"},{"line_number":182,"context_line":"              start planning on using alternatives."},{"line_number":183,"context_line":"EXPERIMENTAL  This API is under development (\u0027alpha\u0027), and you can expect it to"},{"line_number":184,"context_line":"              change or even be removed."},{"line_number":185,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d  \u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a1ff146_0016fea6","line":182,"in_reply_to":"3a1ff146_d52bc6e9","updated":"2017-03-15 19:56:55.000000000","message":"No, since your assumption that the entire endpoint is deprecated is correct. This would be used after, say, a service goes from v2 to v3, but still wants to keep v2 around for existing users.","commit_id":"908cc947969b6b7a22b85bc38602dc09b3901ee0"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"c291ba153516b582dc233b70f2e4b7bc6379c9e0","unresolved":false,"context_lines":[{"line_number":199,"context_line":"     \"min_version\": {"},{"line_number":200,"context_line":"      \"type\": \"string\", \"pattern\": \"^([1-9]\\d*)\\.([1-9]\\d*|0)$\""},{"line_number":201,"context_line":"     }"},{"line_number":202,"context_line":"  }"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"An example HTTP Header response:"},{"line_number":205,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a1ff146_5540b6a5","line":202,"updated":"2017-03-15 19:31:50.000000000","message":"Do we also want to add next_min_version to the error response?","commit_id":"908cc947969b6b7a22b85bc38602dc09b3901ee0"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"35945301398923785fcdf35638ab2635a54c5a63","unresolved":false,"context_lines":[{"line_number":199,"context_line":"     \"min_version\": {"},{"line_number":200,"context_line":"      \"type\": \"string\", \"pattern\": \"^([1-9]\\d*)\\.([1-9]\\d*|0)$\""},{"line_number":201,"context_line":"     }"},{"line_number":202,"context_line":"  }"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"An example HTTP Header response:"},{"line_number":205,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a1ff146_a078caf3","line":202,"in_reply_to":"3a1ff146_5540b6a5","updated":"2017-03-15 19:56:55.000000000","message":"No, since it is irrelevant to the error being reported.","commit_id":"908cc947969b6b7a22b85bc38602dc09b3901ee0"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"2deaf455827e23f097fb1f89e366cfd9d159ef7d","unresolved":false,"context_lines":[{"line_number":134,"context_line":"versions. These values are used by the client to discover the supported API"},{"line_number":135,"context_line":"versions. A service should also return the next minimum version, which"},{"line_number":136,"context_line":"indicates that the minimum version will be changed, and clients may need to be"},{"line_number":137,"context_line":"changed to request a newer version before the minimum changes. If there are no"},{"line_number":138,"context_line":"plans to change the minimum microversion, the next minimum version should be"},{"line_number":139,"context_line":"the same as the current."},{"line_number":140,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"1a1ced50_c958ac59","line":137,"updated":"2017-03-17 16:35:05.000000000","message":"How exactly do you see it communicated.\n\nLet\u0027s take an example. I\u0027m working on an app using compute API v2.1. It works fine for me. I know that OpenStack is famous for Stability and Compatibility, so I ship my app to clients and go away. Assuming that it\u0027s going to work until the end of the times.\n\nNow Nova plans to remove v2.1. My app actually works with v2.4, but due to how awesome our API versioning is, it will break. My app receives next_min_version\u003d\"2.4\". What happens next? My users get ugly warnings? Run to me reporting bugs? Well, if I care about my app, I\u0027ve learned about the coming change from the release notes. If I don\u0027t - goodbye.\n\nTL;DR the actual production story around this feature is unclear to me.","commit_id":"bdf496bd2192797e365512998fa41d3c66100bd4"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"7039b285e2b29cda4d46d6d84e66220d5ab99a99","unresolved":false,"context_lines":[{"line_number":134,"context_line":"versions. These values are used by the client to discover the supported API"},{"line_number":135,"context_line":"versions. A service should also return the next minimum version, which"},{"line_number":136,"context_line":"indicates that the minimum version will be changed, and clients may need to be"},{"line_number":137,"context_line":"changed to request a newer version before the minimum changes. If there are no"},{"line_number":138,"context_line":"plans to change the minimum microversion, the next minimum version should be"},{"line_number":139,"context_line":"the same as the current."},{"line_number":140,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"ffe62b97_72dae417","line":137,"in_reply_to":"1a1ced50_596005cf","updated":"2017-03-24 14:18:32.000000000","message":"This is essentially a deprecation warning. Like all such warnings, they are only effective if people pay attention. So the app developer who releases an app and then abandons his users is never going to see this, and yes, her app will break.\n\nI\u0027m not in the \"this code must work exactly the same forever!\" camp, having been in this business a long time and having never witnessed that ever actually happening. I *am* in the \"no surprises, please\" camp, though, so giving a deprecation signal like this is a good step to reducing the surprise when a min version changes.","commit_id":"bdf496bd2192797e365512998fa41d3c66100bd4"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"4cd2cd9430d821064dfc857511ea3f690c66b9f3","unresolved":false,"context_lines":[{"line_number":134,"context_line":"versions. These values are used by the client to discover the supported API"},{"line_number":135,"context_line":"versions. A service should also return the next minimum version, which"},{"line_number":136,"context_line":"indicates that the minimum version will be changed, and clients may need to be"},{"line_number":137,"context_line":"changed to request a newer version before the minimum changes. If there are no"},{"line_number":138,"context_line":"plans to change the minimum microversion, the next minimum version should be"},{"line_number":139,"context_line":"the same as the current."},{"line_number":140,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"1a1ced50_596005cf","line":137,"in_reply_to":"1a1ced50_c958ac59","updated":"2017-03-17 18:40:11.000000000","message":"Yes, I agree, this doesn\u0027t help applications that are already deployed. And doesn\u0027t help people that have already walked away because they believe their application will never break.\n\nOpenStack has always taken the stance that we should never break these users; this patch changes that assumption, because it\u0027s becoming a burden to support everything forever. Instead, we get changes like nova removing nova-network, and breaking the older API versions that used it instead of removing them. And so we break users anyway, but without a signal.\n\nWe do need to be able to eventually move the version up, and need a mechanism to communicate that to clients (besides the normal release notes, email lists, etc). This change proposes such a mechanism. The earlier we add it, the more apps are written that know this can happen and might look for this signal.\n\nI guess I also hope that no developer believes an app can work forever, no matter how stable its dependencies, but that could just be me. :)","commit_id":"bdf496bd2192797e365512998fa41d3c66100bd4"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"2deaf455827e23f097fb1f89e366cfd9d159ef7d","unresolved":false,"context_lines":[{"line_number":136,"context_line":"indicates that the minimum version will be changed, and clients may need to be"},{"line_number":137,"context_line":"changed to request a newer version before the minimum changes. If there are no"},{"line_number":138,"context_line":"plans to change the minimum microversion, the next minimum version should be"},{"line_number":139,"context_line":"the same as the current."},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"A version response would look as follows. This example is from the compute API"},{"line_number":142,"context_line":"provided by Nova::"}],"source_content_type":"text/x-rst","patch_set":3,"id":"1a1ced50_e955681d","line":139,"updated":"2017-03-17 16:35:05.000000000","message":"I guess for backward compatibility, missing next_min_version has to be assumed to be the same as min_version.","commit_id":"bdf496bd2192797e365512998fa41d3c66100bd4"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"83f94b1dfdc63699f0744b1b8284e991d6ce01c7","unresolved":false,"context_lines":[{"line_number":136,"context_line":"indicates that the minimum version will be changed, and clients may need to be"},{"line_number":137,"context_line":"changed to request a newer version before the minimum changes. If there are no"},{"line_number":138,"context_line":"plans to change the minimum microversion, the next minimum version should be"},{"line_number":139,"context_line":"the same as the current."},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"A version response would look as follows. This example is from the compute API"},{"line_number":142,"context_line":"provided by Nova::"}],"source_content_type":"text/x-rst","patch_set":3,"id":"bff0334d_788777d9","line":139,"in_reply_to":"1a1ced50_55b60b8b","updated":"2017-04-05 19:37:38.000000000","message":"Should we make that explicit with something like\n\n\"If the next_min_version field is not present it\u0027s value can be assumed to be the same as min_version.\"","commit_id":"bdf496bd2192797e365512998fa41d3c66100bd4"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"4cd2cd9430d821064dfc857511ea3f690c66b9f3","unresolved":false,"context_lines":[{"line_number":136,"context_line":"indicates that the minimum version will be changed, and clients may need to be"},{"line_number":137,"context_line":"changed to request a newer version before the minimum changes. If there are no"},{"line_number":138,"context_line":"plans to change the minimum microversion, the next minimum version should be"},{"line_number":139,"context_line":"the same as the current."},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"A version response would look as follows. This example is from the compute API"},{"line_number":142,"context_line":"provided by Nova::"}],"source_content_type":"text/x-rst","patch_set":3,"id":"1a1ced50_55b60b8b","line":139,"in_reply_to":"1a1ced50_e955681d","updated":"2017-03-17 18:40:11.000000000","message":"Yep","commit_id":"bdf496bd2192797e365512998fa41d3c66100bd4"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"2deaf455827e23f097fb1f89e366cfd9d159ef7d","unresolved":false,"context_lines":[{"line_number":155,"context_line":"                \"status\": \"CURRENT\","},{"line_number":156,"context_line":"                \"max_version\": \"5.2\","},{"line_number":157,"context_line":"                \"min_version\": \"2.1\","},{"line_number":158,"context_line":"                \"next_min_version\": \"2.4\""},{"line_number":159,"context_line":"            },"},{"line_number":160,"context_line":"       ]"},{"line_number":161,"context_line":"    }"}],"source_content_type":"text/x-rst","patch_set":3,"id":"1a1ced50_0931e40b","line":158,"updated":"2017-03-17 16:35:05.000000000","message":"\"next\" is quite vague, I think we should report some ETA for when it\u0027s going to happen. Like:\n\n \"next_version_change\": {\"min_version\": \"2.4\", \"estimated_date\": \"01.02.2018\"}","commit_id":"bdf496bd2192797e365512998fa41d3c66100bd4"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"4cd2cd9430d821064dfc857511ea3f690c66b9f3","unresolved":false,"context_lines":[{"line_number":155,"context_line":"                \"status\": \"CURRENT\","},{"line_number":156,"context_line":"                \"max_version\": \"5.2\","},{"line_number":157,"context_line":"                \"min_version\": \"2.1\","},{"line_number":158,"context_line":"                \"next_min_version\": \"2.4\""},{"line_number":159,"context_line":"            },"},{"line_number":160,"context_line":"       ]"},{"line_number":161,"context_line":"    }"}],"source_content_type":"text/x-rst","patch_set":3,"id":"1a1ced50_f590d7ee","line":158,"in_reply_to":"1a1ced50_0931e40b","updated":"2017-03-17 18:40:11.000000000","message":"I wish we could. However, look at the user survey results. Some people deploy each release right away, some wait three years. We can estimate when it will be released, but can never estimate when a user sees it.","commit_id":"bdf496bd2192797e365512998fa41d3c66100bd4"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"35039d83f8d550763a87f844b8b8e96dce6ede92","unresolved":false,"context_lines":[{"line_number":155,"context_line":"                \"status\": \"CURRENT\","},{"line_number":156,"context_line":"                \"max_version\": \"5.2\","},{"line_number":157,"context_line":"                \"min_version\": \"2.1\","},{"line_number":158,"context_line":"                \"next_min_version\": \"2.4\""},{"line_number":159,"context_line":"            },"},{"line_number":160,"context_line":"       ]"},{"line_number":161,"context_line":"    }"}],"source_content_type":"text/x-rst","patch_set":3,"id":"ffe62b97_2b04097b","line":158,"in_reply_to":"1a1ced50_4c214eb4","updated":"2017-03-23 21:11:42.000000000","message":"\u003e Does that mean \"whoa, we aren\u0027t safe anymore, do something\"?\n\nThis is exactly what I mean. I believe this vague message is still better than no time estimate at all.\n\nE.g. when I see a deprecation message in a service / puppet output, I don\u0027t know if it was just deprecated yesterday (and I have time to switch) or 2 years ago (and OMG IT\u0027S URGENT). This is kind of estimate I want this datetime to convey.","commit_id":"bdf496bd2192797e365512998fa41d3c66100bd4"},{"author":{"_account_id":13295,"name":"Mario Villaplana","email":"mario.villaplana@gmail.com","username":"mariojv"},"change_message_id":"204da2d14bd53fbfc8d3cb7484df860f624423e8","unresolved":false,"context_lines":[{"line_number":155,"context_line":"                \"status\": \"CURRENT\","},{"line_number":156,"context_line":"                \"max_version\": \"5.2\","},{"line_number":157,"context_line":"                \"min_version\": \"2.1\","},{"line_number":158,"context_line":"                \"next_min_version\": \"2.4\""},{"line_number":159,"context_line":"            },"},{"line_number":160,"context_line":"       ]"},{"line_number":161,"context_line":"    }"}],"source_content_type":"text/x-rst","patch_set":3,"id":"1a1ced50_c5d1bf24","line":158,"in_reply_to":"1a1ced50_a4d060ca","updated":"2017-03-22 22:19:39.000000000","message":"From a user perspective, I\u0027d agree that some sort of ETA (\"This API Guaranteed Fresh Until 01.02.2018\") would be useful.\n\nOtherwise, if I were unaware of OpenStack release cycle times, I might see the next_min_version for 2 years and assume it\u0027s just unused cruft before I\u0027m broken.\n\nI could also use the ETA to set deadlines for when I need to have my tooling / app upgraded to use a new API version.","commit_id":"bdf496bd2192797e365512998fa41d3c66100bd4"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"9089087149271bff7accbb98e50e1d167e00b334","unresolved":false,"context_lines":[{"line_number":155,"context_line":"                \"status\": \"CURRENT\","},{"line_number":156,"context_line":"                \"max_version\": \"5.2\","},{"line_number":157,"context_line":"                \"min_version\": \"2.1\","},{"line_number":158,"context_line":"                \"next_min_version\": \"2.4\""},{"line_number":159,"context_line":"            },"},{"line_number":160,"context_line":"       ]"},{"line_number":161,"context_line":"    }"}],"source_content_type":"text/x-rst","patch_set":3,"id":"1a1ced50_4c214eb4","line":158,"in_reply_to":"1a1ced50_c5d1bf24","updated":"2017-03-23 18:02:34.000000000","message":"I\u0027m unclear on how this would work and what it would mean.\n\nSo the idea here is something like in queens I push out some code that says:\n\n    {[...]\n      \"next_min_version\": \"2.4\",\n      \"planned_version_change_eta\": \"2018-04-01\",\n      [...]\n     }\n\nThen in the summer (June) of 2018 a deployer A upgrades to queens. Now that date is in the past.\n\nHow am I supposed to read that? Does that mean \"whoa, we aren\u0027t safe anymore, do something\"?\n\nMeanwhile deploy B upgrades to queens in 2017.\n\nFrom what I can tell time doesn\u0027t mean anything real with these kinds of variances in deployments. It might be that the best we can do is for \"next_min_version\" to mean \"if you se this anywhere in any of your clouds, it\u0027s time to start making preparations\".","commit_id":"bdf496bd2192797e365512998fa41d3c66100bd4"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"df62cfee8a10e75651ae96313d2a6398f8d8a8a7","unresolved":false,"context_lines":[{"line_number":155,"context_line":"                \"status\": \"CURRENT\","},{"line_number":156,"context_line":"                \"max_version\": \"5.2\","},{"line_number":157,"context_line":"                \"min_version\": \"2.1\","},{"line_number":158,"context_line":"                \"next_min_version\": \"2.4\""},{"line_number":159,"context_line":"            },"},{"line_number":160,"context_line":"       ]"},{"line_number":161,"context_line":"    }"}],"source_content_type":"text/x-rst","patch_set":3,"id":"1a1ced50_a4d060ca","line":158,"in_reply_to":"1a1ced50_f590d7ee","updated":"2017-03-22 13:18:57.000000000","message":"\u003e  We can estimate when it will be released, but can never estimate when a user sees it.\n\nWe should estimate until which date it won\u0027t be removed. E.g. we put Jan 1 2018 here. It means that before that date you\u0027re safe to still use the old version. After that date you should expect to get broken at any moment. WDYT?","commit_id":"bdf496bd2192797e365512998fa41d3c66100bd4"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"7039b285e2b29cda4d46d6d84e66220d5ab99a99","unresolved":false,"context_lines":[{"line_number":155,"context_line":"                \"status\": \"CURRENT\","},{"line_number":156,"context_line":"                \"max_version\": \"5.2\","},{"line_number":157,"context_line":"                \"min_version\": \"2.1\","},{"line_number":158,"context_line":"                \"next_min_version\": \"2.4\""},{"line_number":159,"context_line":"            },"},{"line_number":160,"context_line":"       ]"},{"line_number":161,"context_line":"    }"}],"source_content_type":"text/x-rst","patch_set":3,"id":"ffe62b97_52fa4042","line":158,"in_reply_to":"ffe62b97_2b04097b","updated":"2017-03-24 14:18:32.000000000","message":"We can bikeshed over the name, but I think that this would be a useful addition. \n\nMy choice for the name is \"not_before\" - short and descriptive.","commit_id":"bdf496bd2192797e365512998fa41d3c66100bd4"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"d73fafad5d99f0d9f7b91b5f1703463586401473","unresolved":false,"context_lines":[{"line_number":155,"context_line":"                \"status\": \"CURRENT\","},{"line_number":156,"context_line":"                \"max_version\": \"5.2\","},{"line_number":157,"context_line":"                \"min_version\": \"2.1\","},{"line_number":158,"context_line":"                \"next_min_version\": \"2.4\""},{"line_number":159,"context_line":"            },"},{"line_number":160,"context_line":"       ]"},{"line_number":161,"context_line":"    }"}],"source_content_type":"text/x-rst","patch_set":3,"id":"ffe62b97_1833b9ad","line":158,"in_reply_to":"ffe62b97_52fa4042","updated":"2017-03-24 14:43:52.000000000","message":"I think there are communication challenges with how we communicate versioning to:\n\n- operators that are getting the software\n- users who are one step removed, and can\u0027t choose when their operator upgrades\n\nI think that next_min_version is signalling like deprecation warnings in code. People can choose to use that information or not. Is it a perfect loop? Nope. But it does seem like useful signaling when you are dealing with multi cloud federated environments that you have no control over their upgrade cadence.","commit_id":"bdf496bd2192797e365512998fa41d3c66100bd4"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"fb6d65b94ae097d1f8f0cd1be5997253f3954e9e","unresolved":false,"context_lines":[{"line_number":153,"context_line":"                    }"},{"line_number":154,"context_line":"                ],"},{"line_number":155,"context_line":"                \"status\": \"CURRENT\","},{"line_number":156,"context_line":"                \"max_version\": \"5.2\","},{"line_number":157,"context_line":"                \"min_version\": \"2.1\","},{"line_number":158,"context_line":"                \"next_min_version\": \"2.4\","},{"line_number":159,"context_line":"                \"not_before\": \"2019-12-31\""},{"line_number":160,"context_line":"            },"}],"source_content_type":"text/x-rst","patch_set":5,"id":"5ff73747_142ddca7","line":157,"range":{"start_line":156,"start_character":0,"end_line":157,"end_character":37},"updated":"2017-05-02 21:31:14.000000000","message":"This point might be out of scope from this patch, but the above sample versions bring it to me at this time.\n\nOn Nova side, I considered version X is never bumped and X is always 2. But like the above sample versions, we should be able to bump version X as the microversions specification (not only for Nova).\n\nWhen bumping version X, current spec doesn\u0027t have the way to notify which version is boundary between version X. For example, we don\u0027t know the maximum microversions of 2.x, 3.x, 4.x on the above sample. Might we need some way to do that on this kind of version information.","commit_id":"2f990ce9e7503ac4b748f004f48c1d964c88f037"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"20b7b9a87b36e85924c8b05dcdfced0ca7ac10ae","unresolved":false,"context_lines":[{"line_number":153,"context_line":"                    }"},{"line_number":154,"context_line":"                ],"},{"line_number":155,"context_line":"                \"status\": \"CURRENT\","},{"line_number":156,"context_line":"                \"max_version\": \"5.2\","},{"line_number":157,"context_line":"                \"min_version\": \"2.1\","},{"line_number":158,"context_line":"                \"next_min_version\": \"2.4\","},{"line_number":159,"context_line":"                \"not_before\": \"2019-12-31\""},{"line_number":160,"context_line":"            },"}],"source_content_type":"text/x-rst","patch_set":5,"id":"5ff73747_9f2b4581","line":157,"range":{"start_line":156,"start_character":0,"end_line":157,"end_character":37},"in_reply_to":"5ff73747_142ddca7","updated":"2017-05-02 21:35:42.000000000","message":"That\u0027s a very good point. I\u0027ll fix it.","commit_id":"2f990ce9e7503ac4b748f004f48c1d964c88f037"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"0711ea84529b70aa5b6628d5dec73f208edf7e79","unresolved":false,"context_lines":[{"line_number":156,"context_line":"                \"max_version\": \"5.2\","},{"line_number":157,"context_line":"                \"min_version\": \"2.1\","},{"line_number":158,"context_line":"                \"next_min_version\": \"2.4\","},{"line_number":159,"context_line":"                \"not_before\": \"2019-12-31\""},{"line_number":160,"context_line":"            },"},{"line_number":161,"context_line":"       ]"},{"line_number":162,"context_line":"    }"}],"source_content_type":"text/x-rst","patch_set":5,"id":"5ff73747_9587af62","line":159,"updated":"2017-05-02 17:06:12.000000000","message":"I\u0027m okay with \"not_before\" because I\u0027m in context thinking about it here. But I wonder if it is insufficiently associated with \"next_min_version\". Because both are top level (and I like that) it is hard to know that \"not_before\" goes with \"next_min_version\".\n\nOn the other hand \"min_version_raise_not_before\" or something else similarly verbose is dreadful.","commit_id":"2f990ce9e7503ac4b748f004f48c1d964c88f037"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"20b7b9a87b36e85924c8b05dcdfced0ca7ac10ae","unresolved":false,"context_lines":[{"line_number":156,"context_line":"                \"max_version\": \"5.2\","},{"line_number":157,"context_line":"                \"min_version\": \"2.1\","},{"line_number":158,"context_line":"                \"next_min_version\": \"2.4\","},{"line_number":159,"context_line":"                \"not_before\": \"2019-12-31\""},{"line_number":160,"context_line":"            },"},{"line_number":161,"context_line":"       ]"},{"line_number":162,"context_line":"    }"}],"source_content_type":"text/x-rst","patch_set":5,"id":"5ff73747_df30adeb","line":159,"in_reply_to":"5ff73747_9587af62","updated":"2017-05-02 21:35:42.000000000","message":"Yay! The bikeshedding begins!\n\n(jk)\n\nMaybe \"not_raise_before\"?","commit_id":"2f990ce9e7503ac4b748f004f48c1d964c88f037"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"3c44372c14f484ad05d61257fa4eab52ac3f144d","unresolved":false,"context_lines":[{"line_number":156,"context_line":"                \"max_version\": \"2.42\","},{"line_number":157,"context_line":"                \"min_version\": \"2.1\","},{"line_number":158,"context_line":"                \"next_min_version\": \"2.13\","},{"line_number":159,"context_line":"                \"not_raise_min_before\": \"2019-12-31\""},{"line_number":160,"context_line":"            },"},{"line_number":161,"context_line":"       ]"},{"line_number":162,"context_line":"    }"}],"source_content_type":"text/x-rst","patch_set":6,"id":"ff0f0b1f_0e69108a","line":159,"updated":"2017-05-19 11:48:10.000000000","message":"\"not raise\" sounds like instruction to me, rather than information. but I don\u0027t have better ideas.","commit_id":"25352ed43a4ee27d9cac390507df2ae446fe08b7"},{"author":{"_account_id":10670,"name":"Michael McCune","email":"elmiko@redhat.com","username":"mimccune"},"change_message_id":"c9a1a152c160e898b88db4c82de37ccdd6a5fc05","unresolved":false,"context_lines":[{"line_number":156,"context_line":"                \"max_version\": \"2.42\","},{"line_number":157,"context_line":"                \"min_version\": \"2.1\","},{"line_number":158,"context_line":"                \"next_min_version\": \"2.13\","},{"line_number":159,"context_line":"                \"not_raise_min_before\": \"2019-12-31\""},{"line_number":160,"context_line":"            },"},{"line_number":161,"context_line":"       ]"},{"line_number":162,"context_line":"    }"}],"source_content_type":"text/x-rst","patch_set":6,"id":"bf091321_c3bc3c6b","line":159,"in_reply_to":"bf091321_83f524ce","updated":"2017-06-08 16:42:57.000000000","message":"another suggestion was: earliest_min_raise_date","commit_id":"25352ed43a4ee27d9cac390507df2ae446fe08b7"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"00023b05b7e9407c017ca17097e58b814be1d2a1","unresolved":false,"context_lines":[{"line_number":156,"context_line":"                \"max_version\": \"2.42\","},{"line_number":157,"context_line":"                \"min_version\": \"2.1\","},{"line_number":158,"context_line":"                \"next_min_version\": \"2.13\","},{"line_number":159,"context_line":"                \"not_raise_min_before\": \"2019-12-31\""},{"line_number":160,"context_line":"            },"},{"line_number":161,"context_line":"       ]"},{"line_number":162,"context_line":"    }"}],"source_content_type":"text/x-rst","patch_set":6,"id":"bf091321_83f524ce","line":159,"in_reply_to":"df140735_7826ddd0","updated":"2017-06-08 16:29:08.000000000","message":"from irc: min_raise_not_before","commit_id":"25352ed43a4ee27d9cac390507df2ae446fe08b7"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"d3bce06bb3a4a6b0d10d85971ebdeccdc2570e43","unresolved":false,"context_lines":[{"line_number":156,"context_line":"                \"max_version\": \"2.42\","},{"line_number":157,"context_line":"                \"min_version\": \"2.1\","},{"line_number":158,"context_line":"                \"next_min_version\": \"2.13\","},{"line_number":159,"context_line":"                \"not_raise_min_before\": \"2019-12-31\""},{"line_number":160,"context_line":"            },"},{"line_number":161,"context_line":"       ]"},{"line_number":162,"context_line":"    }"}],"source_content_type":"text/x-rst","patch_set":6,"id":"ff0f0b1f_1f3fb687","line":159,"in_reply_to":"ff0f0b1f_0e69108a","updated":"2017-05-22 23:29:05.000000000","message":"I also am not a big fun of this name.. This seems like \"best by\" on the bottle of milk. We are saying \"You will be able to use current min_version still after the data, but that is not sure\" or something. The meaning is good for me, but the name is a little confusable..","commit_id":"25352ed43a4ee27d9cac390507df2ae446fe08b7"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"3a43846c8e5ea1a150aaa0730e2b598af764bf5d","unresolved":false,"context_lines":[{"line_number":156,"context_line":"                \"max_version\": \"2.42\","},{"line_number":157,"context_line":"                \"min_version\": \"2.1\","},{"line_number":158,"context_line":"                \"next_min_version\": \"2.13\","},{"line_number":159,"context_line":"                \"not_raise_min_before\": \"2019-12-31\""},{"line_number":160,"context_line":"            },"},{"line_number":161,"context_line":"       ]"},{"line_number":162,"context_line":"    }"}],"source_content_type":"text/x-rst","patch_set":6,"id":"df140735_7826ddd0","line":159,"in_reply_to":"ff0f0b1f_1f3fb687","updated":"2017-06-01 21:36:04.000000000","message":"I agree with Dmitry about the name, but do have a couple of suggestions:\n\nmin_version_eol_date - This is the earliest date that the current min_version will be EOL, provided we feel like that term is understood to describe the impending removal.\n\nnext_min_version_effective_date - The earliest date that the next_min_version will become min_version; could shorted by temoving either \u0027effective\u0027 or \u0027date\u0027.","commit_id":"25352ed43a4ee27d9cac390507df2ae446fe08b7"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"3c44372c14f484ad05d61257fa4eab52ac3f144d","unresolved":false,"context_lines":[{"line_number":188,"context_line":"                ],"},{"line_number":189,"context_line":"                \"status\": \"CURRENT\","},{"line_number":190,"context_line":"                \"max_version\": \"2.42\","},{"line_number":191,"context_line":"                \"min_version\": \"2.1\","},{"line_number":192,"context_line":"            },"},{"line_number":193,"context_line":"       ]"},{"line_number":194,"context_line":"    }"}],"source_content_type":"text/x-rst","patch_set":6,"id":"ff0f0b1f_ee05bcc3","line":191,"updated":"2017-05-19 11:48:10.000000000","message":"nit: last trailing comma is not supported in JSON IIRC","commit_id":"25352ed43a4ee27d9cac390507df2ae446fe08b7"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"d3bce06bb3a4a6b0d10d85971ebdeccdc2570e43","unresolved":false,"context_lines":[{"line_number":188,"context_line":"                ],"},{"line_number":189,"context_line":"                \"status\": \"CURRENT\","},{"line_number":190,"context_line":"                \"max_version\": \"2.42\","},{"line_number":191,"context_line":"                \"min_version\": \"2.1\","},{"line_number":192,"context_line":"            },"},{"line_number":193,"context_line":"       ]"},{"line_number":194,"context_line":"    }"}],"source_content_type":"text/x-rst","patch_set":6,"id":"ff0f0b1f_bf3faab2","line":191,"in_reply_to":"ff0f0b1f_ee05bcc3","updated":"2017-05-22 23:29:05.000000000","message":"yeah, nice catch. it would be nice to remove it as a sample.","commit_id":"25352ed43a4ee27d9cac390507df2ae446fe08b7"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"446b59448dc8894d1b2a05f7cbabc78af6c9df73","unresolved":false,"context_lines":[{"line_number":169,"context_line":"will not change. Note that this doesn\u0027t require that the minimum be raised on"},{"line_number":170,"context_line":"that date; that can happen any time afterwards. It is there to give operators a"},{"line_number":171,"context_line":"sense of how quickly they need to change their tooling to support it."},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"If there is no planned change to the minimum version, the response can omit the"},{"line_number":174,"context_line":"\u0027next_min_version\u0027 and \u0027not_before\u0027 values. Such a response would look like::"},{"line_number":175,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"5f201791_74bbb8c3","line":172,"range":{"start_line":172,"start_character":0,"end_line":172,"end_character":0},"updated":"2017-06-22 17:57:34.000000000","message":"This looks sane, and especially great for people upgrading to newer releases of OpenStack services aggressively or those that just chase trunk... \n\nI\u0027ve a question regarding stable branches of a service that forever serve a particular version set... what happens in the following situation:\n\n* In master, we decide to say version 1.6 is the next_minimum_version and we\u0027ll stop supporting anything \u003c1.6 after 3 months. \n* v1.6 is available in an older released version of the service. \n\nSo, is it suggested that this field be back ported to the versions API response to all stable branches where this next_minimum_version is available?","commit_id":"af592a079f0efc74e3bf320ec7e149044bed466f"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"387fe8acf1532957a013c33a7c46a0386002ed2a","unresolved":false,"context_lines":[{"line_number":169,"context_line":"will not change. Note that this doesn\u0027t require that the minimum be raised on"},{"line_number":170,"context_line":"that date; that can happen any time afterwards. It is there to give operators a"},{"line_number":171,"context_line":"sense of how quickly they need to change their tooling to support it."},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"If there is no planned change to the minimum version, the response can omit the"},{"line_number":174,"context_line":"\u0027next_min_version\u0027 and \u0027not_before\u0027 values. Such a response would look like::"},{"line_number":175,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"5f201791_df1ce514","line":172,"range":{"start_line":172,"start_character":0,"end_line":172,"end_character":0},"in_reply_to":"5f201791_74bbb8c3","updated":"2017-06-22 18:28:33.000000000","message":"That\u0027s an interesting point. I would guess that if a cloud providers never planned on updating, then no. But it would probably be recommended that a provider who does plan on upgrading their deployment add this information to their version discovery response.","commit_id":"af592a079f0efc74e3bf320ec7e149044bed466f"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"d450fb9fce8f3aa7e29faa3ef64eb1a88057bc98","unresolved":false,"context_lines":[{"line_number":169,"context_line":"will not change. Note that this doesn\u0027t require that the minimum be raised on"},{"line_number":170,"context_line":"that date; that can happen any time afterwards. It is there to give operators a"},{"line_number":171,"context_line":"sense of how quickly they need to change their tooling to support it."},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"If there is no planned change to the minimum version, the response can omit the"},{"line_number":174,"context_line":"\u0027next_min_version\u0027 and \u0027not_before\u0027 values. Such a response would look like::"},{"line_number":175,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"5f201791_bfac898c","line":172,"range":{"start_line":172,"start_character":0,"end_line":172,"end_character":0},"in_reply_to":"5f201791_df1ce514","updated":"2017-06-22 18:34:14.000000000","message":"+1... cloud providers upgrade to newer releases of the stable branch that they are on- ex: from stable/ocata r1 to stable/ocata r2 as one is released... and if we decide to raise the minimum version in the pike development cycle, back porting that notification to stable/ocata might be beneficial to the consumers of that cloud... because the cloud provider might someday decide to switch to stable/pike.. the lead time for the consumer is less since they get the notification nevertheless..","commit_id":"af592a079f0efc74e3bf320ec7e149044bed466f"}]}
