<html>
  <head>
    <meta content="text/html; charset=windows-1252"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <br>
    <br>
    <div class="moz-cite-prefix">Le 16/02/2016 09:30, Sylvain Bauza a
      écrit :<br>
    </div>
    <blockquote cite="mid:56C2DE16.2060804@redhat.com" type="cite">
      <meta content="text/html; charset=windows-1252"
        http-equiv="Content-Type">
      <br>
      <br>
      <div class="moz-cite-prefix">Le 16/02/2016 04:09, Alex Xu a
        écrit :<br>
      </div>
      <blockquote
cite="mid:CAH7mGauM=23-OX9JbQNoMjqppEoL8XKrV9Nt9iqx6ivoH5fSVg@mail.gmail.com"
        type="cite">
        <div dir="ltr"><br>
          <div class="gmail_extra"><br>
            <div class="gmail_quote">2016-02-16 9:47 GMT+08:00 GHANSHYAM
              MANN <span dir="ltr"><<a moz-do-not-send="true"
                  href="mailto:ghanshyammann@gmail.com" target="_blank">ghanshyammann@gmail.com</a>></span>:<br>
              <blockquote class="gmail_quote" style="margin:0 0 0
                .8ex;border-left:1px #ccc solid;padding-left:1ex">Regards<br>
                Ghanshyam Mann<br>
                <span class=""><br>
                  <br>
                  On Mon, Feb 15, 2016 at 12:07 PM, Alex Xu <<a
                    moz-do-not-send="true"
                    href="mailto:soulxu@gmail.com">soulxu@gmail.com</a>>

                  wrote:<br>
                  > If we support 2.x.y, when we bump 'x' is a
                  problem. We didn't order the API<br>
                  > changes for now, the version of API change is
                  just based on the order of<br>
                  > patch merge. For support 2.x.y, we need bump 'y'
                  first for back-compatible<br>
                  > changes I guess.<br>
                  ><br>
                  > As I remember, we said before, the new feature is
                  the motivation of user<br>
                  > upgrade their client to support new version API,
                  whatever the new version is<br>
                  > backward compatible or incompatible. So I guess
                  the initial thinking we hope<br>
                  > user always upgrade their code than always stop
                  at old version? If we bump<br>
                  > 'x' after a lot of 'y', will that lead to user
                  always stop at 'x' version?<br>
                  > And the evolution of api will slow down.<br>
                  ><br>
                  > Or we limit to each release cycle. In each
                  release, we bump 'y' first, and<br>
                  > then bump 'x'. Even there isn't any
                  back-incompatible change in the release.<br>
                  > We still bump 'x' when released. Then we can
                  encourage user upgrade their<br>
                  > code. But I still think the back-incompatible API
                  change will be slow down<br>
                  > in development, as it need always merged after
                  back-compatible API change<br>
                  > patches.<br>
                  <br>
                </span>Yea that true and will be more complicated from
                development<br>
                perspective which leads to slow down the evolution of
                API changes.<br>
                But if we support x.y then still we can change x at any
                time back<br>
                in-comp changes happens(i mean before y also)? Or I may
                not be getting<br>
                the issue you mentioned about always bump y before x.<br>
              </blockquote>
              <div><br>
              </div>
              <div>If the back-incompatible change merged before
                back-compatible change, then 'y' become useless. For
                example, the initial version is 2.1.0, then we have 3
                back-comp and 3 in-comp changes, and we are unlucky,
                in-comp changes merged first, then we get version 2.4.3,
                then if user want to use those back-comp changes, it
                still need upgrade those 3 in-comp changes.</div>
              <div> </div>
              <blockquote class="gmail_quote" style="margin:0 0 0
                .8ex;border-left:1px #ccc solid;padding-left:1ex"> <br>
                I like the idea of distinguish the backward comp and
                in-comp changes<br>
                with x and y which always gives clear perspective about
                changes.<br>
                But it should not lead users to ignore y. I mean some
                backward comp<br>
                changes which are really good gets ignored by users as
                they start look<br>
                at the x only.<br>
                For example- "adding attribute in resource
                representation" is back<br>
                comp change (if so) and if that is added as y then, it
                might get<br>
                ignored by users.<br>
                <br>
                Another way to clearly distinguish backward comp and
                in-comp changes<br>
                is through documentation which was initially discussed
                during<br>
                microversion specs. Currently doc has good description
                about each<br>
                changes but not much clear way about backward comp or
                not.<br>
                Which we can do by adding a clear flag [Backward
                Compatible/<br>
                Incompatible] for each version in doc [1]-<br>
                <div>
                  <div class="h5"><br>
                  </div>
                </div>
              </blockquote>
              <div><br>
              </div>
              <div>+1 for doc the change is backward comp or not.</div>
            </div>
          </div>
        </div>
      </blockquote>
      <br>
      I'm not usually good at thinking API references, but something
      pinged my brain so lemme know if that's terrible or not.<br>
      Why not semantically say that :<br>
       - if the API microversion is a ten, then it's a non-backwards
      compatible change<br>
       - if not, it's backwards-compatible<br>
      <br>
      If you are like with the version #29 and add a new
      backwards-compatible version, then it would be #31 (and not #30).<br>
      <br>
      That way, you would still have a monotonic increase, which I think
      was an agreement when discussing about microversioning, but it
      would help the users which would know the semantics and just look
      whether a ten is between the version they use and the version they
      want (and if so, if it was implemented).<br>
      <br>
      Call me dumb, it's just a thought.<br>
      -Sylvain<br>
      <br>
    </blockquote>
    <br>
    One slight improvement could be to consider hundreds and not tens
    for major versions. That would leave 99 'minor' versions between
    majors, which I think is doable.<br>
    <br>
    -S<br>
    <br>
    <blockquote cite="mid:56C2DE16.2060804@redhat.com" type="cite">
      <blockquote
cite="mid:CAH7mGauM=23-OX9JbQNoMjqppEoL8XKrV9Nt9iqx6ivoH5fSVg@mail.gmail.com"
        type="cite">
        <div dir="ltr">
          <div class="gmail_extra">
            <div class="gmail_quote">
              <div> </div>
              <blockquote class="gmail_quote" style="margin:0 0 0
                .8ex;border-left:1px #ccc solid;padding-left:1ex">
                <div>
                  <div class="h5"> ><br>
                    ><br>
                    ><br>
                    > 2016-02-13 4:55 GMT+08:00 Andrew Laski <<a
                      moz-do-not-send="true"
                      href="mailto:andrew@lascii.com">andrew@lascii.com</a>>:<br>
                    >><br>
                    >> Starting a new thread to continue a thought
                    that came up in<br>
                    >><br>
                    >> <a moz-do-not-send="true"
href="http://lists.openstack.org/pipermail/openstack-dev/2016-February/086457.html"
                      rel="noreferrer" target="_blank">http://lists.openstack.org/pipermail/openstack-dev/2016-February/086457.html</a>.<br>
                    >> The Nova API microversion framework allows
                    for backwards compatible and<br>
                    >> backwards incompatible changes but there is
                    no way to programmatically<br>
                    >> distinguish the two. This means that as a
                    user of the API I need to<br>
                    >> understand every change between the version
                    I'm using now and a new<br>
                    >> version I would like to move to in case an
                    intermediate version changes<br>
                    >> default behaviors or removes something I'm
                    currently using.<br>
                    >><br>
                    >> I would suggest that a more user friendly
                    approach would be to<br>
                    >> distinguish the two types of changes.
                    Perhaps something like 2.x.y where<br>
                    >> x is bumped for a backwards incompatible
                    change and y is still<br>
                    >> monotonically increasing regardless of
                    bumps to x. So if the current<br>
                    >> version is 2.2.7 a new backwards compatible
                    change would bump to 2.2.8<br>
                    >> or a new backwards incompatible change
                    would bump to 2.3.8. As a user<br>
                    >> this would allow me to fairly freely bump
                    the version I'm consuming<br>
                    >> until x changes at which point I need to
                    take more care in moving to a<br>
                    >> new version.<br>
                    >><br>
                    >> Just wanted to throw the idea out to get
                    some feedback. Or perhaps this<br>
                    >> was already discussed and dismissed when
                    microversions were added and I<br>
                    >> just missed it.<br>
                    >><br>
                    >>
__________________________________________________________________________<br>
                    >> OpenStack Development Mailing List (not for
                    usage questions)<br>
                    >> Unsubscribe: <a moz-do-not-send="true"
href="http://OpenStack-dev-request@lists.openstack.org?subject:unsubscribe"
                      rel="noreferrer" target="_blank">OpenStack-dev-request@lists.openstack.org?subject:unsubscribe</a><br>
                    >> <a moz-do-not-send="true"
                      href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev"
                      rel="noreferrer" target="_blank">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br>
                    ><br>
                    ><br>
                    ><br>
                    >
__________________________________________________________________________<br>
                    > OpenStack Development Mailing List (not for
                    usage questions)<br>
                    > Unsubscribe: <a moz-do-not-send="true"
href="http://OpenStack-dev-request@lists.openstack.org?subject:unsubscribe"
                      rel="noreferrer" target="_blank">OpenStack-dev-request@lists.openstack.org?subject:unsubscribe</a><br>
                    > <a moz-do-not-send="true"
                      href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev"
                      rel="noreferrer" target="_blank">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br>
                    ><br>
                    <br>
                  </div>
                </div>
                [1] <a moz-do-not-send="true"
href="https://github.com/openstack/nova/blob/master/nova/api/openstack/rest_api_version_history.rst"
                  rel="noreferrer" target="_blank">https://github.com/openstack/nova/blob/master/nova/api/openstack/rest_api_version_history.rst</a><br>
                <div class="HOEnZb">
                  <div class="h5"><br>
__________________________________________________________________________<br>
                    OpenStack Development Mailing List (not for usage
                    questions)<br>
                    Unsubscribe: <a moz-do-not-send="true"
href="http://OpenStack-dev-request@lists.openstack.org?subject:unsubscribe"
                      rel="noreferrer" target="_blank">OpenStack-dev-request@lists.openstack.org?subject:unsubscribe</a><br>
                    <a moz-do-not-send="true"
                      href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev"
                      rel="noreferrer" target="_blank">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br>
                  </div>
                </div>
              </blockquote>
            </div>
            <br>
          </div>
        </div>
        <br>
        <fieldset class="mimeAttachmentHeader"></fieldset>
        <br>
        <pre wrap="">__________________________________________________________________________
OpenStack Development Mailing List (not for usage questions)
Unsubscribe: <a moz-do-not-send="true" class="moz-txt-link-abbreviated" href="mailto:OpenStack-dev-request@lists.openstack.org?subject:unsubscribe">OpenStack-dev-request@lists.openstack.org?subject:unsubscribe</a>
<a moz-do-not-send="true" class="moz-txt-link-freetext" href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a>
</pre>
      </blockquote>
      <br>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
      <pre wrap="">__________________________________________________________________________
OpenStack Development Mailing List (not for usage questions)
Unsubscribe: <a class="moz-txt-link-abbreviated" href="mailto:OpenStack-dev-request@lists.openstack.org?subject:unsubscribe">OpenStack-dev-request@lists.openstack.org?subject:unsubscribe</a>
<a class="moz-txt-link-freetext" href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a>
</pre>
    </blockquote>
    <br>
  </body>
</html>