Periodic behavior is key to life, and is observed in multiple instances and at multiple time scales in our metabolism, our natural environment, and our engineered environment. A natural way of modelling or generating periodic behavior is done by using oscillators, i.e. dynamical systems that exhibit limit cycle behavior. While there is extensive literature on methods to analyze such dynamical systems, much less work has been done on methods to synthesize an oscillator to exhibit some specific desired characteristics. The goal of this article is two-fold: (1) to provide a framework for characterizing and designing oscillators, and (2) to review how classes of well known oscillators can be understood and related to this framework.The basis of the framework is to characterize oscillators in terms of their fundamental temporal and spatial behavior, and in terms of properties that these two behaviors can be designed to exhibit. This focus on fundamental properties is important because it allows us to systematically compare a large variety of oscillators which might at first sight appear very different from each other. We identify several specifications that are useful for design, such as frequency-locking behavior, phaselocking behavior, and specific output signal shape. We also identify two classes of design methods by which these specifications can be met, namely off-line methods and on-line methods. By relating these specifications to our framework and by presenting several examples of how oscillators have been designed in the literature, this article provides a useful methodology and toolbox for designing oscillators for a wide range of purposes. In particular the focus on synthesis of limit cycle dynamical systems should be useful both for engineering and for computational modelling of physical or biological phenomena.