<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
</head>
<body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">
<br class="">
<div>
<blockquote type="cite" class="">
<div class="">On Feb 6, 2017, at 3:28 PM, Ken'ichi Ohmichi <<a href="mailto:ken1ohmichi@gmail.com" class="">ken1ohmichi@gmail.com</a>> wrote:</div>
<br class="Apple-interchange-newline">
<div class=""><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">2017-02-06
 6:45 GMT-08:00 Brian Rosmaita <</span><a href="mailto:rosmaita.fossdev@gmail.com" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;" class="">rosmaita.fossdev@gmail.com</a><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">>:</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">
<blockquote type="cite" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;" class="">
On 2/6/17 5:51 AM, Jordan Pittier wrote:<br class="">
[super-enormous snip -- Chris, Ken, and Jordan make good points, I<br class="">
encourage you to read the entire thread; I just want to concentrate on<br class="">
one point]<br class="">
<blockquote type="cite" class=""><br class="">
I would say we should make compromise, not solve dilemma. I can live in a<br class="">
world where we sometimes allow an API change and sometimes prevent it.<br class="">
<br class="">
</blockquote>
+1000<br class="">
<br class="">
I agree with Jordan.  We need to look at the context of each specific<br class="">
case and decide whether a change is OK based on the details.  We've<br class="">
already got the guideline that says "in general", you shouldn't change<br class="">
the response code, and we respect that.  The Glance team isn't claiming<br class="">
that the guideline is incorrect--we're just saying that given the<br class="">
context of this specific bug (that is, it's been documented for a long<br class="">
time to return a 204, all other metadefs DELETE calls are documented to<br class="">
return a 204, all the other metadefs DELETE calls do in fact return a<br class="">
204, etc.), it makes sense that this case is an exception.<br class="">
<br class="">
Granting an exception here doesn't mean that the floodgates have opened<br class="">
for an "anything goes" approach to API changes.  It just means that an<br class="">
exception is appropriate in this particular case.  I am being a bit<br class="">
disingenuous there because if an exception is appropriate in this case,<br class="">
then it will be appropriate in other relevantly similar cases.  But<br class="">
"relevant similarity" will include the entire context of the case, for<br class="">
example, whether there was a published API contract, whether the other<br class="">
similar calls behave as documented, etc.  From 10,000 meters, it looks<br class="">
like what we're advocating is "It's OK to change a response code".  But<br class="">
when you look more closely, our claim is that given the details of this<br class="">
particular bug, it makes sense to fix it in the code and not in the docs.<br class="">
<br class="">
To summarize, my point is that we shouldn't be worried that this case is<br class="">
going to set a precedent.  It would be worrisome if it were going to set<br class="">
a *bad* precedent, but when you look at the details of the situation, I<br class="">
don't think it will.  So it looks to me, anyway, that a compromise is in<br class="">
order here.  (In case I'm being too obscure, what I mean is: we should<br class="">
agree that it's OK for the Glance team to fix this bug in the code with<br class="">
patch <a href="https://review.openstack.org/#/c/420038" class="">https://review.openstack.org/#/c/420038</a>/.)<br class="">
</blockquote>
<br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">
<span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">I
 feel this case is very common case when we want to chang success status code.</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">
<span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">Because
 I cannot find the other motivation for changing success status</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">
<span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">code
 except we are finding bugs like this case.</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">
<br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">
<span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">So
 if accepting this case, I guess we drop the following guideline completely[1]</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">
<br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">
<span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class=""> The
 following types of changes are generally *not* considered acceptable:</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">
<span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">      Changing
 which response code is returned on success.</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">
</div>
</blockquote>
<div><br class="">
</div>
<div>This isn't an all or nothing proposition and I don't think it needs to be dropped completely. Members of an OpenStack project that want to adhere to the guidelines can use their judgement and take the guidance, that those types of changes are generally
 not considered acceptable, into account.</div>
<div><br class="">
</div>
<div>Each and every OpenStack project are themselves responsible for providing a good UX for their users. They need to be willing to fix genuine code bugs in order to improve that UX. Human judgement is used to define "genuine" in this case. </div>
<div><br class="">
</div>
<div>If they become unwilling to fix bugs because it changes some aspect of the UX (the API in this case) and users have to react to that change then we'll eventually be left with a bug-ridden foundation. I abhor backwards incompatible changes as much as the
 next dev but building on buggy code is the worst UX of all. (Yes, I'm the one who made the Internet Explorer analogy.)</div>
<div><br class="">
</div>
<div>Discussion over this particular issue is helping us form the guideline. But please note how I specified "Members of an OpenStack project" above. I want to make it clear that it is not the API WG's role to adjudicate on particular issues. The API WG can
 offer opinions, clarify the intention of a guideline, adjust guidelines if they're not clear, etc. The responsibility lies with the project to make good decisions for their users. </div>
<div><br class="">
</div>
<div>Regards,</div>
<div>Everett</div>
<div><br class="">
</div>
<div><br class="">
</div>
</div>
</body>
</html>