The problem of maximizing diversity or dispersion deals with selecting a subset of elements from a given set in such a way that the distance among the selected elements is maximized. The definition of distance between elements is customized to specific applications, and the way that the overall diversity of the selected elements is computed results in different mathematical models. Maximizing diversity by means of combinatorial optimization models has gained prominence in Operations Research (OR) over the last two decades, and constitutes nowadays an important area. In this paper, we review the milestones in the development of this area, starting in the late eighties when the first models were proposed, and identify three periods of time. The critical analysis from an OR perspective of the previous developments, permits us to establish the most appropriate models, their connection with practical problems in terms of dispersion and representativeness, and the open problems that are still a challenge. We also revise and extend the library of benchmark instances that has been widely used in heuristic comparisons. Finally, we perform an empirical review and comparison of the best and more recently proposed procedures, to clearly identify the state-of-the art methods for the main diversity models.