www.bounties.mccue.dev Open in urlscan Pro
2600:1f18:2489:8202::c8  Public Scan

URL: https://www.bounties.mccue.dev/
Submission: On June 27 via api from US — Scanned from DE

Form analysis 0 forms found in the DOM

Text Content

CODING PROJECTS THAT I WISH WERE DONE BUT I HAVEN'T HAD TIME FOR

--------------------------------------------------------------------------------


MAKE ORG.POSTGRESQL:POSTGRESQL A FULL MODULE.


WHY

The Postgres JDBC driver for Java has an Automatic-Module declaration. This
means it has a stable module name, but it is still lacking a full module-info.
Without a full module-info the driver cannot be used with jlink. Considering
Postgres is both a very popular database and my personal favorite, this stinks.
Especially since I think there would be non-trivial benefits if a significant
portion of libraries worked fully with the module system tooling.


NOTES

 * The gradle build for the postgres library is fickle and from what I tried,
   annoying to configure to do this.
 * Postgres is shading in a few libraries and that feels like it could be
   annoying... somehow
 * Its dependency on checker-qual should also be bumped to the newest version.


DESIRED RESULTS

 * The newest version of org.postgresql:postgresql has a full module descriptor
   and is fully compatible with jlink.


REWARD

If you can show that your efforts directly led to the desired result you may
email me at ethan@mccue.dev and request one of

 * A pizza or spiritually equivalent food delivered to an address of your
   choosing.
 * A Venmo for an equivalent amount.


STATUS:

NO TAKERS


A CLI THAT CAN DO EVERYTHING THE MAVEN SHADE PLUGIN CAN, BUT IS MODULE AWARE.


WHY

Shading a library - including its contents inside of your own JAR - is a good
strategy to eliminate a user-facing dependency. The Maven Shade Plugin is what
Maven users use for this. Gradle has similar plugins as well. But to use any of
that you also need to be using their respective build tools. There are also CLI
tools like Jar Jar Links and Pro Guard which can do similar things.

What I feel is missing is something that performs this same task but is aware of
the module system. For all of the options above you need to specially configure
them to not get a faulty module info in the end. This is part of why there are
so many "Imposter Modules" on Maven Central.

So what I would want is a CLI tool that can "embed" a module into your own,
including fixing up service provider usages. Ideally a Maven + Gradle plugin as
well but I am personally less interested in that.


NOTES

 * I think the concept of an "embeddable module" is good, but in an ideal world
   library authors would need to opt-in to that. Doing such a transform is not,
   in principle, robust. Especially with reflection of class names in string
   literals. Maybe requiring a flag that makes a user aware that the library
   hasn't opted in + a module level annotation they could add to opt-in? Perhaps
   not important.
 * I'm not particuarly interested in reducing the amount of code embedded or
   obfusication a'la ProGuard.


DESIRED RESULTS

 * There is a CLI tool available which can embed a module into another module.
   Ideally available on a package manager like SDKMan, Homebrew, etc.


REWARD

If you can show that your efforts directly led to the desired result you may
email me at ethan@mccue.dev and request one of

 * A pizza or spiritually equivalent food delivered to an address of your
   choosing.
 * A Venmo for an equivalent amount.


STATUS:

NO TAKERS