See DistributedTeams and DistributedSoftwareDevelopment.