Hi Aljoscha: Great. I cannot agree with you more. So I introduce OperatorSettings and OperatorProperties.
StreamTaskConfig relys on the underlying configuration and is provided for the streamTask to use. It contains: 1) in.physical.edges 2) out.physical.edges 3) chained OperatorSettings 4) execution environment: checkpoint, state.backend and so on... OperatorSettings is serialisable and stores things that are tied to one operator within the chain. It is provided for the streamTask to build an operator. It contains: 1) operator information: name, id 2) streamOperator 3) input serializer. 4) output edges and serializers. 5) s.chain.start, is.chain.end 6) state.key.serializer OperatorProperties can be an interface to view few things of OperatorSettings, it is provided for an operator to setup, it contains: 1) operator information: name, id 2) input serializer. 3) is.chain.start, is.chain.end (existed now, maybe moved later) 4) state.key.serializer What do you think? Best Regards! Xu Pingyong