IUSE defaults are used in a few different ways: 1 To ensure that critical functionality is enabled.
* Example: force the "unix" module for apache. 2 To avoid an unsatisfied REQUIRED_USE by default. * Example: having a non-empty RUBY_TARGETS by default. 3 To make Gentoo defaults the upstream defaults. * Example: right now the defaults for dev-lang/php build you a "normal" PHP installation. 4 To make the default build agree with the maintainer's personal preferences. * Example: enabling hpn in net-misc/openssh by default. We don't have a policy for how to use them, so we get all four in the tree. I don't think there are any downsides to #1. The downside to #2 is that the default choice may be wrong, but the benefit outweighs that. For a given package, the user either cares about the USE flags or he doesn't (if it's some deep dependency). Both cases turn out fine in #2. A bigger problem arises from #3 and #4: it's no longer simple to get a minimal system. When various USE flags default on at random, you get users doing things like USE="-*". We can tell them not to do that, because of the flags in #1, but in fact very few IUSE defaults are critical, and most of them are junk. The only way to turn off all the junk ones without a huge waste of time is USE="-*". Can we discourage IUSE defaults except for #1 and #2? I'm equally guilty of #3 and #4, but I now regret them. I would also like to see explanations in metadata.xml of why +flags are on by default.