alamb opened a new issue, #759:
URL: https://github.com/apache/arrow-rs-object-store/issues/759

   **Is your feature request related to a problem or challenge? Please describe 
what you are trying to do.**
   As part of the 0.14.0 release, we are revamping how the feature flag system 
in object_store works, largely triggered by some changes in `reqwest`, the 
underlying http client library, way cryptography is handled
   
   Specifically, as described in 
https://github.com/apache/arrow-rs-object-store/issues/744 / designed with ❤️ 
from @kevinjqliu , we will now support, via feature flags
   1. Bring your own http cilent library (as well as supporting `reqwest` by 
default)
   2. Bring you own crypto library (a well as supporting ring/aws-lc-rs)
   
   This is a good thing as it allows users to customize the library exactly how 
they want, and minimize unecessary dependencies.  
   
   However, this design also results in a large number of feature flags; While 
adding tests for some combinations, it turns out it was fairly hard to test 
some of the combinations, as sometimes additional features are needed in other 
crates.
   
   For example, to test "Run clippy with base features, reqwest and no bundled 
CryptoProvider" requires activating the `rustls-no-provider` feature of `reqwest
   
   In this case, since `reqwest` is a direct dependency of object_store, we can 
do it 
   
   ```shell
   cargo clippy --no-default-features --features 
aws-base,azure-base,gcp-base,http-base,reqwest,reqwest/rustls-no-provider -- -D 
warnings
   ```
   
   This makes it hard for me to understand what the test is actually testing 
and if it could be used this way by a downstream crate, especially as I mention 
in 
https://github.com/apache/arrow-rs-object-store/pull/707#issuecomment-4732460387
   
   > I feel one difference is that actual customers will have their own 
Cargo.toml file where they can directly activate the features in the subcrates, 
so they won't be compiling just the object_store. 
   
   
   
   **Describe the solution you'd like**
   I would like to 
   1. improve the testing of `object_store` with various feature flag 
combinations so it is clear what is tested and what is not
   2. demonstrate / test that it is possible to use object_store with various 
flag combinations downstream to the desired effect
   
   
   **Describe alternatives you've considered**
   
   One way to test these features would be to create some targeted examples 
that are not part of the workspace and demonstrate (and verify they compile, 
etc) how to do the various usecases.
   
   SO that would look like:
   1. Remove the targeted clippy and `cargo tree` checks added in 
https://github.com/apache/arrow-rs-object-store/pull/707#issuecomment-4732460387
   2. Add example crates like `example/custom_http_client/` and 
`example/custom_http_client_own_crypto` projects that are not part of the main 
workspace  and that configures the feature flag in some way
   3. Use the example to show: `cargo run` works, and that they don't bring in 
unwanted dependencies
   
   
   **Additional context**
   - Discusion: https://github.com/apache/arrow-rs-object-store/issues/744
   - New feature flags, make reqwest optional: 
https://github.com/apache/arrow-rs-object-store/pull/724
   - Reqwest update / feature flag disucssion: 
https://github.com/apache/arrow-rs-object-store/pull/707
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to