Current state: "Accepted"
Discussion thread: here
Please keep the discussion on the mailing list rather than commenting on the wiki (wiki discussions get unwieldy fast).
The original intention of TopologyDescription was to allow users to perform runtime checking. However, large number of users have opted to print or parse the textual representation of the Topology for convenience instead. The problem is the current TopologyDescription relies too heavily on String to represent the Source and Sink Nodes. By returning the underlying object and overriding toString(), users can still leverage TopologyDescription for runtime checks while also preserving the human readable representations of the Topology.
The underlying object for a Source node in TopologyDescription is set of topics or a pattern to match source topics on. Similarly, the underlying object of a Sink node is either the final topic if it is statically determined or the TopicNameExtractor used to the determine the topic.
Add the above interface change and add the following to InternalTopologyBuilder.java.
Compatibility, Deprecation, and Migration Plan
Deprecating topics() because it is no longer needed with the addition of topicSet(). In order to get the same functionality, a user can just call topicSet().toString().