On Sat, Jun 23, 2018 at 10:05 AM Robert Butts <r...@apache.org> wrote:
> >as long as we have 100% feature complete with the Go code (which I think > we're fairly close?) > We are not close. We are at 108 of 240 endpoints. > > >if we do not treat the tests as first class citizens (meaning we implement > an Go endpoint and build coverage as we go), then why bother at all? > It doesn't have to be all or nothing. There's a happy medium between > requiring tests for every line of code, and having no tests. > > >I also thought that we were supporting removing the Perl in the next TC > 3.0 major release (several emails back). > That vote was to remove the Perl GUI, not all of Perl. > > > >Removing dead Perl code can be tricky, since the interdependencies are > not always obvious, and can lead to unforeseen missing functionality. > > That's a good point. But let me ask this: in the event we miss some dynamic > Perl calling a function that was removed, which is worse: to make that > function fail, or to make that function call dead code, which has been > changed and modified to behave differently in Go, and the undead Perl is > now doing the wrong thing? > In the case where a function is removed that overrode some default functionality (which happens a lot in this code), the default code would not fail, but produce different results. Not quite helpful.. However, the idea you present below mitigates that risk.. > So, there might be a middle ground. How about this: what if we remove the > Perl routes from the routes file, and change the functions to immediately > return an informative error message? That way, if we miss some dynamic Perl > still calling the code, we immediately get a useful message, so it's easy > to find and fix. And we don't call old, wrong code that could do something > dangerous and bad. And additionally, contributors in the community won't > see the functions that look real, and accidentally waste their time > modifying them. > This, I can live with, and I think it represents a good way forward: keep the signature of all functions -- do not remove any modules and replace the guts of each of those functions with a sensible error -- even with a stack trace so we can tell exactly what code path was used to get there. It should be fairly straightforward to create a utility function that can be used throughout so it happens consistently. > Those who voted against removing the dead code, does that sound like a > compromise you could live with? That's a yes from me. Thanks for coming up with a solid compromise.. -Dan > On Thu, Jun 21, 2018 at 7:52 AM, Dewayne Richardson <dewr...@apache.org> > wrote: > > > I'm +100 on removing dead Perl code as long as we have 100% feature > > complete with the Go code (which I think we're fairly close?). Rawlin > you > > are correct in that there is a spider web of interdependencies in Perl, > but > > without feature parity removing any of that dead code is like pulling a > > single thread from a sweater without unraveling the entire thing. In > other > > words let's put our efforts around Go features and moving forward. > > > > As for tests, I realize writing tests "takes time", but we have to build > a > > safety net for the Traffic Ops Go API's going forward. I also realize > that > > writing and maintaining the API tests is like maintaining two code bases, > > but if we do not treat the tests as first class citizens (meaning we > > implement an Go endpoint and build coverage as we go), then why bother at > > all? I'm pretty sure there is support for more testing and I also think > it > > has to be a "community" effort. > > > > I also thought that we were supporting removing the Perl in the next TC > 3.0 > > major release (several emails back). > > > > -Dew > > > > On Wed, Jun 20, 2018 at 9:54 AM Rawlin Peters <rawlin.pet...@gmail.com> > > wrote: > > > > > Hey Traffic Controllers, > > > > > > In order to accelerate our progress toward using and developing > > > traffic_ops_golang as a community, I'd like to propose that we remove > > > all of the dead Perl Traffic Ops API code in the repo. Many endpoints > > > have been rewritten in Go at this point, and by keeping the obsolete > > > Perl endpoints in the repo we're not making it clear that new > > > enhancements have to be made in traffic_ops_golang and Traffic Portal > > > in order to actually work and survive long-term (as opposed to the > > > legacy Perl Traffic Ops API and UI which is planned to be deprecated > > > and removed in the near future). > > > > > > Right now the only thing keeping the dead Perl endpoints from being > > > deleted is the Perl test framework that depends on them. Unfortunately > > > the tests are all caught in a spider web of interdependency, so we > > > can't simply remove tests for APIs that have been rewritten in Go > > > without breaking other tests. However, we think there are a few ways > > > we should be able to accomplish this: > > > > > > 1. Make the Perl integration tests actually make HTTP calls which can > > > then be handled by traffic_ops_golang, rather than calling the Perl > > > API router directly. > > > 2. Remove test interdependencies by mocking out the test data. > > > 3. Rewrite all the Perl tests in the go API test framework and remove > > > the Perl tests. > > > > > > We are also open to other suggestions that allow us to remove dead Perl > > > code :). > > > > > > Please +1 or -1 if you agree or disagree; all feedback is welcome. > > > > > > - Rawlin > > > > > >