CFDSD: a Communication Framework for Distributed Software Development (Journal of the Brazilian Computer Society, 2020)