-
Notifications
You must be signed in to change notification settings - Fork 1.3k
Inconsistent feature selection among distributed binaries #1829
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
Comments
Cargo builds are exactly the same as building from sources (github). Users that install from source should know exactly what they are building and what is the output. I am actually going to remove all the default features in the future. Uses that use this project as a library should expect it only builds the necessary components of this project. On the other hand, the build script in the project HomeBrew, and also nixpkg, ArchLinux, ... are maintained by many other enthusiasts. I cannot control their build parameters, you should open an issue in their project. At the last, the prebuilt binaries. These binaries are for users that don't want to build from source and expecting to use most of the features out-of-the-box. |
Thanks for your quick response!
This is quite a bold assumption to make. In my opinion,
Just to clarify, I'm not suggesting changes to the library features. I see this project already split into separate binary and library crates, the suggested feature change is only meant for the binary crates. I agree with you that a library crate should not provide overly bloated default features, heck, I'd argue that the concept of "default features" itself is inherently doing more harm than good (maintaining a working default while also allowing the freedom of choosing
I understand that these packages may not be officially maintained. But I believe there is definitely room for improvement that can be made in this project to help/guide our package maintainers. And yes, "we cannot control their build parameters", but we can definitely provide a more reasonable default for our binaries, even solely for
This is the exact same reason why I filed this issue. Binary consumers mostly expect stuff to work out of the box. Having inconsistencies like this is something that I believe should be fixed/resolved, especially when we are packaging more features by default "officially". |
Actually you have convinced me a lot. But I am still going to argue about what should be the “default” feature. Theoretically the “default” feature should only contain the default feature set of shadowsocks, which should be “basic”. But in this project, prebuilt releases are built with “full”. The current “default” features are there just for compatibility reasons. It’s ok to be changed to any reasonable feature set. |
Glad to hear that. Thank you for being open-minded.
There are definitely many arguments that can be made on whether a specific feature should be included by default or not. However, as a starting point, I suggest we first establish the parity of feature selection between the default of In terms of the general direction of default feature selection for binaries - my opinion is that - we should offer binaries that are "battery-included" to save users from compiling/packaging the software themselves when they are not comfortable with doing so. This also has the added benefit of discouraging our users from downloading binaries from untrusted parties / risky sources. |
The default features enabled in different distribution channels are inconsistent which may cause confusion to the end user. For example:
full
feature enabled.cargo install
,brew install
(which inheritscargo install
) use thedefault
feature only.This confused me because the online config delivery (SIP008) works in my docker container but not on my MacBook because the two use different feature sets.
I suggest that perhaps we should make the
full
feature the default, so that end users are free from confusion caused by these kinds of inconsistencies. Withfull-extra
being introduced, thefull
feature isn't reflecting the "fullness" of the features accurately anymore anyway. With reasonably more features enabled by default, this also saves power users from compiling and packaging the binaries themselves when functionalities like SIP008 are needed, which admittedly, is a significant amount of work we would like to delegate :)As always, thanks for your hard work on this project! Would love to hear your thoughts on this.
The text was updated successfully, but these errors were encountered: