-
Notifications
You must be signed in to change notification settings - Fork 639
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Avoid using default features of dependencies #1382
Comments
Guess no one can object to that. What would be the best way to do that? Do we need to resurrect librespotd, or do we make a separate workspace here? Also I agree on using ring instead of aws-lc again. FIPS would be the only reason right? That wouldn't matter. We should also take another look at needing both ring and rustls. I remember one didn't have AES192 anymore and the other... I forgot. |
I think we can just shuffle things about a bit and more or less keep things as they are. That's what I'll attempt to do, at least. And yes, I think it's mostly just FIPS. I think most projects are choosing to not use the new default. |
May I ask what the holdup is on this diff? This would allow several spotify packages to get updated on OpenBSD … |
I have merged the changes from kingosticks@24bbc63 into my code, based on v0.6.0 release. I'm running librespot + changes without any issue. I'm using default features, compiled for Windows, PC/Linux and RPi, 32bit and 64bit (all native builds, no cross-compiling). I really appreciate to not run into build issues related to |
Is your feature request related to a problem? Please describe.
I'm unable to control (disable) unneeded features of librespot's dependencies when pulling librespot (as a library) into other projects. A particular example is
rustls
which librespot compiles with the default feature set e.g.logging
enabled and usingaws-lc-sys
instead of the more lightweightring
alternative.Describe the solution you'd like
I've read that libraries should avoid enabling default features of their dependencies and enable only what's required. Anything optional should be passed through for the caller to control. You can see this in libraries like ureq and hyper-rustls. From algesten/ureq#765 (comment)
But I appreciate we want to keep the librespot binary easy to use. So maybe we need to think about separating the deps of the library and the binary. The library wants to provide options, the binary is a concrete example of a particular set of options.
Additional context
I think if we did this we could then consider switching to using ring as the default cryptography implementation. I don't believe we have any actual requirement for using aws-lc and it's harder to build on some platforms.
The text was updated successfully, but these errors were encountered: