Hello,
Currently, there is 4 MongoDB related extensions:
- mongodb-client: the client, with a Mutiny based reactive wrapper (on top of the MongoDB reactive stream client)
- mongodb-panache
- mongodb-panache-kotlin
- rest-data-panache-mongodb
All these extensions support imperative (based on the mongodb sync client) and reactive style programming (based on the wrapper).
If we look at other extensions, they usually ship the imperative and the reactive variant in separate extensions, this avoids having too many dependencies inside an application, in the case of reasyeasy (and Hibernate also I think), you cannot use both on the same application.
So, may we split the MongoDB extensions in two ?
If we do this, we can do it two ways:
1. The existing extensions will be for the imperative client, new extensions will be created for the reactive. This would mandate someone that uses the reactive variant to include the new dependency (we can maybe check the usage of the reactive client via Jandex and throw an exception with a clear message).
2. Create two new sets of extensions, and refactor the existing one to include both. This will not break things for existing users but will inflate the number of existing extensions. And when we later on remove the legacy extension we will break users.
As most users certainly use the imperative variant, I think 1. is safe if we decided to split.
WDYT ?