Hi all,

Looks like we had a fairly lively discussion here, and I'm late to the
party. I've been contemplating everyone's positions, but I agree with
the points Rawlin laid out in the initial email. We have been doing a
lot of great work on the API front, but after observing much of the
development, it feels like we have a complicated solution due to some
inflexibility both with our approach itself and Golang. Due to this,
we tend to put a lot of effort into supporting mixed compatibility for
various clients, and that turns into quite a burden on developers.
This burden manifests in a real tangible lack of progress when we
should be focusing on completing the move to Golang.

In the interest of spending time where it's important and completing
the Golang migration that has been far too drawn out, we should
eliminate some of the goals we set forth with versioning which will
simplify our approach. If we move to the major version scheme that
Rawlin outlined, we won't have to worry about special cases where one
minor version introduces new fields, and ensure that the prior version
does not. This will reduce complexity in the code in several ways, and
if we finally bite the bullet and move toward a strongly typed API and
type safe everything, we will have no need for translation libraries
that add overhead. We control the integration points between
components and provide clients in our codebase today. As long as we do
not break those integration points or clients, and provide
documentation when we make a major version change that has a large
impact on an API, we should provide guidance (release notes, etc) on
the changes.

We have limited development resources in our project and we should be
focusing on things that really help us move forward. That means
ripping the Perl out and not worrying about backwards compatibility
for a whole class of clients that we a) don't know about or b) do not
control. We can provide guidance to help people that don't use our
clients, but we don't need to be on the hook to support every minor
revision within a major release because some consumer *might* exist in
the wild. Major changes would require a major revision and I think
that's enough.
--
Thanks,
Jeff

On Thu, Feb 14, 2019 at 4:38 PM Rawlin Peters <rawlin.pet...@gmail.com> wrote:
>
> I was referring to Brennan's proposal:
> > Sure, but TO API v1 would only be implemented by TO  v1 and TO API v2 only 
> > implemented by TO v2.
>
> I agree about the deprecation overlap. We need to support both API v1
> and v2 at the same time for at least one major release.
>
> - Rawlin
>
> On Thu, Feb 14, 2019 at 2:53 PM Gray, Jonathan
> <jonathan_g...@comcast.com> wrote:
> >
> > Not quite.  I'm saying our 1-3.x releases support the TO API versions 
> > 1.1-1.4 (speaking cumulatively).  Hypothetically, should we come up with TO 
> > API 2.x in ATC 5.x you should not at the same time remove TO API 1.x in ATC 
> > 5.x.  There needs to be a deprecation overlap of at least one major ATC rev 
> > to facilitate the transition to TO API 2.x.
> >
> > Jonathan G

Reply via email to