There is a difference between offshoring and cheap-shoring (i.e what I call offshoring at very low costs). Most of the bad experiences you get from India are a result of cheap-shoring. You get what you pay for. Cheapshoring undervalues good engineers and overvalues a lot of bad engineers.
I have seen this for almost 15 years (from the Indian side), and I don't like it. While some people see Indian IT as growing with the likes of Infosys, TCS, Wipro, etc - I personally saw that as crippling good CS talent in India. However, all that is coming to an end - probably sooner than later. These biggies will either have to trim down significantly or collapse under their own weight
If you want equivalently good engineers from India (as of now), be ready to pay half(45-50%) of the pay in US. So if you are paying 120K in the US, the same should cost you 54-60K USD when the engineer is in India. This will also reduce friction. One may get lucky in the early days hiring at cheaper costs, but sooner or later the good engineers will see their worth and will most likely leave instead of asking for a raise. You have to do your due-diligence selecting a worthy engineer - that is like finding a needle in a haystack.
If somebody chooses cheapshoring, they are planning for a higher cost that is at least more than the 50% mark mentioned and in most cases if you analyze retrospectively - it would have cost lower if you did not cheap-offshore in the first place. The release may seem less costly, but the maintenance and operating costs will ultimately outgrow.