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.

Reply via email to