I think the weirdness stems from the fact that the ProtobufDecoder is automatically created and running even if people don't use it (if we had data persistence that would change).  If the user had to explicitly create it and specify it within a decoder list it would be less weird (this addresses the awkward documentation where the decoder doesn't have to be specified for parser_type = "message.proto" in any of the stream parsers).  The other thing that is a little weird is if the user creates a ProtobufDecoder with a different name they will still get a default ProtobufDecoder created and have a total of 8 ProtobufDecoders running.