Hi folks,

I would like to start a discussion on simplifying modules polaris-admin
into polaris-server. The separate admin module has been a recurring source
of friction. It effectively doubles license checks, Docker image
publishing, and binary publishing(almost double the size of the binary
distribution due to most libs being shared), and it also forces additional
shared modules like common, test-common, and distribution(there is no need
to have a separate distribution module if there is only one quarkus-run
jar). Over time this has increased build, release, and maintenance
complexity with minor benefits.

One alternative worth considering is moving toward a single runtime module
that supports both server and administrative CLI operations. Many mature
OSS projects follow this model successfully. For example, Apache Spark
ships a single set of core artifacts, and multiple CLI tools such as spark
submit, spark shell, and spark sql are essentially thin wrappers that point
to the same underlying jars. This keeps the distribution simple while still
allowing clear separation between interactive, batch, and administrative
workflows.

Here are the initial discussions,
https://github.com/apache/polaris/pull/3281#discussion_r2652055703. Thanks
Dmitri for the detailed explanation and discussion.

Here is a POC(https://github.com/apache/polaris/pull/3340), which verified
that both model works in a single jar:
Server Mode:
  java -jar runtime/server/build/quarkus-app/quarkus-run.jar

CLI Mode:
  java -jar runtime/server/build/quarkus-app/quarkus-run.jar --help
  java -jar runtime/server/build/quarkus-app/quarkus-run.jar bootstrap
--help

Thanks,
Yufei

Reply via email to