Distributed scheduling (DS) is an approach that enables local decision makers to create schedules that consider local objectives and constraints within the boundaries of the overall system objectives. Local decisions from different parts of the system are then integrated through coordination and communication mechanisms. Distributed scheduling attracts the interest of many researchers from a variety of disciplines, such as computer science, economics, manufacturing, and service operations management. One reason is that the problems faced in this area include issues ranging from information architectures, to negotiation mechanisms, to the design of scheduling algorithms. In this paper, we provide a survey and a critical analysis of the literature on distributed scheduling. While we propose a comprehensive taxonomy that accounts for many factors related to distributed scheduling, we also analyse the body of research in which the scheduling aspect is rigorously discussed. The focus of this paper is to review the studies that concern scheduling algorithms in a distributed architecture, not, for example, protocol languages or database architectures. The contribution of this paper is twofold: to unify the literature within our scope under a common terminology and to determine the critical design factors unique to distributed scheduling and in relation to centralised scheduling.