Hi everyone,

I would like to start a discussion how we treat deprecated and legacy code in Flink in the future. During the last years, our code base has grown quite a bit and a couple of interfaces and components have been reworked on the way.

I'm sure each component has a few legacy parts that are waiting for removal. Apart from keeping outdated API around for a couple of releases until users have updated their code, it is also often easier to just put a @Deprecation annotation and postpone the actual change.

When looking at the current code, we have duplicated SQL planners, duplicated APIs (DataSet/DataStream), duplicated source/sink interfaces, outdated connectors (Elasticsearch 5?) and dependencies (Scala 2.11?).

I'm wondering whether we should come up with some legacy/deprecation guidelines for the future.

Some examples:

- I could imagine new Flink-specific annotations for documenting (in code) in which version an interface was deprecated and when the planned removal should take place. - Or guidelines that we drop a connector when the external project does not maintain the version for 6 months etc.

Plannable removal dates should also help users to not be surprised when a connector or Scala version is not supported anymore.

What do you think? I'm very happy to hear more opinions.

Regards,
Timo





Reply via email to