After over two decades of relative architectural stability for distributed memory parallel computers, the end of Dennard scaling and the looming end of Moore's "law" is forcing major changes in computing systems. Can the community continue to use programming systems such as MPI for extreme scale systems? Does the growing complexity of compute nodes require new programming approaches? Can performance portability be achieved? Are new I/O models required? This talk will discuss some of the issues, with emphasis on internode and intranode programming systems and the connections between them.