In the realm of software engineering, we are witnessing an increasing momentum towards the use of models as primary artefacts for developing software systems. This gave rise to a new paradigm commonly referred to as model-driven software engineering. This use of models promises to cope with the intrinsic complexity of software-intensive systems by raising the level of abstraction, and by hiding the accidental complexity of the underlying technology as much as possible. The use of models thus opens up new possibilities for creating, analysing, manipulating and formally reasoning about systems at a high level of abstraction. Evolution of models can be achieved by relying on sophisticated mechanisms of model transformation. Model transformation techniques and languages enable a wide range of different automated activities such as translation of models (expressed in different modelling languages), generating code from models, model refinement, model synthesis or model extraction, model restructuring, etc. Most of the research in model-driven engineering (MDE) focuses on the vertical dimension, such as how to generate code from models (forward engineering), how to obtain high-level abstractions from code (reverse engineering), and how to synchronise and co-evolve both levels of abstraction. The goal of this paper, is to shed an alternative view on the problem, by identifying those challenges that have to do with the horizontal dimension instead, i.e., all activities related to the process of model evolution.