Shared memory concurrency has emerged as the pervasive programming model with the advent of the multicore era. To achieve higher performance from multicore hardware, modern programming languages have added first-class support for concurrency. These concurrency primitives provide a higher-level platform-independent abstraction over the existing multicore hardware. However, defining a formal concurrency model that satisfies a conflicting set of properties for programmers, compilers, and hardware has been extremely difficult and a long-standing research problem. In this talk, I will provide a landscape of the research challenges in designing a concurrency model for programming languages. Then, I will discuss the recent advancements and future directions.