Factor pluggable modules out of `runtime/service`
- Dominant language
- Java
- Stars
- 2.1k
- Forks
- 522
- Avg merge
- 2d 1h
- Merged PRs (30d)
- 140
Description
This is a proposal to refactor inter-module dependencies in order to allow easier selection of pluggable features in downstream builds.
* Move pluggable (optional) module dependencies out of `runtime/services` into `runtime/server`
* Move the majority of integration tests into new sub-modules under the pluggable components
- Example: `persistence/relational-jdbc/tests`
- Prior art: `extensions/auth/opa/tests`
* Run "smoke tests" for the default set of plugins under the `runtime/server` module (e.g. validating PostgreSQL integration, but without extensive code coverage, which will be done under `persistence/relational-jdbc/tests`).
The functionality provided by the `runtime/server` module will not be altered by this change.
Pros:
* It will be easier to select a sub-set of optional features to include in downstream builds (some of which may not need all of the pluggable features)
* The `runtime/service` module becomes lean and focused on Polaris fundamentals.
Cons:
* CI time may increase due to having to perform more Quarkus builds for integration tests (might be mitigated by parallel execution).
Contributor guide
Research direction
Start by reviewing the runtime/service and runtime/server module boundaries, then compare the proposed persistence/relational-jdbc/tests layout with extensions/auth/opa/tests. Map optional dependencies and integration tests before deciding how to split them. Done means pluggable dependencies are separated, coverage moves under component tests, and runtime/server retains smoke tests for the default plugins without changing its functionality.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java
- Domain
- build-system, testing
- Issue type
- Refactor
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100