Even this brief overview of potential risks should make it clear that outsourcing is not to be taken lightly. Software is hard to do and splitting out pieces of it makes it harder. It’s not an impossible tasks by any means, but it’s one that has to be carefully managed and where experience is the best guide.
The most important conclusion to be taken from this is that the closer to “home” you can keep software development projects, the safer they are. It does not guarantee you success, however, you define that, but it will mitigate the risks considerably. By definition, “offshore” is as far from “home” as you can get.