Event-based middleware is currently being applied for application component integration in a range of application domains. As a result, a variety of event services have been proposed to address different requirements. In order to aid the understanding of the relationships between these systems, this paper presents a taxonomy of distributed event-based programming systems. The taxonomy is structured as a hierarchy of the properties of a distributed event system and may be used as a framework to describe such a system according to its properties. The taxonomy identifies a set of fundamental properties of event systems and categorises them according to the event model supported and the structure of the event service. Event services are further classified according to their organisation and their interaction models, as well as other functional and non-functional features.