For several decades now, parallel programming has been struggling with the question of whether inter-processor communication and the memory hierarchy should be explicitly managed by programmers, or implicitly managed by hardware and system software. This talk provides a historic overview of how parallel programming models treated data locality and communication over the years, examines the state of the art in this area, and discusses new viewpoints on locality and communication management that reflect recent advances in parallel architectures and runtime systems.