Understanding the origin of diversity is a fundamental problem in biology. Traditional evolutionary theory predicts uniformity: acting on organisms under given environmental conditions and developmental constraints, natural selection produces a unique, optimally adapted phenotype. According to this view, different types only come about through a change in conditions over space or time. In particular, the process of diversification, that is, the split of an ancestral population into distinct descendent lineages, is a by-product of geographical separation. This traditional view misses out on the important perspective that diversification itself can be an adaptive process. In this talk I will review recent theoretical work showing that diversification as an adaptive response to biological interactions is a plausible evolutionary process. This work is based on the mathematical framework of adaptive dynamics, and in particular on the phenomenon of evolutionary branching due to frequency-dependent ecological interactions. I will describe evolutionary branching in a number of different models, including models for competitive and for cooperative interactions. I will also describe ongoing efforts to test the theory of evolutionary branching in evolving Escherichia coli populations, which provide a promising experimental model system for studying adaptive diversification.