Github user StephanEwen commented on the issue: https://github.com/apache/flink/pull/5303 I would suggest to start thinking about the dependencies the following way: - There are pure user-code projects where the Flink runtime is "provided" and they are started using an existing Flink setup (`bin/flink run` or REST entry point). This is the **Framework Style**. - In the future, we will have "Flink as a Library" deployments, where users add something like `flink-dist` as a library to their program and then simply dockerize that Java application. - Code can be run in the IDE or other similar style embedded forms. This is in some sense also a "Flink as a Library" deployment, but with selective (fewer) dependencies. The RocksDB issue applies only to this problem here. To make this simpler for the users, it would be great to have not N different models that we talk about, but ideally only two: **Framework Style** and **Library Style**. We could for example start to advocate and document that users should always use `flink-dist` as their standard dependency - "provided" in the framework style deployment, "compile" in the library style deployment. That might be a really easy way to work with that. The only problem for the time being is that `flink-dist` is quite big and contains for example also optional dependencies like `flink-table`, which makes it more hwavyweight for quickstarts. Maybe we can accept that as a tradeoff for dependency simplicity.
---