This paper presents a distributed algorithm to disseminate events in a publish/subscribe system, where processes publish events of certain topics, organized in a hierarchy, and expect events of topics they subscribed to. Every topic defines a dynamic notion of ``community'', gathering the processes which publish on that topic or subscribe to it. Our algorithm is completely decentralized (no brokers), yet does not require from any process to ever receive, store or forward, events from a community it is not part of. We order the communities according to the topic inclusion relationships to efficiently manage the flow of information within, and between the communities, as well as limit the memory consumption of each process. Processes can control, for each of their communities, the trade-off between the message complexity and the reliability of event dissemination. We convey this trade-off through analysis, simulations and measurements obtained with a full implementation of our algorithm.