1) Retire a feature
2) Offer a half-arsed work-around
3) Wait an indeterminable period of time
4) Release a new feature that covers the original use-case
That's crap, as users are stuck at #2 for ages and some of them migrate away to use other tools that cover this use-case. All this method achieves is to annoy every user that used the feature (even if they seldom used it).
Surely it would be better to:
1) Release a new feature that covers the original use-case
2) Wait a declared period of time (short or long)
3) Retire a feature
Which means people can immediately start using the new way. And if the new feature fully covers the use-case of the old one, then #2 could be skipped altogether.