The Geeser Project propose several stages. In each stage, a different activity is added to work on the stream parallely. For instance, word count and trending topics on second stage and entity disambiguation on the third stage.
For each stage, I propose to write a set of spouts and bolts that are necessary to reach the corresponding objective. That way, developers can mount a topology according their necessity
==== Topology Builder ====
Communication process is completely abstracted from the developer. We only need to minimize the consuption of network bandwith since Storm does not manage it well.