What is the current behavior?
The driver is a ridiculous size:
snowflake-jdbc-3.26.0.jar
-> 78.3MB (307.7MB uncompressed)
This is up from 3.9.2:
snowflake-jdbc-3.9.2.jar
-> 29.2MB
This is up from 3.88:
snowflake-jdbc-3.8.8.jar
-> 21.4MB
21.4MB was already a ludicrous size for a dependency, and at 78.3MB is by far the largest dependency in my app.
When you dig into the detail of what is in there, you can see that there are several large libraries shaded in:

This includes, for example, Windows, Linux, MacOS binary compiled drivers in the META-INF directory, regardless of the target we may be building for.
What is the desired behavior?
Either:
a) reduce the driver size wholesale
or
b) break it up into modular dependencies that can be independently imported to include only the required features and target platforms e.g. provide an alternative flavour per platform with only the required code
Ideally, we would have a pure-Java implementation of a Snowflake client which would compress down to a small JAR dependency of 1 or 2 MB.
For example the MongoDB driver is around this size:

(admittedly it also depends on Netty, but this is a small pure-Java network library)
How would this improve snowflake-jdbc?
It would make it more credible and reasonable as a dependency, as well as improve its reputation and show that the team care about their community and the discipline of maintaining good clean code.
It would radically reduce the surface area for bugs.
It would reduce the surface area for security flaws.
It would (almost certainly) improve performance.
References, Other Background
What is the current behavior?
The driver is a ridiculous size:
snowflake-jdbc-3.26.0.jar
-> 78.3MB (307.7MB uncompressed)
This is up from 3.9.2:
snowflake-jdbc-3.9.2.jar
-> 29.2MB
This is up from 3.88:
snowflake-jdbc-3.8.8.jar
-> 21.4MB
21.4MB was already a ludicrous size for a dependency, and at 78.3MB is by far the largest dependency in my app.
When you dig into the detail of what is in there, you can see that there are several large libraries shaded in:

This includes, for example, Windows, Linux, MacOS binary compiled drivers in the META-INF directory, regardless of the target we may be building for.
What is the desired behavior?
Either:
a) reduce the driver size wholesale
or
b) break it up into modular dependencies that can be independently imported to include only the required features and target platforms e.g. provide an alternative flavour per platform with only the required code
Ideally, we would have a pure-Java implementation of a Snowflake client which would compress down to a small JAR dependency of 1 or 2 MB.
For example the MongoDB driver is around this size:

(admittedly it also depends on Netty, but this is a small pure-Java network library)
How would this improve
snowflake-jdbc?It would make it more credible and reasonable as a dependency, as well as improve its reputation and show that the team care about their community and the discipline of maintaining good clean code.
It would radically reduce the surface area for bugs.
It would reduce the surface area for security flaws.
It would (almost certainly) improve performance.
References, Other Background