The reason that's relevant being that deprecating 2.0 and 3.0 with the release of 4.0 is in-line with that strategy.
On Tue, Jul 27, 2021 at 2:23 PM ocket 8888 <ocket8...@gmail.com> wrote: > I know it doesn't change the reality of our situation, but fwiw APIv1 > should've already been gone. From our discussion regarding versioning when > we were making APIv2 prior to ATC release 4.0: > > > TC 4.0: > > - API 1.x supported, some deprecation notices > > > > TC 4.1: > > - API 1.x still supported, deprecation notices added to endpoints not > graduated to 2.0 > > - API 2.0 supported, consisting of 1.x endpoints that were graduated > > - starting with this release, you need to start migrating external > clients off of 1.x over to 2.0 > > > > TC 4.2: > > - internal clients (e.g. TM, TR, etc) will be migrated off API 1.x over > to 2.0. Doing this step after 4.1 adds confidence that 1.x is still > supported alongside 2.0 in order to provide a smooth migration period for > API clients. > > > > TC 5.0: > > - API 1.x no longer supported, only API 2.x is supported > > The only reason APIv1 exists in 5.x is because "starting with this > release, you need to start migrating external clients off of 1.x over to > 2.0" wound up taking much, much longer than we thought it would. The plan, > as I understand it, was always for only three API versions to ever coexist > - and only two released versions: > - legacy version, deprecated, what everyone's using prior to upgrade to > ATC version that deprecates it > - supported version, latest released > - development version, not released, nobody should use except ATC > components under active development. > > On Tue, Jul 27, 2021 at 11:56 AM Rawlin Peters <raw...@apache.org> wrote: > >> I guess the question now is what do we think is "fair" for our users? >> Shouldn't they decide? Can we survey them? If it were me doing the >> updates, I think I'd prefer to do the 2nd update as close to the 1st >> update as possible, since those necessary changes would still be fresh >> in memory. Especially knowing that a 2nd update is coming at some >> point, I'd rather just get it over with as soon as possible and not >> have to worry about planning for it later down the line. >> >> - Rawlin >> >> On Tue, Jul 27, 2021 at 11:36 AM Zach Hoffman <zrhoff...@apache.org> >> wrote: >> > >> > > > Does API 4.x exist before 6.0? >> > > According to the most recent docs, yes. >> > >> https://traffic-control-cdn.readthedocs.io/en/latest/api/index.html#api-v4-routes >> > >> > Those are the docs for the master branch. >> > There is no mention of API 4.x in the ATC 5.1.2 docs: >> > https://traffic-control-cdn.readthedocs.io/en/v5.1.2/api/index.html >> > >> > -Zach >> > >> > >> > On Tue, Jul 27, 2021 at 11:29 AM Gray, Jonathan >> > <jonathan_g...@comcast.com.invalid> wrote: >> > >> > > According to the most recent docs, yes. >> > > >> https://traffic-control-cdn.readthedocs.io/en/latest/api/index.html#api-v4-routes >> > > >> > > Jonathan G >> > > >> > > From: Dave Neuman <neu...@apache.org> >> > > Date: Tuesday, July 27, 2021 at 10:59 AM >> > > To: dev@trafficcontrol.apache.org <dev@trafficcontrol.apache.org> >> > > Subject: Re: [EXTERNAL] Re: Deprecate APIv2 and v3 >> > > Does API 4.x exist before 6.0? >> > > I am worried about basically telling our users that before they can >> go to >> > > 6.x they have to get off API 1.x but the latest at that point is 3.x >> so >> > > then we are turning around and saying they have to update again. I >> would >> > > prefer if we gave more time and did 2.0 now and 3.0 in our next >> release. >> > > I am not going to -1 because ultimately it is not going to impact me >> as >> > > much as those that have already shared opinions, but I did want to >> make >> > > sure we aren't being unfair to our users. >> > > >> > > Thanks, >> > > Dave >> > > >> > > On Mon, Jul 26, 2021 at 4:40 PM Zach Hoffman <zrhoff...@apache.org> >> wrote: >> > > >> > > > +1 for deprecating APIv2 and APIv3. >> > > > >> > > > -Zach >> > > > >> > > > On Tue, Jul 20, 2021 at 3:28 PM Jeremy Mitchell < >> mitchell...@gmail.com> >> > > > wrote: >> > > > >> > > > > sorry about that. i'm +1 on deprecating APIv2 and APIv3 in the >> fashion >> > > > you >> > > > > mentioned. >> > > > > >> > > > > On Tue, Jul 20, 2021 at 2:39 PM ocket 8888 <ocket8...@gmail.com> >> > > wrote: >> > > > > >> > > > > > I don't really want to propose anything more complex than >> deprecating >> > > > > APIv2 >> > > > > > and APIv3 in this thread. Which isn't to say that I don't have >> > > > opinions >> > > > > on >> > > > > > all of this, but it's starting to confuse the point when people >> are >> > > > > giving >> > > > > > +1s and -1s on things besides the thread subject. >> > > > > > >> > > > > > On Tue, Jul 20, 2021 at 2:17 PM Robert O Butts <r...@apache.org> >> > > wrote: >> > > > > > >> > > > > > > > so really TO (api) seems to have many versions >> > > > > > > >> > > > > > > The Traffic Ops application has a single project/app version. >> The >> > > TO >> > > > > > > Application "serves" multiple API Versions, which are >> unrelated to >> > > > that >> > > > > > > application version. TO doesn't "have" many versions, it has >> one >> > > > > > version. A >> > > > > > > particular Traffic Ops version "10" might serve API versions >> X,Y,Z. >> > > > But >> > > > > > > those API versions aren't "part" of the Traffic Ops Versions. >> There >> > > > > > exists >> > > > > > > no "Traffic Ops version 10" which serves any other API >> versions. >> > > And >> > > > > > there >> > > > > > > might exist other Traffic Ops versions which also serve >> X,Y,Z. So, >> > > TO >> > > > > > only >> > > > > > > has one version, "10." X,Y,Z are unrelated to 10, except that >> 10 is >> > > > > > > documented as serving X,Y,Z. >> > > > > > > >> > > > > > > > ATC is version 5.x, for example, so all the components are >> > > version >> > > > > 5.x, >> > > > > > > right? >> > > > > > > >> > > > > > > As an aside, IMO having separate application versions would >> make a >> > > > lot >> > > > > of >> > > > > > > sense and make a lot of things easier. I don't want to push >> for >> > > that >> > > > > > right >> > > > > > > now, but something to think about. Maybe part of the version >> after >> > > > the >> > > > > > > project, e.g. ATC could be Version 10.11 and Traffic Ops >> could have >> > > > its >> > > > > > own >> > > > > > > application version 5.7, so Traffic Ops would have the >> complete >> > > > version >> > > > > > > "atc-10.11-to-5.7-hash-abc123.rpm" or whatever. I think that >> might >> > > > make >> > > > > > it >> > > > > > > clearer when one app hasn't changed even if the project did, >> > > > especially >> > > > > > > with our apps that don't change very often. Something to think >> > > about. >> > > > > > > >> > > > > > > >> > > > > > > >> > > > > > > On Tue, Jul 20, 2021 at 1:44 PM Jeremy Mitchell < >> > > > mitchell...@gmail.com >> > > > > > >> > > > > > > wrote: >> > > > > > > >> > > > > > > > All good points but also consider this, ATC is version 5.x, >> for >> > > > > > example, >> > > > > > > so >> > > > > > > > all the components are version 5.x, right? meaning the TO >> > > component >> > > > > > (aka >> > > > > > > > the TO api) is.... version 5.x.... :) >> > > > > > > > >> > > > > > > > so really TO (api) seems to have many versions (5.x >> inherited >> > > from >> > > > > the >> > > > > > > > project and 2.x, 3.x, 4.x, the versions of the >> "interface"). yes, >> > > > > > > > confusing... >> > > > > > > > >> > > > > > > > >> > > > > > > > >> > > > > > > > On Tue, Jul 20, 2021 at 1:32 PM Robert O Butts < >> r...@apache.org> >> > > > > wrote: >> > > > > > > > >> > > > > > > > > > Also, after years of API confusion, is it time to >> simply sync >> > > > the >> > > > > > ATC >> > > > > > > > > > version with the API version (brennan has touched on >> this in >> > > > the >> > > > > > > past) >> > > > > > > > > > starting with our "next" API version. So instead of >> APIv5, >> > > we'd >> > > > > > just >> > > > > > > > jump >> > > > > > > > > > to APIv7. ex: >> > > > > > > > > >> > > > > > > > > I strongly disagree with "synchronizing" the API and >> project >> > > > > version. >> > > > > > > The >> > > > > > > > > idea that they need to be the same is deeply confused >> about >> > > what >> > > > > they >> > > > > > > > are, >> > > > > > > > > and making them the same will reinforce that confusion >> with the >> > > > > > people >> > > > > > > > who >> > > > > > > > > are confused. >> > > > > > > > > >> > > > > > > > > The project version and the API version are completely >> > > > independent >> > > > > > and >> > > > > > > > > unrelated things. The idea that they need to be versioned >> > > > together >> > > > > > and >> > > > > > > > are >> > > > > > > > > somehow the same thing is incredibly confused and mistaken >> > > about >> > > > > the >> > > > > > > > > fundamental idea of what an API is and what a code >> project is. >> > > > > > > > > >> > > > > > > > > The API is the API. The project is the project. An API is >> an >> > > > > > > Application >> > > > > > > > > Programming Interface: an interface, like an electric >> outlet >> > > or a >> > > > > > water >> > > > > > > > > faucet connection. The Traffic Control project is a code >> > > > project: a >> > > > > > > > > collection of applications, written in code, to do a >> thing, in >> > > > this >> > > > > > > case >> > > > > > > > a >> > > > > > > > > CDN. >> > > > > > > > > >> > > > > > > > > These are completely, entirely, totally different things. >> It >> > > > would >> > > > > be >> > > > > > > > like >> > > > > > > > > working for a company that sells both laptops and >> capacitors, >> > > and >> > > > > > > saying, >> > > > > > > > > "Our capacitors and laptops should have the same serial >> > > numbers, >> > > > > > > because >> > > > > > > > > they both contain iron atoms." >> > > > > > > > > >> > > > > > > > > Yes, the code in the project serves certain APIs. But the >> two >> > > > > things >> > > > > > > are >> > > > > > > > > completely independent. Giving them the same version will >> > > > reinforce >> > > > > > the >> > > > > > > > > wrong and confused belief that they're somehow the same >> thing, >> > > > when >> > > > > > > > > literally the only thing they have in common as ideas is >> that >> > > > > they're >> > > > > > > two >> > > > > > > > > version numbers published by Apache Traffic Control. >> > > > > > > > > >> > > > > > > > > Moreover, All Traffic Control applications will always >> have to >> > > > > serve >> > > > > > at >> > > > > > > > > least one major version back, in order to make it >> possible to >> > > > > > upgrade. >> > > > > > > So >> > > > > > > > > the confused idea that they're somehow the same will be >> made >> > > even >> > > > > > more >> > > > > > > > > confusing, because now people think "The API is the same >> as the >> > > > > > > Project, >> > > > > > > > > and the version proves it, but the project has to serve >> > > multiple >> > > > > > APIs." >> > > > > > > > > Making people even more confused. >> > > > > > > > > >> > > > > > > > > In fact, I'm inclined to think making the versions >> completely >> > > > > > different >> > > > > > > > > schemes, such as one being letters and the other numbers, >> would >> > > > > help >> > > > > > > > reduce >> > > > > > > > > the confusion, and make it more clear that the two >> versioned >> > > > things >> > > > > > are >> > > > > > > > > completely unrelated. >> > > > > > > > > >> > > > > > > > > >> > > > > > > > > On Tue, Jul 20, 2021 at 1:00 PM Jeremy Mitchell < >> > > > > > mitchell...@gmail.com >> > > > > > > > >> > > > > > > > > wrote: >> > > > > > > > > >> > > > > > > > > > ^^ I'm good with this. >> > > > > > > > > > >> > > > > > > > > > Also, after years of API confusion, is it time to >> simply sync >> > > > the >> > > > > > ATC >> > > > > > > > > > version with the API version (brennan has touched on >> this in >> > > > the >> > > > > > > past) >> > > > > > > > > > starting with our "next" API version. So instead of >> APIv5, >> > > we'd >> > > > > > just >> > > > > > > > jump >> > > > > > > > > > to APIv7. ex: >> > > > > > > > > > >> > > > > > > > > > ATCv7 supports APIv7 (to get inline with ATC version) >> and >> > > APIv4 >> > > > > > (the >> > > > > > > > api >> > > > > > > > > > version from ATCv6) >> > > > > > > > > > ATCv8 supports APIv8 and APIv7 >> > > > > > > > > > etc >> > > > > > > > > > >> > > > > > > > > > but then i guess that begs the question, if we bump the >> major >> > > > ATC >> > > > > > > > version >> > > > > > > > > > for another reason (big feature or something), does >> that mean >> > > > we >> > > > > > have >> > > > > > > > to >> > > > > > > > > > bump the API version if not really necessary just to >> keep >> > > ATCv >> > > > == >> > > > > > > APIv? >> > > > > > > > > > >> > > > > > > > > > jeremy >> > > > > > > > > > >> > > > > > > > > > On Mon, Jul 19, 2021 at 1:08 PM Rawlin Peters < >> > > > raw...@apache.org >> > > > > > >> > > > > > > > wrote: >> > > > > > > > > > >> > > > > > > > > > > > What kind of backward compatibility expectation are >> we >> > > > aiming >> > > > > > for >> > > > > > > > > here? >> > > > > > > > > > > With 1.x we were coming from 5+ years of backward >> > > > compatibility >> > > > > > > > > > > >> > > > > > > > > > > I don't think we ever intended for API 1.x to live >> for so >> > > > long, >> > > > > > but >> > > > > > > > we >> > > > > > > > > > > also never promised an agreed-upon amount of time for >> > > > backwards >> > > > > > > > > > > compatibility. I think the intention is that we'd >> like to >> > > > have >> > > > > > one >> > > > > > > > > > > major release cycle where both major API versions are >> > > > supported >> > > > > > (in >> > > > > > > > > > > order for clients to have a transitionary period), >> then we >> > > > are >> > > > > > free >> > > > > > > > to >> > > > > > > > > > > remove the deprecated API version in the following >> release. >> > > > The >> > > > > > > > amount >> > > > > > > > > > > of time we remain backwards-compatible should really >> depend >> > > > on >> > > > > > how >> > > > > > > > > > > long the release cycles are, which we're aiming for >> > > > quarterly. >> > > > > > > > > > > >> > > > > > > > > > > I agree it is a lot of headache to update 3rd party >> tooling >> > > > as >> > > > > > API >> > > > > > > > > > > versions are deprecated and removed (which is why I'm >> > > hoping >> > > > we >> > > > > > > don't >> > > > > > > > > > > introduce another major API version very soon), but >> > > hopefully >> > > > > the >> > > > > > > > vast >> > > > > > > > > > > majority of cases are simply updating the URLs from >> 2.0 or >> > > > 3.0 >> > > > > to >> > > > > > > > 4.0, >> > > > > > > > > > > since there should only be a small number of >> breakages from >> > > > 2.0 >> > > > > > to >> > > > > > > > 4.0 >> > > > > > > > > > > (mostly servers-related routes) that would actually >> require >> > > > > > > changing >> > > > > > > > > > > more than just the URL. Migrating from 1.x has >> probably >> > > been >> > > > > more >> > > > > > > > > > > difficult since we dropped a lot of redundant routes. >> > > > > > > > > > > >> > > > > > > > > > > - Rawlin >> > > > > > > > > > > >> > > > > > > > > > > >> > > > > > > > > > > - Rawlin >> > > > > > > > > > > >> > > > > > > > > > > On Mon, Jul 19, 2021 at 11:43 AM Gray, Jonathan >> > > > > > > > > > > <jonathan_g...@comcast.com.invalid> wrote: >> > > > > > > > > > > > >> > > > > > > > > > > > What kind of backward compatibility expectation are >> we >> > > > aiming >> > > > > > for >> > > > > > > > > here? >> > > > > > > > > > > With 1.x we were coming from 5+ years of backward >> > > > compatibility >> > > > > > and >> > > > > > > > now >> > > > > > > > > > it >> > > > > > > > > > > seems like we’re aiming for < 1 year with rotation at >> every >> > > > > major >> > > > > > > > rev. >> > > > > > > > > > > That’s a lot of headache for 3rd party tooling >> support to >> > > > > > > constantly >> > > > > > > > be >> > > > > > > > > > > changing regardless if that means you’re upgrading SDK >> > > > > > dependencies >> > > > > > > > or >> > > > > > > > > > raw >> > > > > > > > > > > HTTP calls. >> > > > > > > > > > > > >> > > > > > > > > > > > Jonathan G >> > > > > > > > > > > > >> > > > > > > > > > > > From: Rawlin Peters <raw...@apache.org> >> > > > > > > > > > > > Date: Friday, July 16, 2021 at 11:54 AM >> > > > > > > > > > > > To: dev@trafficcontrol.apache.org < >> > > > > > dev@trafficcontrol.apache.org >> > > > > > > > >> > > > > > > > > > > > Subject: [EXTERNAL] Re: Deprecate APIv2 and v3 >> > > > > > > > > > > > +1 on deprecating API v2-3 with the release of >> ACTv6 and >> > > > > > removing >> > > > > > > > > them >> > > > > > > > > > > > in ATCv7. Hopefully we won't need a TO API v5 very >> soon >> > > so >> > > > we >> > > > > > can >> > > > > > > > > have >> > > > > > > > > > > > a break from the API instability. >> > > > > > > > > > > > >> > > > > > > > > > > > +1 on not requiring every v2 and v3 endpoint to >> return >> > > > > > > deprecation >> > > > > > > > > > > > notices. I think just mentioning it on the mailing >> list, >> > > > the >> > > > > > > > > > > > changelog, and the docs should cover it. Updating >> all the >> > > > > v2/v3 >> > > > > > > > > > > > endpoints to return deprecation notices would be >> quite a >> > > > lot >> > > > > of >> > > > > > > > code >> > > > > > > > > > > > change with very little benefit IMO. However, for >> certain >> > > > > > > endpoints >> > > > > > > > > > > > that have no v4 equivalent, we are returning >> deprecation >> > > > > > notices >> > > > > > > > > (e.g. >> > > > > > > > > > > > cachegroup parameters). >> > > > > > > > > > > > >> > > > > > > > > > > > - Rawlin >> > > > > > > > > > > > >> > > > > > > > > > > > On Fri, Jul 16, 2021 at 11:28 AM ocket 8888 < >> > > > > > ocket8...@gmail.com >> > > > > > > > >> > > > > > > > > > wrote: >> > > > > > > > > > > > > >> > > > > > > > > > > > > With the release of APIv4 in ATCv6, should we >> > > > > simultaneously >> > > > > > > > > > deprecate >> > > > > > > > > > > > > APIv2 and APIv3? I think so, that'll mean we can >> remove >> > > > > them >> > > > > > in >> > > > > > > > > > ATCv7, >> > > > > > > > > > > > > whereupon the stable API 4.0 will have existed >> for a >> > > full >> > > > > > major >> > > > > > > > > rev, >> > > > > > > > > > > and >> > > > > > > > > > > > > APIv5 will ostensibly be released (if not sooner, >> since >> > > > we >> > > > > > > could >> > > > > > > > do >> > > > > > > > > > > that >> > > > > > > > > > > > > e.g. in a 6.1). >> > > > > > > > > > > > > >> > > > > > > > > > > > > If so, we should also discuss what that will mean >> > > > > materially. >> > > > > > > > With >> > > > > > > > > > > > > endpoints that disappear between API versions we >> have >> > > > them >> > > > > > > return >> > > > > > > > > > > > > warning-level alerts that indicate they won't be >> > > > available >> > > > > on >> > > > > > > > > > upgrade, >> > > > > > > > > > > but >> > > > > > > > > > > > > for APIv1 as a whole we didn't issue any kind of >> formal >> > > > > > notice >> > > > > > > > > afaik, >> > > > > > > > > > > not >> > > > > > > > > > > > > even a changelog entry. I think the right answer >> is >> > > > > somewhere >> > > > > > > > > between >> > > > > > > > > > > these >> > > > > > > > > > > > > - a changelog entry and notices on the APIv2 and >> APIv3 >> > > > > > > reference >> > > > > > > > > > > sections >> > > > > > > > > > > > > of the documentation. I don't think it's >> necessary to >> > > > > mention >> > > > > > > on >> > > > > > > > > each >> > > > > > > > > > > > > endpoint that the entire API version is >> deprecated, >> > > > either >> > > > > in >> > > > > > > the >> > > > > > > > > > > > > documentation or in the API through Alerts. >> > > > > > > > > > > >> > > > > > > > > > >> > > > > > > > > >> > > > > > > > >> > > > > > > >> > > > > > >> > > > > >> > > > >> > > >> >