I'd like to propose we deprecate & remove the Traffic Ops ATS Cache Config
endpoints. In fact, I'd like to propose we Deprecate in Master now, and in
the following Major Release (5.0) that we remove the code and change the
endpoints to return a 501 Not Implemented.

This follows the TC SemVer versioning deprecate schedule (giving users 2
major versions to upgrade ORT before the endpoints older ORT uses are
removed); but does _not_ follow the API SemVer Version Promise and
deprecate schedule.

This is mostly breaking the Semantic Versioning API Promise. The endpoints
would still exist, but they wouldn't be usable anymore. Normally, I'm the
last person to ever want to break SemVer. But in this particular case, I
think it's more dangerous not to.

Because the Cache Configs have been moved to the client-side generator run
by ORT, these endpoints are no longer used. I had hoped to move most of the
code to a library, and I did move all the logic there. But unfortunately,
what I found when I actually wrote the generator, was that a great deal of
the code is loading data, not logic. The
`traffic_ops/traffic_ops_golang/ats` directory has 5,300 lines of code.

That's 5k lines which won't be well-maintained, because nobody will be
using it, everyone will be using the ORT with the client-side generator.

These endpoints also aren't regular user endpoints; generally speaking,
nobody should be using them anymore, TC users should be using ORT which
calls atstccfg. If someone does want to generate their own configs, you
should use the lib/go-atscfg library calling regular data endpoints, not
the TO config endpoints which aren't used or maintained. If someone really,
really wants TO to still generate the endpoints (along with a
different/modified ORT config deployment), you can still write a TO plugin
to use lib/go-atscfg to create and serve configs.

In summary, I don't take breaking users lightly, but I think the danger of
keeping the unused ATS configs outweighs breaking SemVer here.

Thoughts?

Reply via email to