apache / apache/polaris

Factor pluggable modules out of `runtime/service`

Open
#3,569 7 comments 1 reaction 0 assignees View on GitHub
enhancement stale
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.