←back to thread

48 points scolby33 | 2 comments | | HN request time: 0.388s | source
Show context
shadowgovt ◴[] No.46221571[source]
The secret trick I've used on rare occasion, but when necessary, is the "ten second rule."

Users don't notice a deprecation warning. But they might notice adding a "time.sleep(10)" immediately at the top of the function. And that gives them one last grace period to change out their software before it breaks-breaks.

replies(2): >>46221755 #>>46222476 #
minitech ◴[] No.46222476[source]
This is so much worse than just making the breaking change.
replies(1): >>46222702 #
shadowgovt ◴[] No.46222702[source]
It depends on how we define "worse."

A breaking change causes a full-stop to a service.

An intentional slowdown lets the service continue to operate at degraded performance.

I concur that it's less clear for debugging purposes (although any reasonable debugging infrastructure should allow you to break and see what function you're in when the program hangs; definitely not as clear as the program crashing because the called function is gone, however).

replies(1): >>46222878 #
minitech ◴[] No.46222878[source]
A breaking change in a dependency doesn’t cause a full-stop to a service at all. The old version continues to work. Making subtly harmful changes so that new broken versions sneak in is just a bad idea and totally unnecessary.
replies(1): >>46224473 #
1. shadowgovt ◴[] No.46224473[source]
> A breaking change in a dependency doesn’t cause a full-stop to a service at all

From the article:

"We still received feedback from users that this removal was unexpected and was breaking dependent libraries."

I think we may be assuming different floors on service maintainer competency; with so many users pulling in dependencies across an arbitrarily-wide version window with no testing, such changes do break services.

replies(1): >>46224565 #
2. minitech ◴[] No.46224565[source]
It’s not necessary to cater to the absolute least competent end user to begin with, but inserting slowdown bugs does not even achieve that. (Note that the bit about the breaking of dependent libraries you’re quoting is still not actually a service being affected.)