public inbox for gentoo-dev@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-dev] Guidelines for IUSE defaults
@ 2017-02-02 14:11 Michael Orlitzky
  2017-02-02 14:56 ` Ian Stakenvicius
                   ` (4 more replies)
  0 siblings, 5 replies; 85+ messages in thread
From: Michael Orlitzky @ 2017-02-02 14:11 UTC (permalink / raw
  To: gentoo-dev

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.


^ permalink raw reply	[flat|nested] 85+ messages in thread

* Re: [gentoo-dev] Guidelines for IUSE defaults
  2017-02-02 14:11 [gentoo-dev] Guidelines for IUSE defaults Michael Orlitzky
@ 2017-02-02 14:56 ` Ian Stakenvicius
  2017-02-02 15:49   ` Michael Orlitzky
  2017-02-02 15:06 ` [gentoo-dev] " Kristian Fiskerstrand
                   ` (3 subsequent siblings)
  4 siblings, 1 reply; 85+ messages in thread
From: Ian Stakenvicius @ 2017-02-02 14:56 UTC (permalink / raw
  To: gentoo-dev


> On Feb 2, 2017, at 9:11 AM, Michael Orlitzky <mjo@gentoo.org> wrote:
> 
> IUSE defaults are used in a few different ways:
> 
>  1 To ensure that critical functionality is enabled.
> 
>    * Example: force the "unix" module for apache.
> 

This is not what IUSE defaults are for, this should be done with package.use{,.stable}.{mask,force} in profiles.  If functionality is critical then there (A) shouldn't be a use flag, or (B) shouldn't be a way for USE= in make.conf to disable it.





^ permalink raw reply	[flat|nested] 85+ messages in thread

* Re: [gentoo-dev] Guidelines for IUSE defaults
  2017-02-02 14:11 [gentoo-dev] Guidelines for IUSE defaults Michael Orlitzky
  2017-02-02 14:56 ` Ian Stakenvicius
@ 2017-02-02 15:06 ` Kristian Fiskerstrand
  2017-02-02 15:11   ` James Le Cuirot
                     ` (2 more replies)
  2017-02-02 17:23 ` Walter Dnes
                   ` (2 subsequent siblings)
  4 siblings, 3 replies; 85+ messages in thread
From: Kristian Fiskerstrand @ 2017-02-02 15:06 UTC (permalink / raw
  To: gentoo-dev


[-- Attachment #1.1: Type: text/plain, Size: 692 bytes --]

On 02/02/2017 03:11 PM, Michael Orlitzky wrote:
> 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.

This presumes that the goal is minimal system in all cases, rather than
a good user experience for inter alia a desktop system or a
server-system. If a user requires a minimal system for whatever reason
(s)he is likely more prepared to understand the choices than the average
user.

-- 
Kristian Fiskerstrand
OpenPGP keyblock reachable at hkp://pool.sks-keyservers.net
fpr:94CB AFDD 3034 5109 5618 35AA 0B7F 8B60 E3ED FAE3


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply	[flat|nested] 85+ messages in thread

* Re: [gentoo-dev] Guidelines for IUSE defaults
  2017-02-02 15:06 ` [gentoo-dev] " Kristian Fiskerstrand
@ 2017-02-02 15:11   ` James Le Cuirot
  2017-02-02 15:36   ` Michael Orlitzky
  2017-02-02 15:57   ` james
  2 siblings, 0 replies; 85+ messages in thread
From: James Le Cuirot @ 2017-02-02 15:11 UTC (permalink / raw
  To: gentoo-dev

On Thu, 2 Feb 2017 16:06:02 +0100
Kristian Fiskerstrand <k_f@gentoo.org> wrote:

> On 02/02/2017 03:11 PM, Michael Orlitzky wrote:
> > 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.  
> 
> This presumes that the goal is minimal system in all cases, rather
> than a good user experience for inter alia a desktop system or a
> server-system. If a user requires a minimal system for whatever reason
> (s)he is likely more prepared to understand the choices than the
> average user.

Exactly what I was going to say.

-- 
James Le Cuirot (chewi)
Gentoo Linux Developer


^ permalink raw reply	[flat|nested] 85+ messages in thread

* Re: [gentoo-dev] Guidelines for IUSE defaults
  2017-02-02 15:06 ` [gentoo-dev] " Kristian Fiskerstrand
  2017-02-02 15:11   ` James Le Cuirot
@ 2017-02-02 15:36   ` Michael Orlitzky
  2017-02-02 15:51     ` [gentoo-dev] icedtea requiring X libs to build was -> " William L. Thomson Jr.
                       ` (3 more replies)
  2017-02-02 15:57   ` james
  2 siblings, 4 replies; 85+ messages in thread
From: Michael Orlitzky @ 2017-02-02 15:36 UTC (permalink / raw
  To: gentoo-dev

On 02/02/2017 10:06 AM, Kristian Fiskerstrand wrote:
> On 02/02/2017 03:11 PM, Michael Orlitzky wrote:
>> 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.
> 
> This presumes that the goal is minimal system in all cases, rather than
> a good user experience for inter alia a desktop system or a
> server-system. If a user requires a minimal system for whatever reason
> (s)he is likely more prepared to understand the choices than the average
> user.
> 

I'm not saying that we should have a minimal experience out-of-the-box,
only that the base profile should result in an effectively-minimal set
of USE flags. Adding IUSE defaults is essentially adding defaults to the
base profile. Why does dev-java/icedtea try to pull in GTK (and thus X)
on a headless server? That stuff belongs in a desktop profile, not in
the base one.

I don't think minimal should be our default, but it should be
*possible*. It practically isn't so long as people mix uses #1, #3, and
#4. I guess I would also be happy if we outlawed use #1 so that USE="-*"
would be supported. In any case, we should document how to use them.
Having them mean four different things causes confusion.



^ permalink raw reply	[flat|nested] 85+ messages in thread

* Re: [gentoo-dev] Guidelines for IUSE defaults
  2017-02-02 14:56 ` Ian Stakenvicius
@ 2017-02-02 15:49   ` Michael Orlitzky
  2017-02-03  8:16     ` [gentoo-dev] " Duncan
  0 siblings, 1 reply; 85+ messages in thread
From: Michael Orlitzky @ 2017-02-02 15:49 UTC (permalink / raw
  To: gentoo-dev

On 02/02/2017 09:56 AM, Ian Stakenvicius wrote:
> 
>> On Feb 2, 2017, at 9:11 AM, Michael Orlitzky <mjo@gentoo.org>
>> wrote:
>> 
>> IUSE defaults are used in a few different ways:
>> 
>> 1 To ensure that critical functionality is enabled.
>> 
>> * Example: force the "unix" module for apache.
>> 
> 
> This is not what IUSE defaults are for, this should be done with
> package.use{,.stable}.{mask,force} in profiles.  If functionality is
> critical then there (A) shouldn't be a use flag, or (B) shouldn't be
> a way for USE= in make.conf to disable it.
> 

If we adopted this policy, then USE="-*" would no longer be guaranteed
to break the system. It does still ignore your profile defaults, though,
which presumably are important (e.g. for hardened). So we're still left
with no way for me to turn off everyone's pet USE flags and keep my
system working.



^ permalink raw reply	[flat|nested] 85+ messages in thread

* Re: [gentoo-dev] icedtea requiring X libs to build  was -> Guidelines for IUSE defaults
  2017-02-02 15:36   ` Michael Orlitzky
@ 2017-02-02 15:51     ` William L. Thomson Jr.
  2017-02-02 15:53       ` Michael Orlitzky
  2017-02-02 15:52     ` [gentoo-dev] " Rich Freeman
                       ` (2 subsequent siblings)
  3 siblings, 1 reply; 85+ messages in thread
From: William L. Thomson Jr. @ 2017-02-02 15:51 UTC (permalink / raw
  To: gentoo-dev

[-- Attachment #1: Type: text/plain, Size: 1645 bytes --]

On Thursday, February 2, 2017 10:36:51 AM EST Michael Orlitzky wrote:
> Why does dev-java/icedtea try to pull in GTK (and thus X)
> on a headless server? That stuff belongs in a desktop profile, not in
> the base one.

In that specific case it cannot be avoided. Building is not the same as using. 
Even if you are not using aspects, they still need to be built. Even a 
headless server may do graphics manipulation, image, video, etc. Thus will 
require graphical type libraries to build those portions of Java.

Building something is not the same as using the result. You have the same 
issues with -bins, oracle, and icedtea. The difference is its pre-built. You 
would only run into issues if you tried to use a portion of Java that relied 
on system libraries not present. Thus those have use flags that will pull in 
additional libraries like javafx, etc.

People with this dream of building java from source do not really understand 
what all it takes. Building Java on a servers is not ideal as you will need X 
libraries, etc. To truly do it from source, you have to bootstrap back to 1.5, 
and build each version in succession. Or use a pre-build binary from a prior 
version to build current, icedted-7 (1.7) to build ~icedtea-3 (1.8).  
Versioning is another matter and topic.

Java is moving to a more modular build and deployment system. Starting with 
Java 9. Maybe in the future pieces can be built and a headless server version 
would not require X to build from source. Though given graphical library usage 
previously mentioned. Some parts may always bring in things you may not want 
on a server.

-- 
William L. Thomson Jr.

[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 195 bytes --]

^ permalink raw reply	[flat|nested] 85+ messages in thread

* Re: [gentoo-dev] Guidelines for IUSE defaults
  2017-02-02 15:36   ` Michael Orlitzky
  2017-02-02 15:51     ` [gentoo-dev] icedtea requiring X libs to build was -> " William L. Thomson Jr.
@ 2017-02-02 15:52     ` Rich Freeman
  2017-02-02 15:59       ` Michael Orlitzky
  2017-02-02 15:52     ` James Le Cuirot
  2017-02-02 21:17     ` Dirkjan Ochtman
  3 siblings, 1 reply; 85+ messages in thread
From: Rich Freeman @ 2017-02-02 15:52 UTC (permalink / raw
  To: gentoo-dev

On Thu, Feb 2, 2017 at 10:36 AM, Michael Orlitzky <mjo@gentoo.org> wrote:
>
> Why does dev-java/icedtea try to pull in GTK (and thus X)
> on a headless server? That stuff belongs in a desktop profile, not in
> the base one.

The base profile isn't "headless server" - it is just generic.

Somebody could create a headless server profile that set USE=-X and
the necessary tweaks when necessary to handle specific packages.
Having mix-ins would help with this by reducing the costs of adding
profiles so that we can offer more choices like this.

Users can of course set USE=-* if they really want a minimal system,
and build up from there.  However, a minimal profile would probably be
a better solution if somebody wanted to create one.

The problem is that if you treat the base profile as "minimal" then
you lose the ability to maintain an upstream-default profile (unless
you end up with a huge package.use.force/mask file which IMO is the
wrong place to put stuff like this).  I think that upstream-defaults
is a more sensible base than something intended to be minimal.  It is
far easier to let all the packages specify defaults individually and
then make large-scale adjustments (up or down) to these, than to try
to achieve a "default" position from one that just has everything
turned off.

-- 
Rich


^ permalink raw reply	[flat|nested] 85+ messages in thread

* Re: [gentoo-dev] Guidelines for IUSE defaults
  2017-02-02 15:36   ` Michael Orlitzky
  2017-02-02 15:51     ` [gentoo-dev] icedtea requiring X libs to build was -> " William L. Thomson Jr.
  2017-02-02 15:52     ` [gentoo-dev] " Rich Freeman
@ 2017-02-02 15:52     ` James Le Cuirot
  2017-02-02 21:17     ` Dirkjan Ochtman
  3 siblings, 0 replies; 85+ messages in thread
From: James Le Cuirot @ 2017-02-02 15:52 UTC (permalink / raw
  To: gentoo-dev

On Thu, 2 Feb 2017 10:36:51 -0500
Michael Orlitzky <mjo@gentoo.org> wrote:

> On 02/02/2017 10:06 AM, Kristian Fiskerstrand wrote:
> > On 02/02/2017 03:11 PM, Michael Orlitzky wrote:  
> >> 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.  
> > 
> > This presumes that the goal is minimal system in all cases, rather
> > than a good user experience for inter alia a desktop system or a
> > server-system. If a user requires a minimal system for whatever
> > reason (s)he is likely more prepared to understand the choices than
> > the average user.
> 
> I'm not saying that we should have a minimal experience
> out-of-the-box, only that the base profile should result in an
> effectively-minimal set of USE flags. Adding IUSE defaults is
> essentially adding defaults to the base profile. Why does
> dev-java/icedtea try to pull in GTK (and thus X) on a headless
> server? That stuff belongs in a desktop profile, not in the base one.

I can appreciate the frustration with icedtea. It's complicated by the
fact that I made it a somewhat negative USE flag, headless-awt. This
decision wasn't taken lightly. USE=X didn't really make sense any more
so I changed it to USE=awt but upstream, who does most of the ebuild
work, objected on the basis that AWT is always present, even on
headless systems. He wanted USE=headless as that is the commonly used
term but there was also JavaFX to consider so I compromised with
headless-awt. There was the expected handful of complaints from USE=-*
users initially but I haven't heard anything regarding this in a long
time. I suppose I could enable headless-awt by default and disable it
in the desktop profile but I suspect it'll still trip somebody up.

-- 
James Le Cuirot (chewi)
Gentoo Linux Developer


^ permalink raw reply	[flat|nested] 85+ messages in thread

* Re: [gentoo-dev] icedtea requiring X libs to build was -> Guidelines for IUSE defaults
  2017-02-02 15:51     ` [gentoo-dev] icedtea requiring X libs to build was -> " William L. Thomson Jr.
@ 2017-02-02 15:53       ` Michael Orlitzky
  2017-02-02 16:09         ` James Le Cuirot
  2017-02-02 16:16         ` William L. Thomson Jr.
  0 siblings, 2 replies; 85+ messages in thread
From: Michael Orlitzky @ 2017-02-02 15:53 UTC (permalink / raw
  To: gentoo-dev

On 02/02/2017 10:51 AM, William L. Thomson Jr. wrote:
> On Thursday, February 2, 2017 10:36:51 AM EST Michael Orlitzky wrote:
>> Why does dev-java/icedtea try to pull in GTK (and thus X)
>> on a headless server? That stuff belongs in a desktop profile, not in
>> the base one.
> 
> In that specific case it cannot be avoided.

Yes it can. I just have to waste my time unsetting the stupid USE flag
that's on for no reason =P




^ permalink raw reply	[flat|nested] 85+ messages in thread

* Re: [gentoo-dev] Guidelines for IUSE defaults
  2017-02-02 15:06 ` [gentoo-dev] " Kristian Fiskerstrand
  2017-02-02 15:11   ` James Le Cuirot
  2017-02-02 15:36   ` Michael Orlitzky
@ 2017-02-02 15:57   ` james
  2 siblings, 0 replies; 85+ messages in thread
From: james @ 2017-02-02 15:57 UTC (permalink / raw
  To: gentoo-dev

On 02/02/2017 10:06 AM, Kristian Fiskerstrand wrote:
> On 02/02/2017 03:11 PM, Michael Orlitzky wrote:
>> 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.
>
> This presumes that the goal is minimal system in all cases, rather than
> a good user experience for inter alia a desktop system or a
> server-system. If a user requires a minimal system for whatever reason
> (s)he is likely more prepared to understand the choices than the average
> user.

Not so sure about his postulate.

As one who defaults to minimal systems (yes even on a 8-core 32G ram 
system), I'd like to offer a bit of insight. Please keep in mind  that 
in my experiences, there are probably many more folks creating ebuilds
than gentoo has devs; so as logical and streamlined and coherent as 
possible means a necessary focal point is the minimized gentoo system build.

Some folks need a minimal install because of their hardware constraints.

Some folks want a minimal install because statistically that's the 
easiest way to get a new (rolling) distro working, especially minus a 
heavy WM, like KDE. Due to a lack of a streamlined installer processes 
for gentoo, there is a lot of 'monkey see monkey do' approaches to 
repetitively installing gentoo in the wild, so a minimal focus is 
better. (KISS is king).

Some folks want a minimal install, because it's fairly trivial (for 
identical platformed system) to then copy over bin packages or compile 
in  additional packages (via the world file) and make the system 
whatever they want it to be. It can also be returned to a minimal state, 
by just removing these secondary packages that converted the minimal 
system into something more full featured.

Some folks want a minimal arm system that is in the footprint of a small
(arm-based) laptop, so it is quite similar to  Single Board Computer arm 
systems  as possible; ultimately trying to keep a variety of arm systems 
as similar as possible.

Some folks have a variety of embedded gentoo systems, and the closer the
minimal system is to being identical (via package sets) the more logical 
their schema  can be on management (think IoT).


I could go on and on all all, clusters, firewalls kiosk etc etc. My 
point is a minimal system is the foundational building block for gentoo 
and as such it is like a construction dock for building up all sorts, if 
not all gentoo systems.

How this affects re-organization of documentation on IUSE and related 
issues is of great curiosity to me. So, when my work is complete (or at 
least enough to share) there shall be many stage-4 minimal gentoo images 
to install from and go from there. So as much as all issues can be 
minimized, standardized, documented and look like other arches, the "mo 
better" imo.


hth,
James




^ permalink raw reply	[flat|nested] 85+ messages in thread

* Re: [gentoo-dev] Guidelines for IUSE defaults
  2017-02-02 15:52     ` [gentoo-dev] " Rich Freeman
@ 2017-02-02 15:59       ` Michael Orlitzky
  2017-02-02 16:08         ` Rich Freeman
  0 siblings, 1 reply; 85+ messages in thread
From: Michael Orlitzky @ 2017-02-02 15:59 UTC (permalink / raw
  To: gentoo-dev

On 02/02/2017 10:52 AM, Rich Freeman wrote:
> On Thu, Feb 2, 2017 at 10:36 AM, Michael Orlitzky <mjo@gentoo.org> wrote:
>>
>> Why does dev-java/icedtea try to pull in GTK (and thus X)
>> on a headless server? That stuff belongs in a desktop profile, not in
>> the base one.
> 
> The base profile isn't "headless server" - it is just generic.

If this is how everyone is treating it, then we should at least document
that fact...


> The problem is that if you treat the base profile as "minimal" then
> you lose the ability to maintain an upstream-default profile (unless
> you end up with a huge package.use.force/mask file which IMO is the
> wrong place to put stuff like this).

Why would you need package.use.force/mask? The upstream defaults would
build on top of the minimal base profile, in plain old package.use. In
the profile is exactly where the upstream defaults belong in an
"upstream defaults" profile.

I think (base == minimal) is the simpler way to allow both possibilities.



^ permalink raw reply	[flat|nested] 85+ messages in thread

* Re: [gentoo-dev] Guidelines for IUSE defaults
  2017-02-02 15:59       ` Michael Orlitzky
@ 2017-02-02 16:08         ` Rich Freeman
  2017-02-02 16:25           ` Michael Orlitzky
  0 siblings, 1 reply; 85+ messages in thread
From: Rich Freeman @ 2017-02-02 16:08 UTC (permalink / raw
  To: gentoo-dev

On Thu, Feb 2, 2017 at 10:59 AM, Michael Orlitzky <mjo@gentoo.org> wrote:
>
> The upstream defaults would
> build on top of the minimal base profile, in plain old package.use. In
> the profile is exactly where the upstream defaults belong in an
> "upstream defaults" profile.
>
> I think (base == minimal) is the simpler way to allow both possibilities.
>

Which is simpler, a minimal profile that sets USE=-* and then lists a
few exceptions where that breaks in package.use, or an upstream
defaults profile (which becomes the basis for all the other profiles)
that has a 5000 line package.use file that specifies the upstream
defaults for every package in the repository?

Profiles like desktop/server/etc seem far more likely to end up being
based on the upstream defaults profile than on the minimal profile, so
calling the minimal profile "base" also seems a bit wrong.

It just seems easier to start with an elegantly created set of
reasonable defaults and apply a sledgehammer to it, than start with a
barren wasteland and then try to carefully create a lot of detail on
top.

Also, as has been pointed out in the other subthread, a lot of this
stuff becomes use-case-specific.  I get that people don't want stuff
they don't want, but it often isn't actually based on whether they're
running desktop vs server or embedded vs traditional and so on (which
is also the issue with server profiles in general).  If you want to go
down that road I think mix-ins make far more sense so that you can
have a million very-specific use cases addressed with specific
solutions rather than having everybody arguing endlessly about whether
a "server" needs imagemagick or apache.

-- 
Rich


^ permalink raw reply	[flat|nested] 85+ messages in thread

* Re: [gentoo-dev] icedtea requiring X libs to build was -> Guidelines for IUSE defaults
  2017-02-02 15:53       ` Michael Orlitzky
@ 2017-02-02 16:09         ` James Le Cuirot
  2017-02-02 16:13           ` Michael Orlitzky
  2017-02-02 16:16         ` William L. Thomson Jr.
  1 sibling, 1 reply; 85+ messages in thread
From: James Le Cuirot @ 2017-02-02 16:09 UTC (permalink / raw
  To: gentoo-dev

On Thu, 2 Feb 2017 10:53:08 -0500
Michael Orlitzky <mjo@gentoo.org> wrote:

> On 02/02/2017 10:51 AM, William L. Thomson Jr. wrote:
> > On Thursday, February 2, 2017 10:36:51 AM EST Michael Orlitzky
> > wrote:  
> >> Why does dev-java/icedtea try to pull in GTK (and thus X)
> >> on a headless server? That stuff belongs in a desktop profile, not
> >> in the base one.  
> > 
> > In that specific case it cannot be avoided.  
> 
> Yes it can. I just have to waste my time unsetting the stupid USE flag
> that's on for no reason =P

Actually he's right. Java can obviously be used without GTK and that's
something we support but upstream hasn't taken the time to make it
possible to build without it. Apparently that isn't a trivial thing to
do.

In my earlier mail, I was only talking about runtime. If you really
want to avoid GTK on a server then you should stick to one of the -bin
packages. Hopefully Java 9 will improve on this.

-- 
James Le Cuirot (chewi)
Gentoo Linux Developer


^ permalink raw reply	[flat|nested] 85+ messages in thread

* Re: [gentoo-dev] icedtea requiring X libs to build was -> Guidelines for IUSE defaults
  2017-02-02 16:09         ` James Le Cuirot
@ 2017-02-02 16:13           ` Michael Orlitzky
  2017-02-02 16:18             ` William L. Thomson Jr.
  0 siblings, 1 reply; 85+ messages in thread
From: Michael Orlitzky @ 2017-02-02 16:13 UTC (permalink / raw
  To: gentoo-dev

On 02/02/2017 11:09 AM, James Le Cuirot wrote:
> 
> Actually he's right. Java can obviously be used without GTK and that's
> something we support but upstream hasn't taken the time to make it
> possible to build without it. Apparently that isn't a trivial thing to
> do.
> 
> In my earlier mail, I was only talking about runtime. If you really
> want to avoid GTK on a server then you should stick to one of the -bin
> packages. Hopefully Java 9 will improve on this.
> 

Apologies: I was actually thinking of icedtea-bin... which ALSO pulls in
GTK due to IUSE defaults.




^ permalink raw reply	[flat|nested] 85+ messages in thread

* Re: [gentoo-dev] icedtea requiring X libs to build was -> Guidelines for IUSE defaults
  2017-02-02 15:53       ` Michael Orlitzky
  2017-02-02 16:09         ` James Le Cuirot
@ 2017-02-02 16:16         ` William L. Thomson Jr.
  1 sibling, 0 replies; 85+ messages in thread
From: William L. Thomson Jr. @ 2017-02-02 16:16 UTC (permalink / raw
  To: gentoo-dev

[-- Attachment #1: Type: text/plain, Size: 2362 bytes --]

On Thursday, February 2, 2017 10:53:08 AM EST Michael Orlitzky wrote:
> On 02/02/2017 10:51 AM, William L. Thomson Jr. wrote:
> > On Thursday, February 2, 2017 10:36:51 AM EST Michael Orlitzky wrote:
> >> Why does dev-java/icedtea try to pull in GTK (and thus X)
> >> on a headless server? That stuff belongs in a desktop profile, not in
> >> the base one.
> > 
> > In that specific case it cannot be avoided.
> 
> Yes it can. I just have to waste my time unsetting the stupid USE flag
> that's on for no reason =P

If you understand headless you will understand the rest.
http://www.oracle.com/technetwork/articles/javase/headless-136834.html

You do not have to have GTK  USE flag or all of X, but you will be pulling in X 
libraries likely not present on the system to begin with. You may also 
experience various abnormal issues as this is not how Java is normally. 
Building it with different USE flags is pretty different than installing a pre-
built -bin with different USE flags.

On a headless server, a merge of icetea pulls in 48 packages, regardless if 
headless-awt USE is set or not. Just as an example. Same 48 packages to build, 
45 being new.

[ebuild  N     ] dev-java/icedtea-7.2.6.8:7::gentoo  USE="jbootstrap 
pax_kernel sunec -alsa (-cacao) -cjk -cups -debug -doc -examples -gtk -
headless-awt -infinality (-jamvm) -javascript -kerberos -libressl -nsplugin -
nss -pulseaudio -sctp (-selinux) -smartcard -source {-test} -webstart -zero" 
54,222 KiB

Total: 48 packages (45 new, 1 in new slot, 2 reinstalls), Size of downloads: 
309,943 KiB


[ebuild  N     ] dev-java/icedtea-7.2.6.8:7::gentoo  USE="headless-awt 
jbootstrap pax_kernel sunec -alsa (-cacao) -cjk -cups -debug -doc -examples -
gtk -infinality (-jamvm) -javascript -kerberos -libressl -nsplugin -nss -
pulseaudio -sctp (-selinux) -smartcard -source {-test} -webstart -zero"

Total: 48 packages (45 new, 1 in new slot, 2 reinstalls), Size of downloads: 
309,943 KiB

You can see -cups, but guess what, it is required and comes in regardless if 
USE flag is set or not. You will have to enable cups USE flag for other stuff.

# required by net-print/cups-filters-1.13.3::gentoo[postscript]
# required by net-print/cups-2.2.2-r1::gentoo
# required by dev-java/icedtea-7.2.6.8::gentoo
# required by icedtea (argument)
>=app-text/ghostscript-gpl-9.20-r1

-- 
William L. Thomson Jr.

[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 195 bytes --]

^ permalink raw reply	[flat|nested] 85+ messages in thread

* Re: [gentoo-dev] icedtea requiring X libs to build was -> Guidelines for IUSE defaults
  2017-02-02 16:13           ` Michael Orlitzky
@ 2017-02-02 16:18             ` William L. Thomson Jr.
  2017-02-02 16:27               ` Michael Orlitzky
  0 siblings, 1 reply; 85+ messages in thread
From: William L. Thomson Jr. @ 2017-02-02 16:18 UTC (permalink / raw
  To: gentoo-dev

[-- Attachment #1: Type: text/plain, Size: 896 bytes --]

On Thursday, February 2, 2017 11:13:40 AM EST Michael Orlitzky wrote:
> On 02/02/2017 11:09 AM, James Le Cuirot wrote:
> > Actually he's right. Java can obviously be used without GTK and that's
> > something we support but upstream hasn't taken the time to make it
> > possible to build without it. Apparently that isn't a trivial thing to
> > do.
> > 
> > In my earlier mail, I was only talking about runtime. If you really
> > want to avoid GTK on a server then you should stick to one of the -bin
> > packages. Hopefully Java 9 will improve on this.
> 
> Apologies: I was actually thinking of icedtea-bin... which ALSO pulls in
> GTK due to IUSE defaults.

If you look at dev-java/icedtea ebuild you will see

# Gtk+ will move to COMMON_DEP in time; PR1982

I cannot find PR1982 referenced to link. But shows that it is needed and causes 
issues without being set.

-- 
William L. Thomson Jr.

[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 195 bytes --]

^ permalink raw reply	[flat|nested] 85+ messages in thread

* Re: [gentoo-dev] Guidelines for IUSE defaults
  2017-02-02 16:08         ` Rich Freeman
@ 2017-02-02 16:25           ` Michael Orlitzky
  2017-02-02 18:01             ` Rich Freeman
  0 siblings, 1 reply; 85+ messages in thread
From: Michael Orlitzky @ 2017-02-02 16:25 UTC (permalink / raw
  To: gentoo-dev

On 02/02/2017 11:08 AM, Rich Freeman wrote:
> 
> Which is simpler, a minimal profile that sets USE=-* and then lists a
> few exceptions where that breaks in package.use, or an upstream
> defaults profile (which becomes the basis for all the other profiles)
> that has a 5000 line package.use file that specifies the upstream
> defaults for every package in the repository?
> 

It's honestly hard to say. I see your point, but "a few exceptions"
might not be so few. Every IUSE default that

  (1) enables something critical, or
  (2) enables a default choice for a REQUIRED_USE constraint

would need to be added back to the minimal profile. And of course the
reason I started this thread is that those two usages are common. I
clearly had the "minimal base" profile in mind, but the fact that (1)
and (2) are used throughout the tree creates problems for any minimal
profile, even is the base profile is "upstream defaults."

If (base == minimal), then all of the upstream defaults need to be added
to package.use for the upstream-defaults profile. That's bad, but if
(base == upstream-defaults), then the important IUSE defaults need to be
copy/pasted from our ebuilds into the minimal profile. The latter is
more spiritually damning =)



^ permalink raw reply	[flat|nested] 85+ messages in thread

* Re: [gentoo-dev] icedtea requiring X libs to build was -> Guidelines for IUSE defaults
  2017-02-02 16:18             ` William L. Thomson Jr.
@ 2017-02-02 16:27               ` Michael Orlitzky
  2017-02-02 17:06                 ` William L. Thomson Jr.
  0 siblings, 1 reply; 85+ messages in thread
From: Michael Orlitzky @ 2017-02-02 16:27 UTC (permalink / raw
  To: gentoo-dev

On 02/02/2017 11:18 AM, William L. Thomson Jr. wrote:
> 
> If you look at dev-java/icedtea ebuild you will see
> 
> # Gtk+ will move to COMMON_DEP in time; PR1982
> 
> I cannot find PR1982 referenced to link. But shows that it is needed and causes 
> issues without being set.
> 

I don't really want to fight about this. I have USE="-gtk" for
icedtea-bin, and run a few happy websites through Tomcat that haven't
yet noticed that GTK is missing.

But more importantly, icedtea-bin was just one example that I had in
mind. There are hundreds of others in the tree.



^ permalink raw reply	[flat|nested] 85+ messages in thread

* Re: [gentoo-dev] icedtea requiring X libs to build was -> Guidelines for IUSE defaults
  2017-02-02 16:27               ` Michael Orlitzky
@ 2017-02-02 17:06                 ` William L. Thomson Jr.
  2017-02-02 17:18                   ` Michael Orlitzky
  0 siblings, 1 reply; 85+ messages in thread
From: William L. Thomson Jr. @ 2017-02-02 17:06 UTC (permalink / raw
  To: gentoo-dev

[-- Attachment #1: Type: text/plain, Size: 1796 bytes --]

On Thursday, February 2, 2017 11:27:20 AM EST Michael Orlitzky wrote:
> On 02/02/2017 11:18 AM, William L. Thomson Jr. wrote:
> > If you look at dev-java/icedtea ebuild you will see
> > 
> > # Gtk+ will move to COMMON_DEP in time; PR1982
> > 
> > I cannot find PR1982 referenced to link. But shows that it is needed and
> > causes issues without being set.
> 
> I don't really want to fight about this. I have USE="-gtk" for
> icedtea-bin, and run a few happy websites through Tomcat that haven't
> yet noticed that GTK is missing.

Who is fighting? I am just explaining. Unless you go to use some graphical 
aspect of Java it will not matter. Same thing applies to oracle-jdk-bin if you 
do not have various USE flags set. It will not matter if you are not using Java 
code that relies on such. Nothing from java.awt.* for example. Previous link 
on headless shows stuff your likely not using, thus no issues.

GTK is not really necessary unless using swing/javafx, maybe some awt. The 
graphical aspects do not rely on GTK at its core. They do rely on various X 
libraries. When it comes to building that is another matter. GTK is needed to 
build a complete Java env. Just showing the comment since it was attempted to 
make GTK optional USE flag but has issues. I just cannot point specifically to 
the issues. Thus you can build and run without GTK, but eventually that will 
not be an option for reasons unknown in the PR comment.

> But more importantly, icedtea-bin was just one example that I had in
> mind. There are hundreds of others in the tree.

Sure, but some packages themselves go against a minimalist approach due to 
their own build requirements. You have to fight the package to make them 
minimal and I am not sure the fight is worth it at times.

-- 
William L. Thomson Jr.

[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 195 bytes --]

^ permalink raw reply	[flat|nested] 85+ messages in thread

* Re: [gentoo-dev] icedtea requiring X libs to build was -> Guidelines for IUSE defaults
  2017-02-02 17:06                 ` William L. Thomson Jr.
@ 2017-02-02 17:18                   ` Michael Orlitzky
  2017-02-02 23:07                     ` William L. Thomson Jr.
  0 siblings, 1 reply; 85+ messages in thread
From: Michael Orlitzky @ 2017-02-02 17:18 UTC (permalink / raw
  To: gentoo-dev

On 02/02/2017 12:06 PM, William L. Thomson Jr. wrote:
> 
>> But more importantly, icedtea-bin was just one example that I had in
>> mind. There are hundreds of others in the tree.
> 
> Sure, but some packages themselves go against a minimalist approach due to 
> their own build requirements. You have to fight the package to make them 
> minimal and I am not sure the fight is worth it at times.
> 

We agree on that. If making GTK optional for your package is too much
trouble, then don't make it optional. The problem is only when the
maintainer does make it optional, and then defaults it on in every
profile using IUSE defaults. Most "give the user a typical system" USE
defaults belong in a desktop or server profile, not in the base.



^ permalink raw reply	[flat|nested] 85+ messages in thread

* Re: [gentoo-dev] Guidelines for IUSE defaults
  2017-02-02 14:11 [gentoo-dev] Guidelines for IUSE defaults Michael Orlitzky
  2017-02-02 14:56 ` Ian Stakenvicius
  2017-02-02 15:06 ` [gentoo-dev] " Kristian Fiskerstrand
@ 2017-02-02 17:23 ` Walter Dnes
  2017-02-02 17:28   ` Michael Orlitzky
  2017-02-03  2:00 ` Sam Jorna
  2017-02-07  7:52 ` Ulrich Mueller
  4 siblings, 1 reply; 85+ messages in thread
From: Walter Dnes @ 2017-02-02 17:23 UTC (permalink / raw
  To: gentoo-dev

On Thu, Feb 02, 2017 at 09:11:26AM -0500, Michael Orlitzky wrote

>   2 To avoid an unsatisfied REQUIRED_USE by default.
> 
>     * Example: having a non-empty RUBY_TARGETS by default.

  What's wrong with having emerge spit out an error message, and telling
the user that they need to set a flag to one of 2-or-more options?

>   4 To make the default build agree with the maintainer's personal
>     preferences.
> 
>     * Example: enabling hpn in net-misc/openssh by default.

  Another example is IPV6 which most people do not yet have from their
ISP as a regular service.

-- 
Walter Dnes <waltdnes@waltdnes.org>
I don't run "desktop environments"; I run useful applications


^ permalink raw reply	[flat|nested] 85+ messages in thread

* Re: [gentoo-dev] Guidelines for IUSE defaults
  2017-02-02 17:23 ` Walter Dnes
@ 2017-02-02 17:28   ` Michael Orlitzky
  0 siblings, 0 replies; 85+ messages in thread
From: Michael Orlitzky @ 2017-02-02 17:28 UTC (permalink / raw
  To: gentoo-dev

On 02/02/2017 12:23 PM, Walter Dnes wrote:
> On Thu, Feb 02, 2017 at 09:11:26AM -0500, Michael Orlitzky wrote
> 
>>   2 To avoid an unsatisfied REQUIRED_USE by default.
>>
>>     * Example: having a non-empty RUBY_TARGETS by default.
> 
>   What's wrong with having emerge spit out an error message, and telling
> the user that they need to set a flag to one of 2-or-more options?
> 

If everything is already sorted out on your machine, and the package
you're trying to install is something you care about, then you're right:
I think most people would like to be prompted and make a choice.

But imagine a fresh install, where you've set your USE flags and are
about to do the final emerge -e @world. It's going to stop and prompt
you 1,000 times to e.g. pick a ruby implementation, when I don't want
ruby and don't care about ruby but it just happens to be used in the
build system for webkit-gtk. If 90% of the prompts are for things like
that, people will start defenestrating their Gentoo systems.



^ permalink raw reply	[flat|nested] 85+ messages in thread

* Re: [gentoo-dev] Guidelines for IUSE defaults
  2017-02-02 16:25           ` Michael Orlitzky
@ 2017-02-02 18:01             ` Rich Freeman
  2017-02-02 20:35               ` james
                                 ` (3 more replies)
  0 siblings, 4 replies; 85+ messages in thread
From: Rich Freeman @ 2017-02-02 18:01 UTC (permalink / raw
  To: gentoo-dev

On Thu, Feb 2, 2017 at 11:25 AM, Michael Orlitzky <mjo@gentoo.org> wrote:
>
> If (base == minimal), then all of the upstream defaults need to be added
> to package.use for the upstream-defaults profile. That's bad,

I'll go further and say that it is unacceptably bad.

> but if
> (base == upstream-defaults), then the important IUSE defaults need to be
> copy/pasted from our ebuilds into the minimal profile. The latter is
> more spiritually damning =)
>

So, I'll admit I've never been one that cared a great deal about
minimalism so I appreciate that I may not be the best one to judge
this, so let's go ahead and embrace your statement for the purpose of
debate.

Is there a better way we can have our cake and eat it too?  I'll admit
that a huge package.use on the minimal profile isn't a whole lot
better than a huge package.use on all the other profiles.

Do we need another form of syntax in individual ebuilds to try to
separate out the various cases you cite?  Does anybody care to
actually suggest one?

I still think that we shouldn't encourage users to lightly deviate
from all the upstream defaults.  There are of course legitimate
reasons for doing so, and you and I can probably appreciate when we
should do this, but for somebody starting out we're giving them a lot
of rope to hang themselves with.  It is like building a kernel
answering no to the largest number of questions possible while still
actually building something.  I'd actually be curious as to what that
kernel would even be capable of doing (there are a lot of fairly
essential things you can turn off in the kernel).

In the same way, we shouldn't be too quick to deviate from upstream
defaults ourselves (#4 in your example), beyond actual integration
work.

I'll admit the current state is a bit of a compromise, but I don't
think we should change it unless we're changing it to something
significantly better.  This is a pretty big-impact change.

-- 
Rich


^ permalink raw reply	[flat|nested] 85+ messages in thread

* Re: [gentoo-dev] Guidelines for IUSE defaults
  2017-02-02 18:01             ` Rich Freeman
@ 2017-02-02 20:35               ` james
  2017-02-02 21:05                 ` Rich Freeman
                                   ` (2 more replies)
  2017-02-03  0:01               ` Gordon Pettey
                                 ` (2 subsequent siblings)
  3 siblings, 3 replies; 85+ messages in thread
From: james @ 2017-02-02 20:35 UTC (permalink / raw
  To: gentoo-dev

On 02/02/2017 01:01 PM, Rich Freeman wrote:
> On Thu, Feb 2, 2017 at 11:25 AM, Michael Orlitzky <mjo@gentoo.org> wrote:
>>
>> If (base == minimal), then all of the upstream defaults need to be added
>> to package.use for the upstream-defaults profile. That's bad,
>
> I'll go further and say that it is unacceptably bad.
>
>> but if
>> (base == upstream-defaults), then the important IUSE defaults need to be
>> copy/pasted from our ebuilds into the minimal profile. The latter is
>> more spiritually damning =)
>>
>
> So, I'll admit I've never been one that cared a great deal about
> minimalism so I appreciate that I may not be the best one to judge
> this, so let's go ahead and embrace your statement for the purpose of
> debate.
>
> Is there a better way we can have our cake and eat it too?  I'll admit
> that a huge package.use on the minimal profile isn't a whole lot
> better than a huge package.use on all the other profiles.
>
> Do we need another form of syntax in individual ebuilds to try to
> separate out the various cases you cite?  Does anybody care to
> actually suggest one?

I think that unikernels are something everyone should be aware of
as they purport to be the latest trend in securing all sorts of systems.
(a brief read).

http://unikernel.org/


Perhaps we should not have a 'minimal profile', as it means so many 
different things to so many different people. We have not even surveyed
the user base...

So if we think of all the possible profiles and sub-profiles as being
organized in a tree structure, it is better to figure out logical 
organization of all profiles, imho.

So how about profiles that are either under the embedded or basic 
'moniker' in the profile tree.  So embedded is the least number of
packages possible,  regardless of upstream, where folks build up from 
there to what they want as a finished system. Embedded, clusters, HPC, 
and such are compatible enough for what I'm building to be under the 
same branch of the profile tree. If other folks want their cluster works 
under the basic  part of the profile tree that is concerned with 
upstream, then  they have their part of the profile tree located there.

And the 'basic' part of the tree is similar to what we now call 
'default' and the names build up in whatever schema those target builds
desire, like basic+headless, basic+kde, basic+?+whatever..... ?

And is there any reason, if necessary that other needs cannot be 
branched off, as necessary form the profile tree?  Perhaps the main root
is a state diagram of what is need and has links to  relevant documents.
That way the profile tree is a live system that can  be enhance or 
modified to serve all of Gentoo's diverse visions.


> I still think that we shouldn't encourage users to lightly deviate
> from all the upstream defaults.  There are of course legitimate
> reasons for doing so, and you and I can probably appreciate when we
> should do this, but for somebody starting out we're giving them a lot
> of rope to hang themselves with.

This is only the case because profiles are in general in a mess and 
there are little in the way of conventions. What is so sacrosanct about 
upstream for a truly embedded gentoo system or a gentoo based IoT 
device? How many of the gentoo-embedded devs even bother to read
gentoo-dev? Your vision seems to me to be tainted by the major distros 
and their visions, not be impolite, but they are way off course for 
secure systems, embedded systems, IoT, HPC and numerous other active 
areas of Linux, imho.


Think about it, if upstream is so brilliant, and has our needs 'at 
heart' then why have not the kernel-geniuses bothered to build a 
logical, coherent semantic for kernel configurations, management, 
security testing and such?  If fact, if I were to be critical of 
upstream, I'd say those and many other issues should have been addressed 
before the adventures of systemd were dictated upon the larger user 
base. Upstream is an 'ad-hoc' mess, in the old days we called such 
entities a clusterF*.


So those of us going back to minimal and basics and such venues, even
with clusters, could not care less about Mozilla, systemd and thousands
of other upstream folks  that have lost their pathway forward. (deepest 
apologies, but I have very strong feelings about "upstream*".


Many of the profiles in this and other recent threads, are just 'ad-hoc' 
naming structures and locations, and that historical flexibility extend 
to the devs is fantastic. This enhance/cleaning need of gentoo profiles 
needs to be well thought out and as flexible semantically as possible.


It is absolutely a superior approach to not care at all what upstream 
does, to provide a pathway for embedded gentoo. That is a fundamental 
characteristic of what an embedded system is. Thanke the code, purge
90+ percent of this, and then install it on a embedded system so
only what is needed is encluded. On a distro, you can pile on tons
of uncessary codes, for convenience and not care, but embedded,
it does matter. That is why so much of Iot is hacked and owned
by folks with nefarious intentions. Much of 'upstream' is growing
dumber by the day, and corporate manager and government interlopers
are just loving the cruft of 'upstream'.


Minimal is a close cousin to embedded, and now unikernels and aggressive 
HPC clusters are going that direction too in the name of performance, 
sane-management and reducing attack surfaces for the cloud or HPC 
cluster (not all, but many).


Surely a branch of the gentoo profiles tree, could rigorously be focused
on compatibility with upstream, but that inflexibility, if imposed
on everyone else, will only serve to further alienate gentoo-embedded 
and serve as a unnecessary wedge between some minimal, HPC and unikernel
types of gentoo builds.



> It is like building a kernel
> answering no to the largest number of questions possible while still
> actually building something.  I'd actually be curious as to what that
> kernel would even be capable of doing (there are a lot of fairly
> essential things you can turn off in the kernel).


This is a whole other area of valid concern. Their was a GSoC project
last summer to work on organizing gentooish kernel builds, but that is a 
very big topic. Perhaps the profiles will have to be proposed but not
formalized until folks go out and do some kernel builds and testing 
associated with a proposed profile organization?


> In the same way, we shouldn't be too quick to deviate from upstream
> defaults ourselves (#4 in your example), beyond actual integration
> work.

> I'll admit the current state is a bit of a compromise, but I don't
> think we should change it unless we're changing it to something
> significantly better.  This is a pretty big-impact change.


Just formalize some new parts of the profile tree to not be required to 
be upstream compliant. Isn't that part of being a 'meta-distribution'?

In my future (and the future of many others) there will be minimalistic
builds on clusters where any number to constructs including 
compatibility  which will all be solved, at the framework level, not the 
base distro level, to the extent possible. Folks are now running a 
myriad of windows OS versions on linux (&clusters), so I have just read 
about a few days ago. So I'm proposing and working on gentoo 
heterogeneous cluster where one can partition part to be for systemd 
stuffage, part to be HPC, part to be extraordinarily secure, part to be 
aligned with a particularly commercial linux distro, and many other 
differing needs based frameworks.


The minimal (lowest level) should be clear of all of those distro 
encumbrances. CoreOS is taking this approach, as their bare metal 
bootstrapping occurs completely and well before systemd or any other
PID1 schema is invoked or becomes a defacto requirement.  Gentoo is all 
about freedom, right?


hth,
James


^ permalink raw reply	[flat|nested] 85+ messages in thread

* Re: [gentoo-dev] Guidelines for IUSE defaults
  2017-02-02 20:35               ` james
@ 2017-02-02 21:05                 ` Rich Freeman
  2017-02-02 23:28                   ` james
  2017-02-02 21:40                 ` David Seifert
  2017-02-02 23:47                 ` Daniel Campbell
  2 siblings, 1 reply; 85+ messages in thread
From: Rich Freeman @ 2017-02-02 21:05 UTC (permalink / raw
  To: gentoo-dev

On Thu, Feb 2, 2017 at 3:35 PM, james <garftd@verizon.net> wrote:

>
> I think that unikernels are something everyone should be aware of
> as they purport to be the latest trend in securing all sorts of systems.
> (a brief read).
>

Not really for all sorts, more for servers.  Otherwise I get it, and
at this point now that I run almost everything in containers I tend to
be more inclined to run different distros in those containers.

> This is only the case because profiles are in general in a mess and there
> are little in the way of conventions. What is so sacrosanct about upstream
> for a truly embedded gentoo system or a gentoo based IoT device?

Nothing, in that space.

The problem is the new user experience.  When somebody is new to
Gentoo and not super-knowledgeable the first thing they're going to do
is set up a desktop.  Now, they might not call it a desktop.  They
might not even run X11 on it.  But, they're basically falling into
that desktop user experience where whatever they do install "just
works" and is feature-complete.

It is true that we also attract advanced users who are looking for
something different.  They have no issues getting any distro to dance
for them, and they're picking Gentoo because it is best suited for
their specific need.  These users are much more likely to be
interested in minimal configurations, embedded systems, the hardened
profiles, and so on.

However, the problem is that if we optimize mainly for the second
group we basically lose the first group entirely, and I suspect that
is overall going to be the bigger group.

If what you want is a "unikernel profile" for Gentoo then you're going
to be changing a LOT of assumptions.  Forget openrc vs systemd, there
is no reason to have any init implementation on the thing.  Forget
linux vs bsd, there is also no reason to have a kernel in a container.
We don't need any editor because you're probably going to do any
config file editing from outside of the container.  And that @system
set that has all that bootstrapping stuff is probably way overkill if
all you ultimately need is a single package to work (and maybe not all
of that package).  Heck, your overall install approach also should be
questioned.  Rather than build your unikernel from inside its own
container, you should be building from a more complete image and just
installing the minimum RDEPENDs in the production container (as with
catalyst or the chromiumos builds).  And you probably wouldn't be
upgrading such things in place either, you'd just be creating newer
instances and cutting over from the old.

I don't question that it would be great for Gentoo to support all of
this stuff.  I just think that we need to be careful not to destroy
the experience of somebody who just wants a "typical" install in order
to do it.  Somebody who doesn't want to take the time to tweak how
their java implementation works probably wants the default install to
be something that meets the Oracle standard.  Now, somebody who is
into tailoring can look at their application and tweak the living
daylights out of it, but that shouldn't be what you get when you run
"emerge icedtea" or whatever.

Sure, you could do all that with a profile, but the problem is:
1.  Maintainers aren't going to necessarily invest in that profile.
2.  New users won't necessarily use that new profile.

And when those things doesn't happen users look at Gentoo as the OS
that nothing works right on.

-- 
Rich


^ permalink raw reply	[flat|nested] 85+ messages in thread

* Re: [gentoo-dev] Guidelines for IUSE defaults
  2017-02-02 15:36   ` Michael Orlitzky
                       ` (2 preceding siblings ...)
  2017-02-02 15:52     ` James Le Cuirot
@ 2017-02-02 21:17     ` Dirkjan Ochtman
  3 siblings, 0 replies; 85+ messages in thread
From: Dirkjan Ochtman @ 2017-02-02 21:17 UTC (permalink / raw
  To: Gentoo Development

On Thu, Feb 2, 2017 at 4:36 PM, Michael Orlitzky <mjo@gentoo.org> wrote:
> I'm not saying that we should have a minimal experience out-of-the-box,
> only that the base profile should result in an effectively-minimal set
> of USE flags. Adding IUSE defaults is essentially adding defaults to the
> base profile. Why does dev-java/icedtea try to pull in GTK (and thus X)
> on a headless server? That stuff belongs in a desktop profile, not in
> the base one.
>
> I don't think minimal should be our default, but it should be
> *possible*. It practically isn't so long as people mix uses #1, #3, and
> #4. I guess I would also be happy if we outlawed use #1 so that USE="-*"
> would be supported. In any case, we should document how to use them.
> Having them mean four different things causes confusion.

Like others, I think that having IUSE defaults as reflecting upstream
makes much more sense, because it makes more sense to put upstream's
nuances in the ebuilds than in some of our profiles. I've run systems
with -* before, and found it to work okay. These days I have a
somewhat more minimal set of disabled USE flags in make.conf, which
seems to work fine for my somewhat-minimal headless server, too.

Anyway, I don't know how prevalent your #1 is, but making -* more
supported seems more attractive to me than the other options.

Cheers,

Dirkjan


^ permalink raw reply	[flat|nested] 85+ messages in thread

* Re: [gentoo-dev] Guidelines for IUSE defaults
  2017-02-02 20:35               ` james
  2017-02-02 21:05                 ` Rich Freeman
@ 2017-02-02 21:40                 ` David Seifert
  2017-02-02 23:35                   ` james
  2017-02-02 23:47                 ` Daniel Campbell
  2 siblings, 1 reply; 85+ messages in thread
From: David Seifert @ 2017-02-02 21:40 UTC (permalink / raw
  To: gentoo-dev

On Thu, 2017-02-02 at 15:35 -0500, james wrote:
> On 02/02/2017 01:01 PM, Rich Freeman wrote:
> > On Thu, Feb 2, 2017 at 11:25 AM, Michael Orlitzky <mjo@gentoo.org>
> > wrote:
> > > 
> > > If (base == minimal), then all of the upstream defaults need to
> > > be added
> > > to package.use for the upstream-defaults profile. That's bad,
> > 
> > I'll go further and say that it is unacceptably bad.
> > 
> > > but if
> > > (base == upstream-defaults), then the important IUSE defaults
> > > need to be
> > > copy/pasted from our ebuilds into the minimal profile. The latter
> > > is
> > > more spiritually damning =)
> > > 
> > 
> > So, I'll admit I've never been one that cared a great deal about
> > minimalism so I appreciate that I may not be the best one to judge
> > this, so let's go ahead and embrace your statement for the purpose
> > of
> > debate.
> > 
> > Is there a better way we can have our cake and eat it too?  I'll
> > admit
> > that a huge package.use on the minimal profile isn't a whole lot
> > better than a huge package.use on all the other profiles.
> > 
> > Do we need another form of syntax in individual ebuilds to try to
> > separate out the various cases you cite?  Does anybody care to
> > actually suggest one?
> 
> I think that unikernels are something everyone should be aware of
> as they purport to be the latest trend in securing all sorts of
> systems.
> (a brief read).
> 
> http://unikernel.org/
> 
> 
> Perhaps we should not have a 'minimal profile', as it means so many 
> different things to so many different people. We have not even
> surveyed
> the user base...
> 
> So if we think of all the possible profiles and sub-profiles as being
> organized in a tree structure, it is better to figure out logical 
> organization of all profiles, imho.
> 
> So how about profiles that are either under the embedded or basic 
> 'moniker' in the profile tree.  So embedded is the least number of
> packages possible,  regardless of upstream, where folks build up
> from 
> there to what they want as a finished system. Embedded, clusters,
> HPC, 
> and such are compatible enough for what I'm building to be under the 
> same branch of the profile tree. If other folks want their cluster
> works 
> under the basic  part of the profile tree that is concerned with 
> upstream, then  they have their part of the profile tree located
> there.
> 
> And the 'basic' part of the tree is similar to what we now call 
> 'default' and the names build up in whatever schema those target
> builds
> desire, like basic+headless, basic+kde, basic+?+whatever..... ?
> 
> And is there any reason, if necessary that other needs cannot be 
> branched off, as necessary form the profile tree?  Perhaps the main
> root
> is a state diagram of what is need and has links to  relevant
> documents.
> That way the profile tree is a live system that can  be enhance or 
> modified to serve all of Gentoo's diverse visions.
> 
> 
> > I still think that we shouldn't encourage users to lightly deviate
> > from all the upstream defaults.  There are of course legitimate
> > reasons for doing so, and you and I can probably appreciate when we
> > should do this, but for somebody starting out we're giving them a
> > lot
> > of rope to hang themselves with.
> 
> This is only the case because profiles are in general in a mess and 
> there are little in the way of conventions. What is so sacrosanct
> about 
> upstream for a truly embedded gentoo system or a gentoo based IoT 
> device? How many of the gentoo-embedded devs even bother to read
> gentoo-dev? Your vision seems to me to be tainted by the major
> distros 
> and their visions, not be impolite, but they are way off course for h
> ttp://www.easyjet.com/en/
> secure systems, embedded systems, IoT, HPC and numerous other active 
> areas of Linux, imho.
> 
> 
> Think about it, if upstream is so brilliant, and has our needs 'at 
> heart' then why have not the kernel-geniuses bothered to build a 
> logical, coherent semantic for kernel configurations, management, 
> security testing and such?  If fact, if I were to be critical of 
> upstream, I'd say those and many other issues should have been
> addressed 
> before the adventures of systemd were dictated upon the larger user 
> base. Upstream is an 'ad-hoc' mess, in the old days we called such 
> entities a clusterF*.
> 
> 
> So those of us going back to minimal and basics and such venues, even
> with clusters, could not care less about Mozilla, systemd and
> thousands
> of other upstream folks  that have lost their pathway forward.
> (deepest 
> apologies, but I have very strong feelings about "upstream*".
> 
> 
> Many of the profiles in this and other recent threads, are just 'ad-
> hoc' 
> naming structures and locations, and that historical flexibility
> extend 
> to the devs is fantastic. This enhance/cleaning need of gentoo
> profiles 
> needs to be well thought out and as flexible semantically as
> possible.
> 
> 
> It is absolutely a superior approach to not care at all what
> upstream 
> does, to provide a pathway for embedded gentoo. That is a
> fundamental 
> characteristic of what an embedded system is. Thanke the code, purge
> 90+ percent of this, and then install it on a embedded system so
> only what is needed is encluded. On a distro, you can pile on tons
> of uncessary codes, for convenience and not care, but embedded,
> it does matter. That is why so much of Iot is hacked and owned
> by folks with nefarious intentions. Much of 'upstream' is growing
> dumber by the day, and corporate manager and government interlopers
> are just loving the cruft of 'upstream'.
> 
> 
> Minimal is a close cousin to embedded, and now unikernels and
> aggressive 
> HPC clusters are going that direction too in the name of
> performance, 
> sane-management and reducing attack surfaces for the cloud or HPC 
> cluster (not all, but many).
> 
> 
> Surely a branch of the gentoo profiles tree, could rigorously be
> focused
> on compatibility with upstream, but that inflexibility, if imposed
> on everyone else, will only serve to further alienate gentoo-
> embedded 
> and serve as a unnecessary wedge between some minimal, HPC and
> unikernel
> types of gentoo builds.
> 
> 
> 
> > It is like building a kernel
> > answering no to the largest number of questions possible while
> > still
> > actually building something.  I'd actually be curious as to what
> > that
> > kernel would even be capable of doing (there are a lot of fairly
> > essential things you can turn off in the kernel).
> 
> 
> This is a whole other area of valid concern. Their was a GSoC project
> last summer to work on organizing gentooish kernel builds, but that
> is a 
> very big topic. Perhaps the profiles will have to be proposed but not
> formalized until folks go out and do some kernel builds and testing 
> associated with a proposed profile organization?
> 
> 
> > In the same way, we shouldn't be too quick to deviate from upstream
> > defaults ourselves (#4 in your example), beyond actual integration
> > work.
> > I'll admit the current state is a bit of a compromise, but I don't
> > think we should change it unless we're changing it to something
> > significantly better.  This is a pretty big-impact change.
> 
> 
> Just formalize some new parts of the profile tree to not be required
> to 
> be upstream compliant. Isn't that part of being a 'meta-
> distribution'?
> 
> In my future (and the future of many others) there will be
> minimalistic
> builds on clusters where any number to constructs including 
> compatibility  which will all be solved, at the framework level, not
> the 
> base distro level, to the extent possible. Folks are now running a 
> myriad of windows OS versions on linux (&clusters), so I have just
> read 
> about a few days ago. So I'm proposing and working on gentoo 
> heterogeneous cluster where one can partition part to be for systemd 
> stuffage, part to be HPC, part to be extraordinarily secure, part to
> be 
> aligned with a particularly commercial linux distro, and many other 
> differing needs based frameworks.
> 
> 
> The minimal (lowest level) should be clear of all of those distro 
> encumbrances. CoreOS is taking this approach, as their bare metal 
> bootstrapping occurs completely and well before systemd or any other
> PID1 schema is invoked or becomes a defacto requirement.  Gentoo is
> all 
> about freedom, right?
> 
> 
> hth,
> James
> 

Dear James,
can you please stop totally drifting off topic and rambling about stuff
that is not relevant for the discussion at hand? We started at IUSE
defaults and you end with unikernels and HPC. Please stop the rambling.

hth,
David


^ permalink raw reply	[flat|nested] 85+ messages in thread

* Re: [gentoo-dev] icedtea requiring X libs to build was -> Guidelines for IUSE defaults
  2017-02-02 17:18                   ` Michael Orlitzky
@ 2017-02-02 23:07                     ` William L. Thomson Jr.
  0 siblings, 0 replies; 85+ messages in thread
From: William L. Thomson Jr. @ 2017-02-02 23:07 UTC (permalink / raw
  To: gentoo-dev

[-- Attachment #1: Type: text/plain, Size: 1856 bytes --]

On Thursday, February 2, 2017 12:18:43 PM EST Michael Orlitzky wrote:
> On 02/02/2017 12:06 PM, William L. Thomson Jr. wrote:
> >> But more importantly, icedtea-bin was just one example that I had in
> >> mind. There are hundreds of others in the tree.
> > 
> > Sure, but some packages themselves go against a minimalist approach due to
> > their own build requirements. You have to fight the package to make them
> > minimal and I am not sure the fight is worth it at times.
> 
> We agree on that. If making GTK optional for your package is too much
> trouble, then don't make it optional.

Yes but that is part of the idea. Or I should say benefit of building Java from 
source. You could choose to make stuff optional that is not optional normally. 
But it is not trivial, and likely run into issues.

IMHO likely most if not all of the USE flags for any Java JDK/JRE should not 
exist. They are just reducing deps, with the idea that your not using code 
that needs that stuff. If you do, it will cause issues because you do not have 
those needed deps installed.

Really no way to please everyone. Either someone will want USE flags to reduce 
deps. Which could cause issues in the package. Which in turn have the USE flags 
enabled by default. Which upset others. There is no win for anyone.

> The problem is only when the
> maintainer does make it optional, and then defaults it on in every
> profile using IUSE defaults. Most "give the user a typical system" USE
> defaults belong in a desktop or server profile, not in the base.

Yes that is another matter. However somethings like Java cross over from 
server to desktop. It really just comes from trying to make it to modular. If 
there was no GTK/X/whatever USE flag, then it would not be an issue. But would 
still be bringing in the unwanted stuff into a server.

-- 
William L. Thomson Jr.

[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 195 bytes --]

^ permalink raw reply	[flat|nested] 85+ messages in thread

* Re: [gentoo-dev] Guidelines for IUSE defaults
  2017-02-02 21:05                 ` Rich Freeman
@ 2017-02-02 23:28                   ` james
  2017-02-03  0:12                     ` Rich Freeman
  0 siblings, 1 reply; 85+ messages in thread
From: james @ 2017-02-02 23:28 UTC (permalink / raw
  To: gentoo-dev

On 02/02/2017 04:05 PM, Rich Freeman wrote:
> On Thu, Feb 2, 2017 at 3:35 PM, james <garftd@verizon.net> wrote:
>
>>
>> I think that unikernels are something everyone should be aware of
>> as they purport to be the latest trend in securing all sorts of systems.
>> (a brief read).
>>
>
> Not really for all sorts, more for servers.  Otherwise I get it, and
> at this point now that I run almost everything in containers I tend to
> be more inclined to run different distros in those containers.
>
>> This is only the case because profiles are in general in a mess and there
>> are little in the way of conventions. What is so sacrosanct about upstream
>> for a truly embedded gentoo system or a gentoo based IoT device?
>
> Nothing, in that space.
>
> The problem is the new user experience.  When somebody is new to
> Gentoo and not super-knowledgeable the first thing they're going to do
> is set up a desktop.  Now, they might not call it a desktop.  They
> might not even run X11 on it.  But, they're basically falling into
> that desktop user experience where whatever they do install "just
> works" and is feature-complete.

Wow, I'm shocked. Perhaps you have forgotten that is was "I" that 
bemoaned and protested ad nauseam for a simple, basic desktop
for the noob moving to or just testing gentoo? Needless to say the
majority of long term folks on gentoo-user, prefer to run those noobs 
off. (Remember I was on gentoo-user for 12 years, by the hour.)
Now our gentoo distro is catering and concerned about these folks?
(excuse me but I haft to roll around on the floor a bit to get some
belly laughter out....) ok, I'm back now. Nobody give a damn about the
gentoo noob; that's why it is gentoo policy not to have an installer.



> It is true that we also attract advanced users who are looking for
> something different.  They have no issues getting any distro to dance
> for them, and they're picking Gentoo because it is best suited for
> their specific need.  These users are much more likely to be
> interested in minimal configurations, embedded systems, the hardened
> profiles, and so on.

This pool is growing and many are contributing.... hardened on top
of minimal.... very very cool.

> However, the problem is that if we optimize mainly for the second
> group we basically lose the first group entirely, and I suspect that
> is overall going to be the bigger group.

Nope, sorry, I have to disagree. Please explain why we cannot, in the 
profiles, support both groups. The (minimal) embedded profile pathway 
need not be mentioned in the handbook. But, perhaps in the 
gentoo-embedded-handbook it could be introduced ? If the embedded devs are
offended, then it could be unser it's own profile:: spartan, monopod,
minimized or any self identifying moniker.


> If what you want is a "unikernel profile" for Gentoo then you're going
> to be changing a LOT of assumptions.

Oops, hit the brakes! Unikernels the way that unikerel.org describes
them is more of a enhanced state machine boot_code or an executive
or a linux kernel plus one lib. Sorry but that's not the only vision
and mine is to build highly targeted 'minimal' gentoo systems that can 
dynamically shed and load new frameworks (groups of packages and codes 
and such) on top of the 'default set' or embedded set of packages. So it 
can become a full blown mail server or a singular monotonic device, just 
sniffing ethernet, without a reboot. I'm betting the farm that my vision 
of minimal/embedded gentoo will be far more successful than those folks 
pushing proprietary Unikernel products. Still the generic moniker 
'unikernel' is the closest commonly used moniker to where I'm driving 
too, I so 'lifted' it from those folks. Goals are similar but mine is a 
minimized gentoo, at it's core and dynamically flexible without reboot.



> Forget openrc vs systemd, there
> is no reason to have any init implementation on the thing.  Forget
> linux vs bsd, there is also no reason to have a kernel in a container.
> We don't need any editor because you're probably going to do any
> config file editing from outside of the container.  And that @system
> set that has all that bootstrapping stuff is probably way overkill if
> all you ultimately need is a single package to work (and maybe not all
> of that package).  Heck, your overall install approach also should be
> questioned.  Rather than build your unikernel from inside its own
> container, you should be building from a more complete image and just
> installing the minimum RDEPENDs in the production container (as with
> catalyst or the chromiumos builds).  And you probably wouldn't be
> upgrading such things in place either, you'd just be creating newer
> instances and cutting over from the old.

I agree with you on this, absolutely. But you are far off from my
branch of the profile tree and my pathway forward, so it's accurate
but completely uncharacteristic to what I'm developing.


> I don't question that it would be great for Gentoo to support all of
> this stuff.  I just think that we need to be careful not to destroy
> the experience of somebody who just wants a "typical" install in order
> to do it.  Somebody who doesn't want to take the time to tweak how
> their java implementation works probably wants the default install to
> be something that meets the Oracle standard.  Now, somebody who is
> into tailoring can look at their application and tweak the living
> daylights out of it, but that shouldn't be what you get when you run
> "emerge icedtea" or whatever.


I just do not see your 'either or scenario' as the only possibility. For 
example, in a recent gentoo-dev thread,  those profile owners (devs) 
were asked to step forward and state the  viability going forward of a 
profile review thread. If one of those devs wants one of those itemized 
profiles to continue to exist, is it going to be forcibly deleted?  (no)

So all I have to do is convince  (beg?) one dev to have a place in the 
profile tree that is not subservient to upstream dictates? Perhaps
another way forward for my work? (Glep-70?)


> Sure, you could do all that with a profile, but the problem is:
> 1.  Maintainers aren't going to necessarily invest in that profile.

Can I proxy-maintain a profile for minimized gentoo clusters?
Can I share a profile with another compatible (need) profile ?


> 2.  New users won't necessarily use that new profile.

That would be excellent. That's why there are many choices for profiles, 
right?


> And when those things doesn't happen users look at Gentoo as the OS
> that nothing works right on.

Non-sequitur....
user's will be on a handbook delineated profile choice; capable users
will be able to navigate handbook choices and other available profiles,
or seek (neddy?) guidance. The profile I'm talking about could
be logically under the old branch of 'experimental' if that survives 
too.  But would be best as close to the root of the profile tree, as 
possible.  The least amount of packages installed, is best, and located 
in a different branch than the default or whatever the new name is where 
a plethora of upstream issues exit. None of this would be a burden
to ebuilds, if they do not work, so be it, I can and will fix what I 
need from upstream. Every week, that list grows shorter and shorter, 
particularly for the minimal builds.


Hopefully I have justified and succinctly stated my vision, is 
accommodation not possible? All I really need is a minimized (a least or 
very low set of packages) profile that is not so concerned with most of 
the upstream projects and the noise found therein.


hth,
James



^ permalink raw reply	[flat|nested] 85+ messages in thread

* Re: [gentoo-dev] Guidelines for IUSE defaults
  2017-02-02 21:40                 ` David Seifert
@ 2017-02-02 23:35                   ` james
  2017-02-02 23:41                     ` Ian Stakenvicius
  0 siblings, 1 reply; 85+ messages in thread
From: james @ 2017-02-02 23:35 UTC (permalink / raw
  To: gentoo-dev

On 02/02/2017 04:40 PM, David Seifert wrote:
> On Thu, 2017-02-02 at 15:35 -0500, james wrote:
>> On 02/02/2017 01:01 PM, Rich Freeman wrote:
>>> On Thu, Feb 2, 2017 at 11:25 AM, Michael Orlitzky <mjo@gentoo.org>
>>> wrote:
>>>>
>>>> If (base == minimal), then all of the upstream defaults need to
>>>> be added
>>>> to package.use for the upstream-defaults profile. That's bad,
>>>
>>> I'll go further and say that it is unacceptably bad.
>>>
>>>> but if
>>>> (base == upstream-defaults), then the important IUSE defaults
>>>> need to be
>>>> copy/pasted from our ebuilds into the minimal profile. The latter
>>>> is
>>>> more spiritually damning =)
>>>>
>>>
>>> So, I'll admit I've never been one that cared a great deal about
>>> minimalism so I appreciate that I may not be the best one to judge
>>> this, so let's go ahead and embrace your statement for the purpose
>>> of
>>> debate.
>>>
>>> Is there a better way we can have our cake and eat it too?  I'll
>>> admit
>>> that a huge package.use on the minimal profile isn't a whole lot
>>> better than a huge package.use on all the other profiles.
>>>
>>> Do we need another form of syntax in individual ebuilds to try to
>>> separate out the various cases you cite?  Does anybody care to
>>> actually suggest one?
>>
>> I think that unikernels are something everyone should be aware of
>> as they purport to be the latest trend in securing all sorts of
>> systems.
>> (a brief read).
>>
>> http://unikernel.org/
>>
>>
>> Perhaps we should not have a 'minimal profile', as it means so many
>> different things to so many different people. We have not even
>> surveyed
>> the user base...
>>
>> So if we think of all the possible profiles and sub-profiles as being
>> organized in a tree structure, it is better to figure out logical
>> organization of all profiles, imho.
>>
>> So how about profiles that are either under the embedded or basic
>> 'moniker' in the profile tree.  So embedded is the least number of
>> packages possible,  regardless of upstream, where folks build up
>> from
>> there to what they want as a finished system. Embedded, clusters,
>> HPC,
>> and such are compatible enough for what I'm building to be under the
>> same branch of the profile tree. If other folks want their cluster
>> works
>> under the basic  part of the profile tree that is concerned with
>> upstream, then  they have their part of the profile tree located
>> there.
>>
>> And the 'basic' part of the tree is similar to what we now call
>> 'default' and the names build up in whatever schema those target
>> builds
>> desire, like basic+headless, basic+kde, basic+?+whatever..... ?
>>
>> And is there any reason, if necessary that other needs cannot be
>> branched off, as necessary form the profile tree?  Perhaps the main
>> root
>> is a state diagram of what is need and has links to  relevant
>> documents.
>> That way the profile tree is a live system that can  be enhance or
>> modified to serve all of Gentoo's diverse visions.
>>
>>
>>> I still think that we shouldn't encourage users to lightly deviate
>>> from all the upstream defaults.  There are of course legitimate
>>> reasons for doing so, and you and I can probably appreciate when we
>>> should do this, but for somebody starting out we're giving them a
>>> lot
>>> of rope to hang themselves with.
>>
>> This is only the case because profiles are in general in a mess and
>> there are little in the way of conventions. What is so sacrosanct
>> about
>> upstream for a truly embedded gentoo system or a gentoo based IoT
>> device? How many of the gentoo-embedded devs even bother to read
>> gentoo-dev? Your vision seems to me to be tainted by the major
>> distros
>> and their visions, not be impolite, but they are way off course for h
>> ttp://www.easyjet.com/en/
>> secure systems, embedded systems, IoT, HPC and numerous other active
>> areas of Linux, imho.
>>
>>
>> Think about it, if upstream is so brilliant, and has our needs 'at
>> heart' then why have not the kernel-geniuses bothered to build a
>> logical, coherent semantic for kernel configurations, management,
>> security testing and such?  If fact, if I were to be critical of
>> upstream, I'd say those and many other issues should have been
>> addressed
>> before the adventures of systemd were dictated upon the larger user
>> base. Upstream is an 'ad-hoc' mess, in the old days we called such
>> entities a clusterF*.
>>
>>
>> So those of us going back to minimal and basics and such venues, even
>> with clusters, could not care less about Mozilla, systemd and
>> thousands
>> of other upstream folks  that have lost their pathway forward.
>> (deepest
>> apologies, but I have very strong feelings about "upstream*".
>>
>>
>> Many of the profiles in this and other recent threads, are just 'ad-
>> hoc'
>> naming structures and locations, and that historical flexibility
>> extend
>> to the devs is fantastic. This enhance/cleaning need of gentoo
>> profiles
>> needs to be well thought out and as flexible semantically as
>> possible.
>>
>>
>> It is absolutely a superior approach to not care at all what
>> upstream
>> does, to provide a pathway for embedded gentoo. That is a
>> fundamental
>> characteristic of what an embedded system is. Thanke the code, purge
>> 90+ percent of this, and then install it on a embedded system so
>> only what is needed is encluded. On a distro, you can pile on tons
>> of uncessary codes, for convenience and not care, but embedded,
>> it does matter. That is why so much of Iot is hacked and owned
>> by folks with nefarious intentions. Much of 'upstream' is growing
>> dumber by the day, and corporate manager and government interlopers
>> are just loving the cruft of 'upstream'.
>>
>>
>> Minimal is a close cousin to embedded, and now unikernels and
>> aggressive
>> HPC clusters are going that direction too in the name of
>> performance,
>> sane-management and reducing attack surfaces for the cloud or HPC
>> cluster (not all, but many).
>>
>>
>> Surely a branch of the gentoo profiles tree, could rigorously be
>> focused
>> on compatibility with upstream, but that inflexibility, if imposed
>> on everyone else, will only serve to further alienate gentoo-
>> embedded
>> and serve as a unnecessary wedge between some minimal, HPC and
>> unikernel
>> types of gentoo builds.
>>
>>
>>
>>> It is like building a kernel
>>> answering no to the largest number of questions possible while
>>> still
>>> actually building something.  I'd actually be curious as to what
>>> that
>>> kernel would even be capable of doing (there are a lot of fairly
>>> essential things you can turn off in the kernel).
>>
>>
>> This is a whole other area of valid concern. Their was a GSoC project
>> last summer to work on organizing gentooish kernel builds, but that
>> is a
>> very big topic. Perhaps the profiles will have to be proposed but not
>> formalized until folks go out and do some kernel builds and testing
>> associated with a proposed profile organization?
>>
>>
>>> In the same way, we shouldn't be too quick to deviate from upstream
>>> defaults ourselves (#4 in your example), beyond actual integration
>>> work.
>>> I'll admit the current state is a bit of a compromise, but I don't
>>> think we should change it unless we're changing it to something
>>> significantly better.  This is a pretty big-impact change.
>>
>>
>> Just formalize some new parts of the profile tree to not be required
>> to
>> be upstream compliant. Isn't that part of being a 'meta-
>> distribution'?
>>
>> In my future (and the future of many others) there will be
>> minimalistic
>> builds on clusters where any number to constructs including
>> compatibility  which will all be solved, at the framework level, not
>> the
>> base distro level, to the extent possible. Folks are now running a
>> myriad of windows OS versions on linux (&clusters), so I have just
>> read
>> about a few days ago. So I'm proposing and working on gentoo
>> heterogeneous cluster where one can partition part to be for systemd
>> stuffage, part to be HPC, part to be extraordinarily secure, part to
>> be
>> aligned with a particularly commercial linux distro, and many other
>> differing needs based frameworks.
>>
>>
>> The minimal (lowest level) should be clear of all of those distro
>> encumbrances. CoreOS is taking this approach, as their bare metal
>> bootstrapping occurs completely and well before systemd or any other
>> PID1 schema is invoked or becomes a defacto requirement.  Gentoo is
>> all
>> about freedom, right?
>>
>>
>> hth,
>> James
>>
>
> Dear James,
> can you please stop totally drifting off topic and rambling about stuff
> that is not relevant for the discussion at hand? We started at IUSE
> defaults and you end with unikernels and HPC. Please stop the rambling.
>
> hth,
> David
>
>
>

Hello David.

The third post integrated 'profiles' into the discussion,included here
since you must have missed that::

"
I'm not saying that we should have a minimal experience out-of-the-box,
only that the base profile should result in an effectively-minimal set
of USE flags. Adding IUSE defaults is essentially adding defaults to the
base profile. Why does dev-java/icedtea try to pull in GTK (and thus X)
on a headless server? That stuff belongs in a desktop profile, not in
the base one."
  co

Many other comments followed up and further discussed profiles. Only 
when I threw in my comments about the effects on profiles 'doth thy 
protest'?


Please give me a break, just ignore what you need to.


hth,
James





^ permalink raw reply	[flat|nested] 85+ messages in thread

* Re: [gentoo-dev] Guidelines for IUSE defaults
  2017-02-02 23:35                   ` james
@ 2017-02-02 23:41                     ` Ian Stakenvicius
  2017-02-03  1:21                       ` Michael Orlitzky
  0 siblings, 1 reply; 85+ messages in thread
From: Ian Stakenvicius @ 2017-02-02 23:41 UTC (permalink / raw
  To: gentoo-dev


[-- Attachment #1.1: Type: text/plain, Size: 998 bytes --]

Responding here instead of the first time it was posted, just 'cause.

On 02/02/17 06:35 PM, james wrote:
> "
> I'm not saying that we should have a minimal experience out-of-the-box,
> only that the base profile should result in an effectively-minimal set
> of USE flags. Adding IUSE defaults is essentially adding defaults to the
> base profile."


Yes.  More specifically, it's adding these defaults without setting
the flags globally, thereby not introducing system-wide defaults
across all packages but only those that make sense on a per-package
basis for that package to operate properly.

IMO this is the effectively minimal-set of use flags we should have.
All of these flags can be easily overridden for a more minimalist, and
IMO they should definitely attempt to avoid any REQUIRED_USE like
conflicts (that is, two packages collide because their IUSE-defaults
make dependencies conflict).  But no less than that should be what the
base package provides, IMO.




[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 195 bytes --]

^ permalink raw reply	[flat|nested] 85+ messages in thread

* Re: [gentoo-dev] Guidelines for IUSE defaults
  2017-02-02 20:35               ` james
  2017-02-02 21:05                 ` Rich Freeman
  2017-02-02 21:40                 ` David Seifert
@ 2017-02-02 23:47                 ` Daniel Campbell
  2 siblings, 0 replies; 85+ messages in thread
From: Daniel Campbell @ 2017-02-02 23:47 UTC (permalink / raw
  To: gentoo-dev


[-- Attachment #1.1: Type: text/plain, Size: 12857 bytes --]

On 02/02/2017 12:35 PM, james wrote:
> On 02/02/2017 01:01 PM, Rich Freeman wrote:
>> On Thu, Feb 2, 2017 at 11:25 AM, Michael Orlitzky <mjo@gentoo.org> wrote:
>>>
>>> If (base == minimal), then all of the upstream defaults need to be added
>>> to package.use for the upstream-defaults profile. That's bad,
>>
>> I'll go further and say that it is unacceptably bad.
>>
>>> but if
>>> (base == upstream-defaults), then the important IUSE defaults need to be
>>> copy/pasted from our ebuilds into the minimal profile. The latter is
>>> more spiritually damning =)
>>>
>>
>> So, I'll admit I've never been one that cared a great deal about
>> minimalism so I appreciate that I may not be the best one to judge
>> this, so let's go ahead and embrace your statement for the purpose of
>> debate.
>>
>> Is there a better way we can have our cake and eat it too?  I'll admit
>> that a huge package.use on the minimal profile isn't a whole lot
>> better than a huge package.use on all the other profiles.
>>
>> Do we need another form of syntax in individual ebuilds to try to
>> separate out the various cases you cite?  Does anybody care to
>> actually suggest one?
> 
> I think that unikernels are something everyone should be aware of
> as they purport to be the latest trend in securing all sorts of systems.
> (a brief read).
> 
> http://unikernel.org/
> 
> 
> Perhaps we should not have a 'minimal profile', as it means so many
> different things to so many different people. We have not even surveyed
> the user base...
> 
> So if we think of all the possible profiles and sub-profiles as being
> organized in a tree structure, it is better to figure out logical
> organization of all profiles, imho.
> 
> So how about profiles that are either under the embedded or basic
> 'moniker' in the profile tree.  So embedded is the least number of
> packages possible,  regardless of upstream, where folks build up from
> there to what they want as a finished system. Embedded, clusters, HPC,
> and such are compatible enough for what I'm building to be under the
> same branch of the profile tree. If other folks want their cluster works
> under the basic  part of the profile tree that is concerned with
> upstream, then  they have their part of the profile tree located there.
> 
> And the 'basic' part of the tree is similar to what we now call
> 'default' and the names build up in whatever schema those target builds
> desire, like basic+headless, basic+kde, basic+?+whatever..... ?
> 
> And is there any reason, if necessary that other needs cannot be
> branched off, as necessary form the profile tree?  Perhaps the main root
> is a state diagram of what is need and has links to  relevant documents.
> That way the profile tree is a live system that can  be enhance or
> modified to serve all of Gentoo's diverse visions.

That's an awful lot of change for only slight benefit. The mixin idea
that mgorny's been proposing may become a great way for people to state
their needs explicitly in something that profiles are able to handle,
once that work is finished. I believe Funtoo uses this extensively, and
they might be worth contacting to see how we can best use them for our
needs as well, assuming the design is the same.

> 
> 
>> I still think that we shouldn't encourage users to lightly deviate
>> from all the upstream defaults.  There are of course legitimate
>> reasons for doing so, and you and I can probably appreciate when we
>> should do this, but for somebody starting out we're giving them a lot
>> of rope to hang themselves with.
> 
> This is only the case because profiles are in general in a mess and
> there are little in the way of conventions. What is so sacrosanct about
> upstream for a truly embedded gentoo system or a gentoo based IoT
> device? How many of the gentoo-embedded devs even bother to read
> gentoo-dev? Your vision seems to me to be tainted by the major distros
> and their visions, not be impolite, but they are way off course for
> secure systems, embedded systems, IoT, HPC and numerous other active
> areas of Linux, imho.
> 
> 
> Think about it, if upstream is so brilliant, and has our needs 'at
> heart' then why have not the kernel-geniuses bothered to build a
> logical, coherent semantic for kernel configurations, management,
> security testing and such?  If fact, if I were to be critical of
> upstream, I'd say those and many other issues should have been addressed
> before the adventures of systemd were dictated upon the larger user
> base. Upstream is an 'ad-hoc' mess, in the old days we called such
> entities a clusterF*.

Profiles may be a bit of a mess. I'm not qualified to determine that
since I don't touch profiles, but the brief browsing I've done indicates
that *some* care was put into it, or there wouldn't be such a large
profile tree.

The thing about Gentoo is that no single use case rules all, but as a
distribution we kinda owe it to the greater user audience to adopt
upstream defaults. The entire point of USE flags is so users can deviate
from that, if they need or want to. Gentoo needs to be usable out of the
box; it can't be if we're dismantling the work we've put into figuring
out sane USE flags across the tree.

I'm not saying profiles are perfect, just that they make a decent
blueprint. With mixins likely coming to the tree, I'm excited to see
what's possible with them.
> 
> 
> So those of us going back to minimal and basics and such venues, even
> with clusters, could not care less about Mozilla, systemd and thousands
> of other upstream folks  that have lost their pathway forward. (deepest
> apologies, but I have very strong feelings about "upstream*".

I do too, which is why I deal with it with my USE flags. It is, however,
upstream's software, and most of the time they're the most qualified to
determine what the default should be. Defaults aren't set in stone in
Gentoo; that's part of its beauty.

> 
> 
> Many of the profiles in this and other recent threads, are just 'ad-hoc'
> naming structures and locations, and that historical flexibility extend
> to the devs is fantastic. This enhance/cleaning need of gentoo profiles
> needs to be well thought out and as flexible semantically as possible.

Agreed.

> 
> 
> It is absolutely a superior approach to not care at all what upstream
> does, to provide a pathway for embedded gentoo. That is a fundamental
> characteristic of what an embedded system is. Thanke the code, purge
> 90+ percent of this, and then install it on a embedded system so
> only what is needed is encluded. On a distro, you can pile on tons
> of uncessary codes, for convenience and not care, but embedded,
> it does matter. That is why so much of Iot is hacked and owned
> by folks with nefarious intentions. Much of 'upstream' is growing
> dumber by the day, and corporate manager and government interlopers
> are just loving the cruft of 'upstream'.

I think that largely depends on your purpose for a given system. IoT
devices get cracked and abused mostly due to misconfiguration and a
failure to update when CVEs and whatnot are released. Being completely
Spartan may help against that, but as we all know... old code tends to
rot if not taken care of with at least backported patches.

Upstream is important because they supply 99% of the software we use. We
are just the distributors (hence "distribution"). We ideally shouldn't
have too strong of an opinion as maintainers; expose enough USE flags to
make a given package configurable, and apply '+' to upstream's default
stuff. I'd be surprised if a considerable number of packages on Gentoo
*weren't* that way.

Again, package.use (and maybe mixins) are the way to fix this.
> 
> 
> Minimal is a close cousin to embedded, and now unikernels and aggressive
> HPC clusters are going that direction too in the name of performance,
> sane-management and reducing attack surfaces for the cloud or HPC
> cluster (not all, but many).
> 
> 
> Surely a branch of the gentoo profiles tree, could rigorously be focused
> on compatibility with upstream, but that inflexibility, if imposed
> on everyone else, will only serve to further alienate gentoo-embedded
> and serve as a unnecessary wedge between some minimal, HPC and unikernel
> types of gentoo builds.
> 

Is there not an embedded profile? If that's where the beef is, perhaps
you should be talking to the embedded team rather than the greater
Gentoo dev community. They're likely better versed, and they *should* be
paying attention to gentoo-dev, as is expected from us. None of us works
in a vacuum, and we should be aware of what's happening with the whole
distribution, if only to see that there's activity somewhere.

A default Gentoo installation is not inflexible. It's merely a default
that can later be changed; even before your first call to 'emerge'.
> 
> 
>> It is like building a kernel
>> answering no to the largest number of questions possible while still
>> actually building something.  I'd actually be curious as to what that
>> kernel would even be capable of doing (there are a lot of fairly
>> essential things you can turn off in the kernel).
> 
> 
> This is a whole other area of valid concern. Their was a GSoC project
> last summer to work on organizing gentooish kernel builds, but that is a
> very big topic. Perhaps the profiles will have to be proposed but not
> formalized until folks go out and do some kernel builds and testing
> associated with a proposed profile organization?

afaik building the kernel is completely outside of Portage's reach. It
merely installs the source files needed to build it. Everything else is
up to you and/or genkernel.

A special kernel fork designed for embedded sounds good, though. I'm
sure we've got something like that in the tree (or an overlay) somewhere.
> 
> 
>> In the same way, we shouldn't be too quick to deviate from upstream
>> defaults ourselves (#4 in your example), beyond actual integration
>> work.
> 
>> I'll admit the current state is a bit of a compromise, but I don't
>> think we should change it unless we're changing it to something
>> significantly better.  This is a pretty big-impact change.
> 
> 
> Just formalize some new parts of the profile tree to not be required to
> be upstream compliant. Isn't that part of being a 'meta-distribution'?

Don't we already do that? KDE, GNOME, and XFCE aren't "upstream"
compliant because there *isn't* a single, default upstream DE, so we
have profiles for that. If you or others would like to create or improve
existing profiles, then that's awesome and you should try to put
together some patches or a pull request so we can take a look.

> 
> In my future (and the future of many others) there will be minimalistic
> builds on clusters where any number to constructs including
> compatibility  which will all be solved, at the framework level, not the
> base distro level, to the extent possible. Folks are now running a
> myriad of windows OS versions on linux (&clusters), so I have just read
> about a few days ago. So I'm proposing and working on gentoo
> heterogeneous cluster where one can partition part to be for systemd
> stuffage, part to be HPC, part to be extraordinarily secure, part to be
> aligned with a particularly commercial linux distro, and many other
> differing needs based frameworks.
> 
> 
> The minimal (lowest level) should be clear of all of those distro
> encumbrances. CoreOS is taking this approach, as their bare metal
> bootstrapping occurs completely and well before systemd or any other
> PID1 schema is invoked or becomes a defacto requirement.  Gentoo is all
> about freedom, right?

If we need a new profile, then certainly those who are going to use it
should be best equipped to know what needs to be in it, right? This is a
great case for building what you need and then sharing it so everyone
can benefit. I don't do embedded (though I might tinker with it some
day), so I'm definitely not able to know what needs to be in such a
profile. We need people who actually work in that sort of stuff to do
the work, because if someone like me does it, then it may have too many
packages in it, or it won't account for X or Y use case that's super
common in embedded, etc.

Embedded is an itch, and non-embedded Gentoo people can't scratch it for
you because we aren't qualified. If you or others ever manage to make
that profile, please share it so others can benefit too. :)
> 
> 
> hth,
> James
> 

Thanks for reading,
zlg
-- 
Daniel Campbell - Gentoo Developer
OpenPGP Key: 0x1EA055D6 @ hkp://keys.gnupg.net
fpr: AE03 9064 AE00 053C 270C  1DE4 6F7A 9091 1EA0 55D6


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 85+ messages in thread

* Re: [gentoo-dev] Guidelines for IUSE defaults
  2017-02-02 18:01             ` Rich Freeman
  2017-02-02 20:35               ` james
@ 2017-02-03  0:01               ` Gordon Pettey
  2017-02-04  0:34                 ` Kent Fredric
  2017-02-03  1:40               ` Michael Orlitzky
  2017-02-03  6:12               ` Walter Dnes
  3 siblings, 1 reply; 85+ messages in thread
From: Gordon Pettey @ 2017-02-03  0:01 UTC (permalink / raw
  To: gentoo-dev

[-- Attachment #1: Type: text/plain, Size: 4087 bytes --]

On Thu, Feb 2, 2017 at 12:01 PM, Rich Freeman <rich0@gentoo.org> wrote:

> On Thu, Feb 2, 2017 at 11:25 AM, Michael Orlitzky <mjo@gentoo.org> wrote:
> >
> > If (base == minimal), then all of the upstream defaults need to be added
> > to package.use for the upstream-defaults profile. That's bad,
>
> I'll go further and say that it is unacceptably bad.
>
> > but if
> > (base == upstream-defaults), then the important IUSE defaults need to be
> > copy/pasted from our ebuilds into the minimal profile. The latter is
> > more spiritually damning =)
> >
>
> So, I'll admit I've never been one that cared a great deal about
> minimalism so I appreciate that I may not be the best one to judge
> this, so let's go ahead and embrace your statement for the purpose of
> debate.
>
> Is there a better way we can have our cake and eat it too?  I'll admit
> that a huge package.use on the minimal profile isn't a whole lot
> better than a huge package.use on all the other profiles.
>
> Do we need another form of syntax in individual ebuilds to try to
> separate out the various cases you cite?  Does anybody care to
> actually suggest one?
>
> I still think that we shouldn't encourage users to lightly deviate
> from all the upstream defaults.  There are of course legitimate
> reasons for doing so, and you and I can probably appreciate when we
> should do this, but for somebody starting out we're giving them a lot
> of rope to hang themselves with.  It is like building a kernel
> answering no to the largest number of questions possible while still
> actually building something.  I'd actually be curious as to what that
> kernel would even be capable of doing (there are a lot of fairly
> essential things you can turn off in the kernel).
>
> In the same way, we shouldn't be too quick to deviate from upstream
> defaults ourselves (#4 in your example), beyond actual integration
> work.
>
> I'll admit the current state is a bit of a compromise, but I don't
> think we should change it unless we're changing it to something
> significantly better.  This is a pretty big-impact change.
>
> --
> Rich
>

If you want to keep this kind of thing in the ebuilds, IUSE="+blah" doesn't
allow any granularity. Another variable USE_PROFILE should be added
analogue to DEPENDS:
IUSE="gnome-keyring gtk-theme kwallet pulseuadio qt-theme
annoyingUpstreamDefault"
USE_PROFILE="
desktop? ( pulseaudio )
gtk? ( gtk-theme )
gnome? ( @gtk gnome-keyring)
kde? ( @qt kwallet )
qt? ( qt-theme )
upstream? ( annoyingUpstreamDefault )
"
@ is already used for sets, so "some other use_profile's set of defined
flags" seems reasonable. It should be additive only, so no +- prefixes
needed (or allowed). If a package is emerged without any USE_PROFILE set,
you might einfo "This package supports was emerged with no use profile. It
supports blah1, blah2, and blah3. Upstream recommends blah2." USE_PROFILE
should never have any default selected by an ebuild; if a flag is required
to build, is shouldn't be a flag. You get independent behavior per package
rather than listing every single package that ever existed in
profile/package.use, package behavior actually being with the package
instead of global profiles, and you get rid of the mess of uncustomizable
IUSE="+something" everywhere that makes people like me tend to start off
every new Gentoo install with echo "USE=\"-*\"" >> /etc/portage/make.conf.
Just need to come up with sane naming convention for common possibilities
like kde, gnome, and generic desktop.

If you want upstream, USE_PROFILE="upstream". If Gentoo as an organization
wants that to be the "friendly to new user" standard, put
USE_PROFILE="upstream" in the stage3 make.conf, where those of us who want
to can simply remove or change it instead of having to nuke everything with
USE="-*". You can still use e.g. RUBY_TARGETS="+ruby21" in an ebuild if you
want a default for things that really require an at-least-one-of choice.

Then instead of default/linux/amd64/13.0/desktop/kde listing any USE flags
itself, it just sets required USE_PROFILE and lets the packages do their
thing.

[-- Attachment #2: Type: text/html, Size: 5344 bytes --]

^ permalink raw reply	[flat|nested] 85+ messages in thread

* Re: [gentoo-dev] Guidelines for IUSE defaults
  2017-02-02 23:28                   ` james
@ 2017-02-03  0:12                     ` Rich Freeman
  0 siblings, 0 replies; 85+ messages in thread
From: Rich Freeman @ 2017-02-03  0:12 UTC (permalink / raw
  To: gentoo-dev

On Thu, Feb 2, 2017 at 6:28 PM, james <garftd@verizon.net> wrote:
> On 02/02/2017 04:05 PM, Rich Freeman wrote:
>>
>> The problem is the new user experience.  When somebody is new to
>> Gentoo and not super-knowledgeable the first thing they're going to do
>> is set up a desktop.  Now, they might not call it a desktop.  They
>> might not even run X11 on it.  But, they're basically falling into
>> that desktop user experience where whatever they do install "just
>> works" and is feature-complete.
>
> Nobody give a damn about the
> gentoo noob; that's why it is gentoo policy not to have an installer.
>

No such policy exists, as far as I'm aware.  If one does could you
cite it so that we can strike it down?

As far as I'm aware there is no Gentoo policy about hosting any
particular kind of software, as long as we can legally host it.

> I just do not see your 'either or scenario' as the only possibility.

Then let me clarify that I wasn't proposing anything as an exclusive
option.  I merely think that it makes more sense to specify default
package-specific USE flags in the packages and not in the profiles.
As I posted earlier I'm open to better ways of doing that.

> All I really need is a minimized (a least or very low set of
> packages) profile that is not so concerned with most of the upstream
> projects and the noise found therein.

Sure, and that was basically how I suggested going about it.

-- 
Rich


^ permalink raw reply	[flat|nested] 85+ messages in thread

* Re: [gentoo-dev] Guidelines for IUSE defaults
  2017-02-02 23:41                     ` Ian Stakenvicius
@ 2017-02-03  1:21                       ` Michael Orlitzky
  2017-02-03 13:17                         ` Ian Stakenvicius
  0 siblings, 1 reply; 85+ messages in thread
From: Michael Orlitzky @ 2017-02-03  1:21 UTC (permalink / raw
  To: gentoo-dev

On 02/02/2017 06:41 PM, Ian Stakenvicius wrote:
> Responding here instead of the first time it was posted, just 'cause.
> 
> On 02/02/17 06:35 PM, james wrote:
>> "
>> I'm not saying that we should have a minimal experience out-of-the-box,
>> only that the base profile should result in an effectively-minimal set
>> of USE flags. Adding IUSE defaults is essentially adding defaults to the
>> base profile."
> 
> Yes.  More specifically, it's adding these defaults without setting
> the flags globally, thereby not introducing system-wide defaults
> across all packages but only those that make sense on a per-package
> basis for that package to operate properly.
> 
> IMO this is the effectively minimal-set of use flags we should have.

I... agree? We should enable the flags that are necessary for the
package to work, and we should enable whatever is necessary to avoid
REQUIRED_USE roadblocks. That's what I started out by suggesting.



^ permalink raw reply	[flat|nested] 85+ messages in thread

* Re: [gentoo-dev] Guidelines for IUSE defaults
  2017-02-02 18:01             ` Rich Freeman
  2017-02-02 20:35               ` james
  2017-02-03  0:01               ` Gordon Pettey
@ 2017-02-03  1:40               ` Michael Orlitzky
  2017-02-03  2:10                 ` Rich Freeman
  2017-02-03  3:14                 ` Patrick McLean
  2017-02-03  6:12               ` Walter Dnes
  3 siblings, 2 replies; 85+ messages in thread
From: Michael Orlitzky @ 2017-02-03  1:40 UTC (permalink / raw
  To: gentoo-dev

On 02/02/2017 01:01 PM, Rich Freeman wrote:
> On Thu, Feb 2, 2017 at 11:25 AM, Michael Orlitzky <mjo@gentoo.org> wrote:
>>
>> If (base == minimal), then all of the upstream defaults need to be added
>> to package.use for the upstream-defaults profile. That's bad,
> 
> I'll go further and say that it is unacceptably bad.
> 

Only if anyone wants an upstream-defaults profile. But nobody's asked
for one, in contrast with the large number of users who want minimal.


> Is there a better way we can have our cake and eat it too?  I'll admit
> that a huge package.use on the minimal profile isn't a whole lot
> better than a huge package.use on all the other profiles.

Every important upstream default is already enabled in some profile. If
dropping a particular IUSE default breaks desktop systems, then that
flag belongs enabled in the desktop profile. If it breaks every system,
then let's keep it default.


> Do we need another form of syntax in individual ebuilds to try to
> separate out the various cases you cite?  Does anybody care to
> actually suggest one?

Definitely not. I was hoping to simplify things, not complicate them. We
have a list of flags that can be enabled for each package. As a general
principle, it makes sense to either (a) disable them all by default, or
(b) enable them all by default. Having what is essentially a random
selection enabled by default for each package is chaos.


> I still think that we shouldn't encourage users to lightly deviate
> from all the upstream defaults. 

Deviating from upstream defaults is why we have USE flags in the first
place. No one really wants the upstream defaults, they want

  (nothing) + (what their profile provides) + (what they enable),

not least of all because that assumption is how they came up with the
list of flags in (what they enable) in the first place.

If dropping an IUSE default hurts some profile, then stick the default
in that profile. Nothing breaks, and it's not too much work, and we get
back to a sane system of profile inheritance rather than having every
ebuild and profile trying to XOR one another.



^ permalink raw reply	[flat|nested] 85+ messages in thread

* Re: [gentoo-dev] Guidelines for IUSE defaults
  2017-02-02 14:11 [gentoo-dev] Guidelines for IUSE defaults Michael Orlitzky
                   ` (2 preceding siblings ...)
  2017-02-02 17:23 ` Walter Dnes
@ 2017-02-03  2:00 ` Sam Jorna
  2017-02-03  2:06   ` Michael Orlitzky
  2017-02-07  7:52 ` Ulrich Mueller
  4 siblings, 1 reply; 85+ messages in thread
From: Sam Jorna @ 2017-02-03  2:00 UTC (permalink / raw
  To: gentoo-dev

[-- Attachment #1: Type: text/plain, Size: 2635 bytes --]

On Thu, Feb 02, 2017 at 09:11:26AM -0500, Michael Orlitzky wrote:
> IUSE defaults are used in a few different ways:
> 
>   1 To ensure that critical functionality is enabled.
> 
>     * Example: force the "unix" module for apache.

Why provide a flag for something that is required anyway? And if it's a 
case of "you *really* should have this, but if you want to break it, 
here's how", then why not put it in package.use.force instead? An IUSE 
default for this doesn't make sense.

>   2 To avoid an unsatisfied REQUIRED_USE by default.
> 
>     * Example: having a non-empty RUBY_TARGETS by default.

This seems reasonable - two mutually exclusive options, of which one is 
preferred. That being said, I do see it as akin to 3 and 4.

>   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.
> 

The way I see it, IUSE defaults are provided by the maintainer as a way 
to offer a package with "what you probably would want enabled" to 
facilitate users who either aren't interested in ricing their system or 
aren't experienced enough with Gentoo to tweak all the flags.

Consider: a new user, coming from Ubuntu or Fedora or Windows, starts 
building their system. They start installing packages they want, only to 
find that half of the package isn't there because no USE flags were 
enabled. They have to enable these flags for almost every package they 
want because there's no defaults, you must manually specify anything 
that's not a direct dependency or forced by profile.

Conversely, users who want a minimal system are ones who are much more 
likely to inspect emerge's output before committing to a build. They are 
likely more willing to tweak the flags to have the system provide only 
the things they want. Often they'll have USE="-*", accepting that 
they'll probably have to enabled a bunch of things to get their desired 
functionality.

IUSE defaults are a convenience for those either inexperienced with 
Gentoo or uncaring of cruft. Certainly maintainers should put some 
forethought into which flags they default to enabled, but I see the end 
goal as helping the users who need the help most (not to discount more 
advanced users, but they are more likely to *want* to tweak than one for 
whom this is their first CLI).

That's my two cents, at least.

-- 
Sam Jorna (wraeth)
GnuPG Key: D6180C26

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 1006 bytes --]

^ permalink raw reply	[flat|nested] 85+ messages in thread

* Re: [gentoo-dev] Guidelines for IUSE defaults
  2017-02-03  2:00 ` Sam Jorna
@ 2017-02-03  2:06   ` Michael Orlitzky
  2017-02-03  2:22     ` Sam Jorna
                       ` (2 more replies)
  0 siblings, 3 replies; 85+ messages in thread
From: Michael Orlitzky @ 2017-02-03  2:06 UTC (permalink / raw
  To: gentoo-dev

On 02/02/2017 09:00 PM, Sam Jorna wrote:
>
> Consider: a new user, coming from Ubuntu or Fedora or Windows, starts 
> building their system. They start installing packages they want, only to 
> find that half of the package isn't there because no USE flags were 
> enabled. They have to enable these flags for almost every package they 
> want because there's no defaults, you must manually specify anything 
> that's not a direct dependency or forced by profile.

Desktop profile!!!!!!!!!! We have a desktop profile!!! Why is the base
profile a better location for new-user-with-a-desktop defaults than the
**desktop** profile?

I'm going crazy. I give up.



^ permalink raw reply	[flat|nested] 85+ messages in thread

* Re: [gentoo-dev] Guidelines for IUSE defaults
  2017-02-03  1:40               ` Michael Orlitzky
@ 2017-02-03  2:10                 ` Rich Freeman
  2017-02-03  3:14                 ` Patrick McLean
  1 sibling, 0 replies; 85+ messages in thread
From: Rich Freeman @ 2017-02-03  2:10 UTC (permalink / raw
  To: gentoo-dev

On Thu, Feb 2, 2017 at 8:40 PM, Michael Orlitzky <mjo@gentoo.org> wrote:
> On 02/02/2017 01:01 PM, Rich Freeman wrote:
>> On Thu, Feb 2, 2017 at 11:25 AM, Michael Orlitzky <mjo@gentoo.org> wrote:
>>>
>>> If (base == minimal), then all of the upstream defaults need to be added
>>> to package.use for the upstream-defaults profile. That's bad,
>>
>> I'll go further and say that it is unacceptably bad.
>>
>
> Only if anyone wants an upstream-defaults profile. But nobody's asked
> for one, in contrast with the large number of users who want minimal.
>

People already have one effectively, so they're not going to ask.

But, if it makes you happier, I'll ask for one.  :)

If Gentoo didn't have a reasonable way to get mostly upstream
defaults, I probably wouldn't be using Gentoo.

>
>> I still think that we shouldn't encourage users to lightly deviate
>> from all the upstream defaults.
>
> Deviating from upstream defaults is why we have USE flags in the first
> place. No one really wants the upstream defaults, they want
>
>   (nothing) + (what their profile provides) + (what they enable),

Well, I'm somebody, and I want:

(upstream defaults) + (profile settings) + (what I enable) - (what I disable)

I certainly don't set USE=-*, even on my containers.

>
> If dropping an IUSE default hurts some profile, then stick the default
> in that profile. Nothing breaks, and it's not too much work

There are probably thousands of package+USE combinations in IUSE
statements.  Putting these all into a profile is anything but
straightforward.

I don't want globally-enabled/disabled USE flags in my base profile.
I want the settings that make sense for each specific package, which
requires taking the time to evaluate each package.  This is time that
maintainers have already invested.

I personally have zero-interest in minimal systems.  If others want to
set USE=-* that's great for them, and if somebody wants to create a
profile that sets USE=-* and has some per-package exceptions to fix a
few things, that is also great.  If there are cases where we can do
things a little differently to make life easier on these sorts of
users, we should do that.  However, limiting IUSE defaults just to
settings minimally necessary to get a package to build just makes it
impossible to use Gentoo practically without reviewing a bazillion USE
flags.

There is no reason everybody can't have their own way, but IMO it is
much simpler to do this with a minimal profile.

-- 
Rich


^ permalink raw reply	[flat|nested] 85+ messages in thread

* Re: [gentoo-dev] Guidelines for IUSE defaults
  2017-02-03  2:06   ` Michael Orlitzky
@ 2017-02-03  2:22     ` Sam Jorna
  2017-02-03  2:26       ` Michael Orlitzky
  2017-02-03  2:31     ` Rich Freeman
  2017-02-03  3:16     ` Patrick McLean
  2 siblings, 1 reply; 85+ messages in thread
From: Sam Jorna @ 2017-02-03  2:22 UTC (permalink / raw
  To: gentoo-dev

[-- Attachment #1: Type: text/plain, Size: 1161 bytes --]

On Thu, Feb 02, 2017 at 09:06:33PM -0500, Michael Orlitzky wrote:
> On 02/02/2017 09:00 PM, Sam Jorna wrote:
> >
> > Consider: a new user, coming from Ubuntu or Fedora or Windows, starts 
> > building their system. They start installing packages they want, only to 
> > find that half of the package isn't there because no USE flags were 
> > enabled. They have to enable these flags for almost every package they 
> > want because there's no defaults, you must manually specify anything 
> > that's not a direct dependency or forced by profile.
> 
> Desktop profile!!!!!!!!!! We have a desktop profile!!! Why is the base
> profile a better location for new-user-with-a-desktop defaults than the
> **desktop** profile?
> 
> I'm going crazy. I give up.

That would also mean two commits when adding or removing a package with 
any defaults - one for profiles/, one for the package itself - as well 
as when flags change for a given package.

Also, how would this work with local USE flags as opposed to global 
flags? Would they be acceptable to have IUSE defaults?

-- 
Sam Jorna (wraeth)
GnuPG Key: D6180C26

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 1006 bytes --]

^ permalink raw reply	[flat|nested] 85+ messages in thread

* Re: [gentoo-dev] Guidelines for IUSE defaults
  2017-02-03  2:22     ` Sam Jorna
@ 2017-02-03  2:26       ` Michael Orlitzky
  2017-02-03  2:34         ` Sam Jorna
  0 siblings, 1 reply; 85+ messages in thread
From: Michael Orlitzky @ 2017-02-03  2:26 UTC (permalink / raw
  To: gentoo-dev

On 02/02/2017 09:22 PM, Sam Jorna wrote:
> 
> Also, how would this work with local USE flags as opposed to global 
> flags? Would they be acceptable to have IUSE defaults?
> 

Exactly the same way as global flags: drop an entry in the desktop
profile's package.use.



^ permalink raw reply	[flat|nested] 85+ messages in thread

* Re: [gentoo-dev] Guidelines for IUSE defaults
  2017-02-03  2:06   ` Michael Orlitzky
  2017-02-03  2:22     ` Sam Jorna
@ 2017-02-03  2:31     ` Rich Freeman
  2017-02-03  2:55       ` Michael Orlitzky
  2017-02-03  3:16     ` Patrick McLean
  2 siblings, 1 reply; 85+ messages in thread
From: Rich Freeman @ 2017-02-03  2:31 UTC (permalink / raw
  To: gentoo-dev

On Thu, Feb 2, 2017 at 9:06 PM, Michael Orlitzky <mjo@gentoo.org> wrote:
> On 02/02/2017 09:00 PM, Sam Jorna wrote:
>>
>> Consider: a new user, coming from Ubuntu or Fedora or Windows, starts
>> building their system. They start installing packages they want, only to
>> find that half of the package isn't there because no USE flags were
>> enabled. They have to enable these flags for almost every package they
>> want because there's no defaults, you must manually specify anything
>> that's not a direct dependency or forced by profile.
>
> Desktop profile!!!!!!!!!! We have a desktop profile!!! Why is the base
> profile a better location for new-user-with-a-desktop defaults than the
> **desktop** profile?
>

The desktop profile is going to do things like enable X11 support by
default.  It isn't going to do things like enable bzip support in
ffmpeg (but not the new experimental codec that causes it to crash 25%
of the time, but which apparently works great if you use libav
instead), or tools support in tripwire, or e2fsprogs support in
libarchive, or threads support in beecrypt, or any of a million other
things that aren't desktop-specific.  Sure, you can do this with a
bazillion package-specific profile settings, but that is a ton of
cruft for every profile except a minimal profile.

USE settings aren't in some kind of natural heirarchy where desktop
users want them all on and embedded users want them all off.  There
are a million often-orthogonal choices, and anybody could potentially
need any of them, or not want any of them.

Take threads support.as a random example.  There are lots of packages
that default it on, and lots that default it off, and as far as I can
tell none of the profiles change it either way, other than for the odd
package where the preference is arch-specific.  This probably reflects
the feature not being equally stable in all packages, or maybe in some
cases it pulls in heavyweight dependencies where it isn't worth the
tradeoff for a typical user.  Just setting the flag on/off globally
loses all that nuance, which package maintainers have apparently taken
the time to create.  And threads support has nothing to do with
whether you want desktop vs server vs embedded for the most part,
except where it pulls in heavy dependencies, and again that requires
nuance.

I get that there are many people who run Gentoo because it lets them
strip down their systems.  I want to support that as best we can.  I
just don't think that we can just abandon the more typical use case
(IMO) of upstream defaults just to make setting that up a little
easier.  Gentoo enables all kinds of exotic configurations, but it
does so starting from a baseline that is reasonably close to something
like Arch or Debian.  That is a pretty sane place to build off of, but
Gentoo lets you get a lot further away from that faster if that is
what you want.  That is why we use openrc+bash as our starting point
and not busybox.  There are users who swear by busybox mdev and if
they're willing to write the wiki pages to make that work more power
to them, and I'm fine with having that in a virtual/etc to make life
easier on them when that makes sense.  I just think as a baseline it
makes more sense to start out close to where everybody else starts.

If this were just about a few global USE flags in the desktop profile,
that would be a different matter.

-- 
Rich


^ permalink raw reply	[flat|nested] 85+ messages in thread

* Re: [gentoo-dev] Guidelines for IUSE defaults
  2017-02-03  2:26       ` Michael Orlitzky
@ 2017-02-03  2:34         ` Sam Jorna
  0 siblings, 0 replies; 85+ messages in thread
From: Sam Jorna @ 2017-02-03  2:34 UTC (permalink / raw
  To: gentoo-dev

[-- Attachment #1: Type: text/plain, Size: 944 bytes --]

On Thu, Feb 02, 2017 at 09:26:20PM -0500, Michael Orlitzky wrote:
> On 02/02/2017 09:22 PM, Sam Jorna wrote:
> > 
> > Also, how would this work with local USE flags as opposed to global 
> > flags? Would they be acceptable to have IUSE defaults?
> > 
> 
> Exactly the same way as global flags: drop an entry in the desktop
> profile's package.use.

I can understand the reasoning behind using this, but it seems 
unnecessarily laborious to do so - as I said, it would mean playing 
around with profiles whenever changing a package for which flags are 
defaulted.

Perhaps some standardisation of what warrants an IUSE default could 
help, otherwise you might end up with the same situation, just relocated 
into the profiles namespace instead of the package.

Having said that, I'm not strongly opposed, just trying to sound out 
pros/cons/gotcha's.

-- 
Sam Jorna (wraeth)
GnuPG Key: D6180C26

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 1006 bytes --]

^ permalink raw reply	[flat|nested] 85+ messages in thread

* Re: [gentoo-dev] Guidelines for IUSE defaults
  2017-02-03  2:31     ` Rich Freeman
@ 2017-02-03  2:55       ` Michael Orlitzky
  0 siblings, 0 replies; 85+ messages in thread
From: Michael Orlitzky @ 2017-02-03  2:55 UTC (permalink / raw
  To: gentoo-dev

On 02/02/2017 09:31 PM, Rich Freeman wrote:
> 
> The desktop profile is going to do things like enable X11 support by
> default.  It isn't going to do things like enable bzip support in
> ffmpeg (but not the new experimental codec that causes it to crash 25%
> of the time, but which apparently works great if you use libav
> instead), or tools support in tripwire, or e2fsprogs support in
> libarchive, or threads support in beecrypt, or any of a million other
> things that aren't desktop-specific.

Then throw in an intermediate profile

  base -> all-that-junk -> desktop

and everyone that's inheriting from base now can inherit from the new
profile instead. Nothing changes, except we get the cruft out of base
and into a new profile that people can ignore. The defaults are still
recorded once, in one place. Just in a profile now instead of in IUSE.




^ permalink raw reply	[flat|nested] 85+ messages in thread

* Re: [gentoo-dev] Guidelines for IUSE defaults
  2017-02-03  1:40               ` Michael Orlitzky
  2017-02-03  2:10                 ` Rich Freeman
@ 2017-02-03  3:14                 ` Patrick McLean
  2017-02-03 13:21                   ` Ian Stakenvicius
  1 sibling, 1 reply; 85+ messages in thread
From: Patrick McLean @ 2017-02-03  3:14 UTC (permalink / raw
  To: Michael Orlitzky; +Cc: gentoo-dev

On Thu, 2 Feb 2017 20:40:38 -0500
Michael Orlitzky <mjo@gentoo.org> wrote:

> On 02/02/2017 01:01 PM, Rich Freeman wrote:
> > On Thu, Feb 2, 2017 at 11:25 AM, Michael Orlitzky <mjo@gentoo.org>
> > wrote:  
> >>
> >> If (base == minimal), then all of the upstream defaults need to be
> >> added to package.use for the upstream-defaults profile. That's
> >> bad,  
> > 
> > I'll go further and say that it is unacceptably bad.
> >   
> 
> Only if anyone wants an upstream-defaults profile. But nobody's asked
> for one, in contrast with the large number of users who want minimal.
> 
> 
> > Is there a better way we can have our cake and eat it too?  I'll
> > admit that a huge package.use on the minimal profile isn't a whole
> > lot better than a huge package.use on all the other profiles.  
> 
> Every important upstream default is already enabled in some profile.
> If dropping a particular IUSE default breaks desktop systems, then
> that flag belongs enabled in the desktop profile. If it breaks every
> system, then let's keep it default.
> 

How about rather changing our defaults to satisfy the minimalists who
don't mind drastically reduced functionality and usability in pursuit
of "minimalism" we just strive to make USE="-*" mostly usable, so the
minimalists can get what they want, while still having sane defaults. 


^ permalink raw reply	[flat|nested] 85+ messages in thread

* Re: [gentoo-dev] Guidelines for IUSE defaults
  2017-02-03  2:06   ` Michael Orlitzky
  2017-02-03  2:22     ` Sam Jorna
  2017-02-03  2:31     ` Rich Freeman
@ 2017-02-03  3:16     ` Patrick McLean
  2017-02-03  3:37       ` Michael Orlitzky
  2 siblings, 1 reply; 85+ messages in thread
From: Patrick McLean @ 2017-02-03  3:16 UTC (permalink / raw
  To: Michael Orlitzky; +Cc: gentoo-dev

On Thu, 2 Feb 2017 21:06:33 -0500
Michael Orlitzky <mjo@gentoo.org> wrote:

> On 02/02/2017 09:00 PM, Sam Jorna wrote:
> >
> > Consider: a new user, coming from Ubuntu or Fedora or Windows,
> > starts building their system. They start installing packages they
> > want, only to find that half of the package isn't there because no
> > USE flags were enabled. They have to enable these flags for almost
> > every package they want because there's no defaults, you must
> > manually specify anything that's not a direct dependency or forced
> > by profile.  
> 
> Desktop profile!!!!!!!!!! We have a desktop profile!!! Why is the base
> profile a better location for new-user-with-a-desktop defaults than
> the **desktop** profile?
> 
> I'm going crazy. I give up.
> 

There are people who run servers on Gentoo, and don't particularly want
minimalism, then want a normal Linux system level of functionality (ie
upstream and/or sane defaults) without having to add dozens of USE
flags to random packages throughout the system.


^ permalink raw reply	[flat|nested] 85+ messages in thread

* Re: [gentoo-dev] Guidelines for IUSE defaults
  2017-02-03  3:16     ` Patrick McLean
@ 2017-02-03  3:37       ` Michael Orlitzky
  0 siblings, 0 replies; 85+ messages in thread
From: Michael Orlitzky @ 2017-02-03  3:37 UTC (permalink / raw
  To: gentoo-dev

On 02/02/2017 10:16 PM, Patrick McLean wrote:
> 
> There are people who run servers on Gentoo, and don't particularly want
> minimalism, then want a normal Linux system level of functionality (ie
> upstream and/or sane defaults) without having to add dozens of USE
> flags to random packages throughout the system.
> 

Then somebody should go through a typical Ubuntu install and add all of
those packages to @system. That will make most people happy, and the
minimalists can just mask what they don't need.



^ permalink raw reply	[flat|nested] 85+ messages in thread

* Re: [gentoo-dev] Guidelines for IUSE defaults
  2017-02-02 18:01             ` Rich Freeman
                                 ` (2 preceding siblings ...)
  2017-02-03  1:40               ` Michael Orlitzky
@ 2017-02-03  6:12               ` Walter Dnes
  2017-02-03 17:39                 ` james
  3 siblings, 1 reply; 85+ messages in thread
From: Walter Dnes @ 2017-02-03  6:12 UTC (permalink / raw
  To: gentoo-dev

On Thu, Feb 02, 2017 at 01:01:52PM -0500, Rich Freeman wrote

> Is there a better way we can have our cake and eat it too?  I'll admit
> that a huge package.use on the minimal profile isn't a whole lot
> better than a huge package.use on all the other profiles.
> 
> Do we need another form of syntax in individual ebuilds to try to
> separate out the various cases you cite?  Does anybody care to
> actually suggest one?
> 
> I still think that we shouldn't encourage users to lightly deviate
> from all the upstream defaults.  There are of course legitimate
> reasons for doing so, and you and I can probably appreciate when we
> should do this, but for somebody starting out we're giving them a lot
> of rope to hang themselves with.

  The "case" for IUSE often depends on a fallacious strawman argument
about USE="-*".  The strawman argument is that people run with the USE
variable in make.conf consisting of "USE=-*" and that every package
requires an entry in package.use WRONG! WRONG! WRONG!  That is a braindead
approach.  The way I recommend doing it is...

USE="-* fu bar blah blah blah"

...where commonly-used flags are included in USE.  My rule-of-thumb is

Given that
* not including a flag in USE requires X entries adding it in package.use
* including a flag in USE requires Y entries negating it in package.use

If ( X > Y ) then
   include the the flag in USE
else
   do not include the the flag in USE
end if

  I effectively "build my own profile" rather than depend on multiple
levels of inheritance.  My current desktop runs with the following USE
flags...

USE="X apng bindist ffmpeg jpeg opengl png szip truetype x264 x265 xorg threads webp -acl -berkdb -caps -cracklib -crypt -filecaps -gallium -gdbm -graphite -gstreamer -iconv -introspection -ipc -iptables -ipv6 -libav -llvm -manpager -nls -openmp -pam -pch -sendmail -tcpd -udev -unicode -xinerama"

  Note all the negative flags.  I'll try installing uclibc to a laptop
one of these days.  I figure that it'll probably have a shorter USE line
if I start USE with "-*", and I will not have a larger package.use file.

-- 
Walter Dnes <waltdnes@waltdnes.org>
I don't run "desktop environments"; I run useful applications


^ permalink raw reply	[flat|nested] 85+ messages in thread

* [gentoo-dev] Re: Guidelines for IUSE defaults
  2017-02-02 15:49   ` Michael Orlitzky
@ 2017-02-03  8:16     ` Duncan
  0 siblings, 0 replies; 85+ messages in thread
From: Duncan @ 2017-02-03  8:16 UTC (permalink / raw
  To: gentoo-dev

Michael Orlitzky posted on Thu, 02 Feb 2017 10:49:41 -0500 as excerpted:

> On 02/02/2017 09:56 AM, Ian Stakenvicius wrote:
>> 
>>> On Feb 2, 2017, at 9:11 AM, Michael Orlitzky <mjo@gentoo.org>
>>> wrote:
>>> 
>>> IUSE defaults are used in a few different ways:
>>> 
>>> 1 To ensure that critical functionality is enabled.
>>> 
>>> * Example: force the "unix" module for apache.
>>> 
>>> 
>> This is not what IUSE defaults are for, this should be done with
>> package.use{,.stable}.{mask,force} in profiles.  If functionality is
>> critical then there (A) shouldn't be a use flag, or (B) shouldn't be a
>> way for USE= in make.conf to disable it.
>> 
>> 
> If we adopted this policy, then USE="-*" would no longer be guaranteed
> to break the system. It does still ignore your profile defaults, though,
> which presumably are important (e.g. for hardened). So we're still left
> with no way for me to turn off everyone's pet USE flags and keep my
> system working.

If USE="-*" is a guarantee of a broken system, it's a pretty weak one.  
In fact, so is flying with an empty @system (everything in the profile 
negated), as I do both of the above.

And in fact, my gentoo-based-admin life has been far simpler since I set 
it up that way.  =:^)

The biggest benefit of USE="-*" is that I no longer have to worry about 
investigating the "why" of USE flag changes when I change to a different 
profile, or when devs change my existing profile out from under me.  I 
have a set of USE flags I've decided I want (or need for long-term-
installed stuff like kde), and all packages that don't work with that 
default -- for instance, packages that required-use qt4 XOR qt5, already 
have their package.use setup as appropriate.

Otherwise, when I upgrade to a new profile, as I've needed to do several 
times over the nearing a decade and a half I've been running the same 
original installation rolling-update gentoo on rolling-update hardware, I 
have to do a bunch of research on all the USE flags that changed and how 
they affect my existing installation due to --newuse.  This way, that was 
all managed at the time I encountered the original USE flag conflict, and 
the profile I choose doesn't mess with my USE flags at all except via 
forces (which I can override if I have to, but I haven't had to, a 
testament to the wisely conservative usage of forced-USE).

Of course, I can and do still use the USE flags set in a profile as a 
guide, and that was a tremendous help in the kde-apps5/frameworks5/plasma5 
upgrade process despite the fact that I couldn't actually use the profile 
designed for that.

The biggest weakness, meanwhile, is that with USE="-*" there's no easy 
way to actually see what a package's USE-defaults are, without actually 
opening up the ebuild (or at least grepping) to see.  I've often wished 
there was some way to denote the default-on flags in emerge --pretend/--
ask so I could see what they are on a new package, and investigate why if 
necessary, but I understand the problem of a limited available symbol-
space, and actually looking in the ebuild isn't /horribly/ hard... as 
long as there's multiple terminals available to do it in, without 
unnecessarily canceling the --ask output that took so long to appear.

Of course it would be a bit different if I could actually use a profile 
with all the bits I needed, nomultilib, systemd, plasma, amd64, 
primarily.  But until mixins, nomultilib generally means at least some of 
the other stuff isn't available in a profile, so I gotta simply pick the 
nomultilib profile that best matches and check the other profiles, for 
example plasma, using them as a guide to set my flags the way I need them.

Similarly with @system.  Negating the entire thing a package at a time 
and seeing what --depclean wants to clean, then adding as appropriate to 
a set listed in world_sets if it's /really/ needed, means I don't have to 
worry about package.providing openrc, for instance, because it's not 
necessary with systemd, once a single symlink is setup.  Similarly with 
ssh if it's only a stand-alone system you're admining.  And most of the 
@system virtuals can simply be dropped, as specific selections from those 
virtuals have already been added to some set listed in world_sets.

Of course it helps that my routine-use emerge aliases have --ask 
--verbose --oneshot.  (I don't configure those as emerge-defaults because 
I do for example want --pretend occasionally instead of --ask.)  But 
that's a lesson most gentooers should have learned within six months.

Anyway, USE="-*" hardly breaks the system here.  In fact, rather the 
opposite, it fixes what was previously a major headache of a workaround 
for a broken system every time my profile changed, because I was setting 
most USE flags I wanted but until then, not *ALL* of them, in part 
because I couldn't see what I had missed because the profile was setting 
it for me... until it didn't, thus creating the problem.

So for some people, especially those likely to have systems they're 
managing over a profile upgrade, USE="-*" is a guaranteed fix, not a 
guaranteed break. =:^)

-- 
Duncan - List replies preferred.   No HTML msgs.
"Every nonfree program has a lord, a master --
and if you use the program, he is your master."  Richard Stallman



^ permalink raw reply	[flat|nested] 85+ messages in thread

* Re: [gentoo-dev] Guidelines for IUSE defaults
  2017-02-03  1:21                       ` Michael Orlitzky
@ 2017-02-03 13:17                         ` Ian Stakenvicius
  0 siblings, 0 replies; 85+ messages in thread
From: Ian Stakenvicius @ 2017-02-03 13:17 UTC (permalink / raw
  To: gentoo-dev


[-- Attachment #1.1: Type: text/plain, Size: 1558 bytes --]

On 02/02/17 08:21 PM, Michael Orlitzky wrote:
> On 02/02/2017 06:41 PM, Ian Stakenvicius wrote:
>> Responding here instead of the first time it was posted, just 'cause.
>>
>> On 02/02/17 06:35 PM, james wrote:
>>> "
>>> I'm not saying that we should have a minimal experience out-of-the-box,
>>> only that the base profile should result in an effectively-minimal set
>>> of USE flags. Adding IUSE defaults is essentially adding defaults to the
>>> base profile."
>>
>> Yes.  More specifically, it's adding these defaults without setting
>> the flags globally, thereby not introducing system-wide defaults
>> across all packages but only those that make sense on a per-package
>> basis for that package to operate properly.
>>
>> IMO this is the effectively minimal-set of use flags we should have.
> 
> I... agree? We should enable the flags that are necessary for the
> package to work, and we should enable whatever is necessary to avoid
> REQUIRED_USE roadblocks. That's what I started out by suggesting.
> 

Where we disagree is that this includes all of scenarios #2, #3, and
#4 IMO.  #4 perhaps less so than the others, but IMO if there is a
good reason feature-wise for that to be default-enabled, then the
maintainer should still default-enable it and do so via IUSE-defaults.

Remember one of the primary reasons IUSE-defaults came about is
because maintainers were doing all of these things, but using "no*"
flags so that the features would be default-enabled.  I don't think
any of us want to see that again.




[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 195 bytes --]

^ permalink raw reply	[flat|nested] 85+ messages in thread

* Re: [gentoo-dev] Guidelines for IUSE defaults
  2017-02-03  3:14                 ` Patrick McLean
@ 2017-02-03 13:21                   ` Ian Stakenvicius
  2017-02-03 13:43                     ` Michael Orlitzky
  0 siblings, 1 reply; 85+ messages in thread
From: Ian Stakenvicius @ 2017-02-03 13:21 UTC (permalink / raw
  To: gentoo-dev


[-- Attachment #1.1: Type: text/plain, Size: 1691 bytes --]

On 02/02/17 10:14 PM, Patrick McLean wrote:
> On Thu, 2 Feb 2017 20:40:38 -0500
> Michael Orlitzky <mjo@gentoo.org> wrote:
> 
>> On 02/02/2017 01:01 PM, Rich Freeman wrote:
>>> On Thu, Feb 2, 2017 at 11:25 AM, Michael Orlitzky <mjo@gentoo.org>
>>> wrote:  
>>>>
>>>> If (base == minimal), then all of the upstream defaults need to be
>>>> added to package.use for the upstream-defaults profile. That's
>>>> bad,  
>>>
>>> I'll go further and say that it is unacceptably bad.
>>>   
>>
>> Only if anyone wants an upstream-defaults profile. But nobody's asked
>> for one, in contrast with the large number of users who want minimal.
>>
>>
>>> Is there a better way we can have our cake and eat it too?  I'll
>>> admit that a huge package.use on the minimal profile isn't a whole
>>> lot better than a huge package.use on all the other profiles.  
>>
>> Every important upstream default is already enabled in some profile.
>> If dropping a particular IUSE default breaks desktop systems, then
>> that flag belongs enabled in the desktop profile. If it breaks every
>> system, then let's keep it default.
>>
> 
> How about rather changing our defaults to satisfy the minimalists who
> don't mind drastically reduced functionality and usability in pursuit
> of "minimalism" we just strive to make USE="-*" mostly usable, so the
> minimalists can get what they want, while still having sane defaults. 
> 

I'm in favour of this too -- I know we don't "officially" support
USE="-*" but I think we should still strive to make it work with
minimal effort to end-users -- that effort being mainly setting
whatever is necessary for REQUIRED_USE resolution.




[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 195 bytes --]

^ permalink raw reply	[flat|nested] 85+ messages in thread

* Re: [gentoo-dev] Guidelines for IUSE defaults
  2017-02-03 13:21                   ` Ian Stakenvicius
@ 2017-02-03 13:43                     ` Michael Orlitzky
  2017-02-03 15:30                       ` Ian Stakenvicius
  2017-02-03 18:33                       ` Patrick McLean
  0 siblings, 2 replies; 85+ messages in thread
From: Michael Orlitzky @ 2017-02-03 13:43 UTC (permalink / raw
  To: gentoo-dev

On 02/03/2017 08:21 AM, Ian Stakenvicius wrote:
>>
>> How about rather changing our defaults to satisfy the minimalists who
>> don't mind drastically reduced functionality and usability in pursuit
>> of "minimalism" we just strive to make USE="-*" mostly usable, so the
>> minimalists can get what they want, while still having sane defaults. 
>>
> 
> I'm in favour of this too -- I know we don't "officially" support
> USE="-*" but I think we should still strive to make it work with
> minimal effort to end-users -- that effort being mainly setting
> whatever is necessary for REQUIRED_USE resolution.
> 

It will never be easy, because USE="-*" overrides your profile. What
people want is a way to have USE="-*" apply between the base profile and
the one that they select.

This is all easily fixed by creating a new profile one-level above base
where developers can put their favorite USE flags:

  1. We create a new empty profile called "penultimate" inheriting
     from base.

  2. Update the profiles that inherit from base to inherit from
     penultimate.

  3. Move every upstream and maintainer-pet IUSE default into the
     penultimate profile.

  4. Make it policy that IUSE defaults should only be used for
     critical flags and REQUIRED_USE persuasion.

  5. Now we can create embedded, hardened, etc. profiles that inherit
     from base and get a minimal working set of USE flags.




^ permalink raw reply	[flat|nested] 85+ messages in thread

* Re: [gentoo-dev] Guidelines for IUSE defaults
  2017-02-03 13:43                     ` Michael Orlitzky
@ 2017-02-03 15:30                       ` Ian Stakenvicius
  2017-02-03 19:37                         ` Michael Orlitzky
  2017-02-03 18:33                       ` Patrick McLean
  1 sibling, 1 reply; 85+ messages in thread
From: Ian Stakenvicius @ 2017-02-03 15:30 UTC (permalink / raw
  To: gentoo-dev


[-- Attachment #1.1: Type: text/plain, Size: 1223 bytes --]

On 03/02/17 08:43 AM, Michael Orlitzky wrote:
> On 02/03/2017 08:21 AM, Ian Stakenvicius wrote:
>>>
>>> How about rather changing our defaults to satisfy the minimalists who
>>> don't mind drastically reduced functionality and usability in pursuit
>>> of "minimalism" we just strive to make USE="-*" mostly usable, so the
>>> minimalists can get what they want, while still having sane defaults. 
>>>
>>
>> I'm in favour of this too -- I know we don't "officially" support
>> USE="-*" but I think we should still strive to make it work with
>> minimal effort to end-users -- that effort being mainly setting
>> whatever is necessary for REQUIRED_USE resolution.
>>
> 
> It will never be easy, because USE="-*" overrides your profile. What
> people want is a way to have USE="-*" apply between the base profile and
> the one that they select.
> 

ok you lost me.  Could you provide an explicit example of what you
would want to see enabled in the profile (while everything else is
disabled) that you don't get when USE="-*" is set?

It's sounding more and more like you just want to be able to turn off
all IUSE defaults, and you can effectively do that by changing the USE
order can't you?




[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 195 bytes --]

^ permalink raw reply	[flat|nested] 85+ messages in thread

* Re: [gentoo-dev] Guidelines for IUSE defaults
  2017-02-03  6:12               ` Walter Dnes
@ 2017-02-03 17:39                 ` james
  2017-02-03 19:01                   ` james
  0 siblings, 1 reply; 85+ messages in thread
From: james @ 2017-02-03 17:39 UTC (permalink / raw
  To: gentoo-dev

On 02/03/2017 01:12 AM, Walter Dnes wrote:
> On Thu, Feb 02, 2017 at 01:01:52PM -0500, Rich Freeman wrote
>
>> Is there a better way we can have our cake and eat it too?  I'll admit
>> that a huge package.use on the minimal profile isn't a whole lot
>> better than a huge package.use on all the other profiles.
>>
>> Do we need another form of syntax in individual ebuilds to try to
>> separate out the various cases you cite?  Does anybody care to
>> actually suggest one?
>>
>> I still think that we shouldn't encourage users to lightly deviate
>> from all the upstream defaults.  There are of course legitimate
>> reasons for doing so, and you and I can probably appreciate when we
>> should do this, but for somebody starting out we're giving them a lot
>> of rope to hang themselves with.
>
>   The "case" for IUSE often depends on a fallacious strawman argument
> about USE="-*".  The strawman argument is that people run with the USE
> variable in make.conf consisting of "USE=-*" and that every package
> requires an entry in package.use WRONG! WRONG! WRONG!  That is a braindead
> approach.  The way I recommend doing it is...
>
> USE="-* fu bar blah blah blah"
>
> ...where commonly-used flags are included in USE.  My rule-of-thumb is
>
> Given that
> * not including a flag in USE requires X entries adding it in package.use
> * including a flag in USE requires Y entries negating it in package.use
>
> If ( X > Y ) then
>    include the the flag in USE
> else
>    do not include the the flag in USE
> end if
>
>   I effectively "build my own profile" rather than depend on multiple
> levels of inheritance.  My current desktop runs with the following USE
> flags...
>
> USE="X apng bindist ffmpeg jpeg opengl png szip truetype x264 x265 xorg threads webp -acl -berkdb -caps -cracklib -crypt -filecaps -gallium -gdbm -graphite -gstreamer -iconv -introspection -ipc -iptables -ipv6 -libav -llvm -manpager -nls -openmp -pam -pch -sendmail -tcpd -udev -unicode -xinerama"
>
>   Note all the negative flags.  I'll try installing uclibc to a laptop
> one of these days.  I figure that it'll probably have a shorter USE line
> if I start USE with "-*", and I will not have a larger package.use file.

+1

I've used Gentoo since 2004. I started down the minimal flag path, first 
building iptables-based firewalls on gentoo. So that would be a 
(minimal)base+iptables profile. My historical experience is that flag 
negation has been a "dirty function" over the years; i.e. not consistent
sometimes, across time. That has resulted in a variety of flag negation 
strategies to "tweek" the final results, seemingly more of an art form
with hidden tricks, and a robust (documented) semantic. Most hard to 
track down problems were in the actual packages (ebuild) as we have 
danced across EAPI standards all the way back to no EAPI standards and a 
weak complement of documentation.

This happened because of 'package creep' or just needing/wanting to add 
more and more codes to the firewalls. So now, my firewalls range from 
truly minimal, all the way to enhancements that supercede suricata. So 
imagine flags are a giant 'sparse matrix' that  I need to 'mollify' 
individually periodically, then run CI on that complete-set of packages, 
and then test against automated attack vectors.


With CI, in a stage-4 install, we minimalist could test the our 
collective of (minimized flag) packages and do our own CI. Even perhaps
sharing the result of our CI testing of such minimized systems when a 
gentoo mechanism is available that can handle such massive amounts of 
data. I proposed this (CI-stage-4) a while back in a gentoo-dev thread 
and so here we are, again. Granted, this in-house gentoo-CI work was not 
ready for such wider usage, when I last looked, but it will go a long 
way in providing a robust tool for minimalist. Many are getting into the 
minimalist systems, for security reasons too.

My needs, on the surface, may(maynot) appear to diverge from Walts, but 
I surely hope that whatever the consensus solution is, at least for now, 
it is flexible enough to coalesce all of the various minimalist into the 
same area of the profile tree. We can then share ideas and results of 
testing.

I really need to apologize to many devs. But, I'm getting very close to
having something absolutely wonderful, about 90% thanks to the gentoo
devs. I do not want to appear to be childish throwing a tantrum about
this, but, well, I just really cannot help it; as y'all can imagine?


hth,
James



^ permalink raw reply	[flat|nested] 85+ messages in thread

* Re: [gentoo-dev] Guidelines for IUSE defaults
  2017-02-03 13:43                     ` Michael Orlitzky
  2017-02-03 15:30                       ` Ian Stakenvicius
@ 2017-02-03 18:33                       ` Patrick McLean
  2017-02-03 19:53                         ` Michael Orlitzky
  1 sibling, 1 reply; 85+ messages in thread
From: Patrick McLean @ 2017-02-03 18:33 UTC (permalink / raw
  To: Michael Orlitzky; +Cc: gentoo-dev

On Fri, 3 Feb 2017 08:43:50 -0500
Michael Orlitzky <mjo@gentoo.org> wrote:

> On 02/03/2017 08:21 AM, Ian Stakenvicius wrote:
> >>
> >> How about rather changing our defaults to satisfy the minimalists
> >> who don't mind drastically reduced functionality and usability in
> >> pursuit of "minimalism" we just strive to make USE="-*" mostly
> >> usable, so the minimalists can get what they want, while still
> >> having sane defaults. 
> > 
> > I'm in favour of this too -- I know we don't "officially" support
> > USE="-*" but I think we should still strive to make it work with
> > minimal effort to end-users -- that effort being mainly setting
> > whatever is necessary for REQUIRED_USE resolution.
> >   
> 
> It will never be easy, because USE="-*" overrides your profile. What
> people want is a way to have USE="-*" apply between the base profile
> and the one that they select.
> 
> This is all easily fixed by creating a new profile one-level above
> base where developers can put their favorite USE flags:
> 
>   1. We create a new empty profile called "penultimate" inheriting
>      from base.
> 
>   2. Update the profiles that inherit from base to inherit from
>      penultimate.
> 
>   3. Move every upstream and maintainer-pet IUSE default into the
>      penultimate profile.
> 
>   4. Make it policy that IUSE defaults should only be used for
>      critical flags and REQUIRED_USE persuasion.
> 
>   5. Now we can create embedded, hardened, etc. profiles that inherit
>      from base and get a minimal working set of USE flags.
> 

We might as well go back to before IUSE defaults then. Part of the
advantage of IUSE defaults is maintainers don't all have to fiddle with
the profiles, everything can be self-contained in the ebuild. This
drastically complicates maintenance, having two locations to track and
change rather than just one.

I don't know that I would agree that making an absolutely "minimal"
build as easy as possible is something that most people want
(especially if it makes maintainership more complicated for a
significant number of packages). I suspect that there is a small subset
of people interested in this, and perhaps those people could maintain a
"minimal" profile that unsets IUSE defaults.

Also, I would just point out that the particular IUSE default that
you objected to in your original email does not really affect this
"minimalist" ideal that you seem to hold. The "hpn" USE flag on
openssh does not actually pull in any extra dependencies, it just
adds some optimizations to the network code to make it faster.


^ permalink raw reply	[flat|nested] 85+ messages in thread

* Re: [gentoo-dev] Guidelines for IUSE defaults
  2017-02-03 17:39                 ` james
@ 2017-02-03 19:01                   ` james
  0 siblings, 0 replies; 85+ messages in thread
From: james @ 2017-02-03 19:01 UTC (permalink / raw
  To: gentoo-dev

On 02/03/2017 12:39 PM, james wrote:

>  So imagine flags are a giant 'sparse matrix' that  I need to 'mollify'
> individually periodically, then run CI on that complete-set of packages,
> and then test against automated attack vectors.


So, were we to want to 'enhance' flag representation from a binary
tree form to a sparse matrix, there are many more robust things
we can do. For  those not aware of sparse matrix benefits, they 
basically provide for streamlined solving of large complex problems,
buy using special (matrix tricks) mathematical techniques to reduce
the full, valid set of parameters, into very small sets of smaller 
problems. IMO, very applicable to CI and flag set testing. These sorts 
of theories are trivial to test on minimized systems (huge shout out to 
Walt, as the king of the minimizers!).


For starters, I suggest the package listing (i.e.) the future complete
listing of gentoo packages down the 'Y' (left) axis and the actual flag 
status along the (top) X axis. Left Margin and Top margin 
representations allow the (sub)matrix to be manually viewed as a typical 
2-D table, very convenient. First we can alphabetize this 2-D flag 
matrix for a baseline (base profile) reference matrix.

But, once you start thinking about it, recalling your grammar school 
matrix algebra class, you realized that grouping flags by their myriad 
of heuristical properties, you realize that the aggregate effect of a 
flag is not binary at all, but more akin to a 'fuzzy logic' function. 
For example, cluster up a group of packagers inside the sparse matrix 
that all have the same flag, but it has different meanings, slightly per 
package. Turn that flag (on) for all packages and it has a "staccato" 
effect on the system as a whole. Turn that flag off and it is 
null-effect (at least theoretically). This is how we currently discern 
flag setting meanings, but by manually bumbling around in the dark.


Now, any number of flag activation, per package of that flag may or may 
not have secondary (tertiary etc; kinda  line harmonics on a LaPlace
or Z/s transform) effects on the system as a whole. WE as a community, 
have been ad-hoc tweaking flags and noting the effects, in an 
inconsistent manner, with only anecdotal means to share the result
of those intrinsic flag settings. Alchemy 2,000 years ago was almost 
identical to how we (today) analyze flag effects. Grouping all the 
packages with a given flag, for CI studies allow for row reduction in 
the sparse matrix of flags, as CI runs are amassed into a larger 
collective of heuristical interpretations of such specific flag groupings.


Or that is my latest treaty_proposal, on how to filter a particular 
collection of flag settings and installed packages. I am open to other 
ideas too, as well as traditional regression testing in a hybrid model.


Ultimate flexibility in the profile/flag tree, greatly simplifies the
automation of CI testing and automated results interpretations, imo. So 
hopefully I have sufficiently explained my pathway forward, what I need, 
and how these seemingly disparate issues, are all really just moving 
parts of a much larger (system) need.


At the very least a 100% flexible flag settings/negation, via a profile 
tree and other mechanisms, will not hinder the formation of matrix 
representations of flag configuration sets, which are keenly needed to 
draw reasonable automated conclusions from CI, at least related to flag 
settings and secondary (inter-intra) flag setting interactions.


hth,
James



^ permalink raw reply	[flat|nested] 85+ messages in thread

* Re: [gentoo-dev] Guidelines for IUSE defaults
  2017-02-03 15:30                       ` Ian Stakenvicius
@ 2017-02-03 19:37                         ` Michael Orlitzky
  2017-02-04  0:59                           ` Ian Stakenvicius
  0 siblings, 1 reply; 85+ messages in thread
From: Michael Orlitzky @ 2017-02-03 19:37 UTC (permalink / raw
  To: gentoo-dev

On 02/03/2017 10:30 AM, Ian Stakenvicius wrote:
> 
> ok you lost me.  Could you provide an explicit example of what you
> would want to see enabled in the profile (while everything else is
> disabled) that you don't get when USE="-*" is set?

USE="hardened pax_kernel ..."

> 
> It's sounding more and more like you just want to be able to turn off
> all IUSE defaults, and you can effectively do that by changing the USE
> order can't you?

I don't want to turn off all IUSE defaults. Since we have no policy on
what IUSE defaults should be used for, half of them are important, and
the other half are junk. I don't want to disable the ones that are
critical for the package to function, and I don't want to disable the
ones that satisfy an (otherwise unsatisfied) REQUIRED_USE constraint.



^ permalink raw reply	[flat|nested] 85+ messages in thread

* Re: [gentoo-dev] Guidelines for IUSE defaults
  2017-02-03 18:33                       ` Patrick McLean
@ 2017-02-03 19:53                         ` Michael Orlitzky
  2017-02-03 22:09                           ` William L. Thomson Jr.
  0 siblings, 1 reply; 85+ messages in thread
From: Michael Orlitzky @ 2017-02-03 19:53 UTC (permalink / raw
  To: gentoo-dev

On 02/03/2017 01:33 PM, Patrick McLean wrote:
> 
> We might as well go back to before IUSE defaults then. Part of the
> advantage of IUSE defaults is maintainers don't all have to fiddle with
> the profiles, everything can be self-contained in the ebuild. This
> drastically complicates maintenance, having two locations to track and
> change rather than just one.

You still retain the benefit for IUSE defaults that actually belong in
the base profile, just not for upstream defaults or the ones that you
personally prefer.


> I suspect that there is a small subset
> of people interested in this, and perhaps those people could maintain a
> "minimal" profile that unsets IUSE defaults.

Then every IUSE default gets recorded twice: once when the maintainer
puts it in the ebuild, and once when I add it (negated) to the minimal
profile. That's a bad design even if we pretend that I can solve the
problem of tracking every IUSE change in the tree.


> Also, I would just point out that the particular IUSE default that
> you objected to in your original email does not really affect this
> "minimalist" ideal that you seem to hold. The "hpn" USE flag on
> openssh does not actually pull in any extra dependencies, it just
> adds some optimizations to the network code to make it faster.
> 

Yeah, that. OpenSSH is probably the most security-critical package on
our systems. OpenSSH is maintained upstream by a talented team of
security-conscious people. The HPN patch is,

  a) a third-party patch...
  b) that has been rejected by the talented security-conscious team...
  c) and is useless for most people.

So why are we deciding for our users that they must have it?



^ permalink raw reply	[flat|nested] 85+ messages in thread

* Re: [gentoo-dev] Guidelines for IUSE defaults
  2017-02-03 19:53                         ` Michael Orlitzky
@ 2017-02-03 22:09                           ` William L. Thomson Jr.
  2017-02-09 20:18                             ` Daniel Campbell
  0 siblings, 1 reply; 85+ messages in thread
From: William L. Thomson Jr. @ 2017-02-03 22:09 UTC (permalink / raw
  To: gentoo-dev

[-- Attachment #1: Type: text/plain, Size: 1603 bytes --]

On Friday, February 3, 2017 2:53:59 PM EST Michael Orlitzky wrote:
> On 02/03/2017 01:33 PM, Patrick McLean wrote:
> > We might as well go back to before IUSE defaults then. Part of the
> > advantage of IUSE defaults is maintainers don't all have to fiddle with
> > the profiles, everything can be self-contained in the ebuild. This
> > drastically complicates maintenance, having two locations to track and
> > change rather than just one.
> 
> You still retain the benefit for IUSE defaults that actually belong in
> the base profile, just not for upstream defaults or the ones that you
> personally prefer.

That is a side effect, as it is more about the package maintainer choosing the 
defaults. They are not messing with profiles. That base ends up with it is 
indirect. Otherwise IUSE default flags would have to be per profile rather than 
in the package. Which would create more work for package maintainers.

> > I suspect that there is a small subset
> > of people interested in this, and perhaps those people could maintain a
> > "minimal" profile that unsets IUSE defaults.
> 
> Then every IUSE default gets recorded twice: once when the maintainer
> puts it in the ebuild, and once when I add it (negated) to the minimal
> profile. That's a bad design even if we pretend that I can solve the
> problem of tracking every IUSE change in the tree.

Sorry if its been suggested, I haven't followed every comment. What about some 
global env variable that could override all default IUSE. That can set in 
base, and set what ever minimal IUSE flags that are needed.

-- 
William L. Thomson Jr.

[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 195 bytes --]

^ permalink raw reply	[flat|nested] 85+ messages in thread

* Re: [gentoo-dev] Guidelines for IUSE defaults
  2017-02-03  0:01               ` Gordon Pettey
@ 2017-02-04  0:34                 ` Kent Fredric
  0 siblings, 0 replies; 85+ messages in thread
From: Kent Fredric @ 2017-02-04  0:34 UTC (permalink / raw
  To: gentoo-dev

[-- Attachment #1: Type: text/plain, Size: 7441 bytes --]

On Thu, 2 Feb 2017 18:01:54 -0600
Gordon Pettey <petteyg359@gmail.com> wrote:

> If you want to keep this kind of thing in the ebuilds, IUSE="+blah" doesn't
> allow any granularity. Another variable USE_PROFILE should be added
> analogue to DEPENDS:
> IUSE="gnome-keyring gtk-theme kwallet pulseuadio qt-theme
> annoyingUpstreamDefault"
> USE_PROFILE="
> desktop? ( pulseaudio )
> gtk? ( gtk-theme )
> gnome? ( @gtk gnome-keyring)
> kde? ( @qt kwallet )
> qt? ( qt-theme )
> upstream? ( annoyingUpstreamDefault )
> "

This is the way I'd suggest going as well. Mostly, because needless double-accounting
by communicating this same information to a global profile seems like creating
work without benefit.

I'd probably suggest something like this, but with a restriction that every
"foo?" on the left hand side being a defined global term.

Especially considering that USE="-*" doesn't necessarily give you "less dependencies",
in the case of dev-util/pkgconfig, USE="-*" aligns with the existing (default) mechanic
of USE="-internal-glib", and so a "minimal system" would either 

a. Prefer dev-util/pkgconf which doesn't require glib at all ( bug #606260 [1] )

b. Prefer USE="internal-glib"

Clearly given bug #606260, our current mechanism of following upstream defaults
is not ideal for minimal systems, even though its fine for 99.99% of users.

Hence, I'd prefer something akin to:

virtual/pkgconfig: 

RDEPEND="
     profile:minimal? ( 
	|| ( dev-util/pkgconf dev-util/pkgconfig[internal-glib] dev-util/pkgconfig )
     )
     +profile:upstream? (
        || ( dev-util/pkgconfig dev-util/pkgconf )
     )
"

Granted here I'm stepping slightly outside the conversation of USE defaults, because
this is a related system where the concepts of defaults are present, but are instead
regulated by implicit controls based on what the user has already decided to install.

And this example suggested usage is a bit dodgy because it could be abused by people
using profiles instead of useflags to control behaviour.

However:

IUSE="minimal"
IUSE_PROFILES="
    minimal? ( minimal )
"
RDEPEND="
     minimal? ( 
	|| ( dev-util/pkgconf dev-util/pkgconfig[internal-glib] dev-util/pkgconfig )
     )
     !minimal? (
        || ( dev-util/pkgconfig dev-util/pkgconf )
     )
"

Would be less abusey.

Also, this approach in general means instead of needing repoman to compute the interaction
of <Profile X> x <Profile Y> for all(@profiles), it only needs to compute the interactions
for Profile X x Profile Y for union(x.profiles y.profiles)

( Though personally I don't think repoman needs to compute anything for defaults,
  I just saw somebody else mention this in a different part of this thread and it confused
  me. However, it *could* be useful to be able to ensure cohesion within a single chosen
  profile name, being able to state "If you set your profile to X and don't change anything
  in package.use, everything that has profile X will be installable as-is" )

And this of course brings into observation my favourite negative-useflag,
for which USE="-*" will have the opposite effect to that you intend.

__ SIMPLIFIED __ 

# May contain only the possible useflags, not setting defaults 
IUSE=""

# A list of "profilename ? ( assumed defaulted on flags )"
# where "profilename" must be a defined profile ID
# "profilename" can have a "+" to indicate it is the default profile
# if none of the others listed in IUSE_PROFILES matches a user description

IUSE_PROFILES="" 


> @ is already used for sets, so "some other use_profile's set of defined
> flags" seems reasonable. It should be additive only, so no +- prefixes
> needed (or allowed). If a package is emerged without any USE_PROFILE set,
> you might einfo "This package supports was emerged with no use profile. It
> supports blah1, blah2, and blah3. Upstream recommends blah2." USE_PROFILE
> should never have any default selected by an ebuild; if a flag is required
> to build, is shouldn't be a flag. You get independent behavior per package
> rather than listing every single package that ever existed in
> profile/package.use, package behavior actually being with the package
> instead of global profiles, and you get rid of the mess of uncustomizable
> IUSE="+something" everywhere that makes people like me tend to start off
> every new Gentoo install with echo "USE=\"-*\"" >> /etc/portage/make.conf.
> Just need to come up with sane naming convention for common possibilities
> like kde, gnome, and generic desktop.

Personally, I think encouraging people to set profiles on a per-package level
fights the cause of this feature in ways that should be governed by USE flags.

The real utility of profile-governed defaults is that you should select a given
profile, and *everything* should work out of the box *without* needing to change
use flags, and repoman should compute how "my profiles defaults expanded into dependencies"
would introduce a need to change USE flags on dependencies, and should raise
warnings when this happens.

If  A and B both have 2 profiles each, and depend on a third package C,
which has only 0 or 1 profiles (ie: "the only profile is a default profile"),
then as long as both A and B's profiles don't require changes in C, this should
be "legal"

C could enhance things later by adding an additional profile more in line with
A and B, changing the defaults to get closer to the ideals that profile defines.

And if A and B have profiles that necessitate C changing use flags, that should
cause repoman to error until a suitable profile is added to C that matches
 A and B.


Though yes, I understand I'm kinda thinking of a different way to implement
mixin profiles without necessitating a lot of global state to regulate it, so
mgorny probably hates me.

> 
> If you want upstream, USE_PROFILE="upstream". If Gentoo as an organization
> wants that to be the "friendly to new user" standard, put
> USE_PROFILE="upstream" in the stage3 make.conf, where those of us who want
> to can simply remove or change it instead of having to nuke everything with
> USE="-*". You can still use e.g. RUBY_TARGETS="+ruby21" in an ebuild if you
> want a default for things that really require an at-least-one-of choice.
> 
> Then instead of default/linux/amd64/13.0/desktop/kde listing any USE flags
> itself, it just sets required USE_PROFILE and lets the packages do their
> thing.

The only thing left that leaves me in a state of "ugh, this could be ugly"
is how application of multiple profile-use should be handled, if we go that way.

Naturally some packages A and B will have different profiles, and so you'll
want to pick 2 ... 

I guess this is where 'additive only' is helpful to an extent, but this
opens complexity city where additive unioning of multiple profiles
in a single package end up introducing a REQUIRED_USE mutual-exclusion,
thwarting the incentive for profiles entirely.

Unless ... 


IUSE_PROFILES="
   desktop & upstream  &   !gtk  & !gnome    -> ( qt )
   desktop & upstream  & (  gtk  |  gnome )  -> ( gtk qt )
   desktop & !upstream & (  gtk  |  gnome )  -> ( gtk )
" 

Ugh. No. This is all horrible. My head hurts just thinking about it.

Freedom of Choice is freedom to suffer in new and innovative ways.

1: https://bugs.gentoo.org/606260

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 85+ messages in thread

* Re: [gentoo-dev] Guidelines for IUSE defaults
  2017-02-03 19:37                         ` Michael Orlitzky
@ 2017-02-04  0:59                           ` Ian Stakenvicius
  2017-02-04  1:07                             ` Patrick McLean
  0 siblings, 1 reply; 85+ messages in thread
From: Ian Stakenvicius @ 2017-02-04  0:59 UTC (permalink / raw
  To: gentoo-dev


[-- Attachment #1.1: Type: text/plain, Size: 1562 bytes --]

On 03/02/17 02:37 PM, Michael Orlitzky wrote:
> On 02/03/2017 10:30 AM, Ian Stakenvicius wrote:
>>
>> ok you lost me.  Could you provide an explicit example of what you
>> would want to see enabled in the profile (while everything else is
>> disabled) that you don't get when USE="-*" is set?
> 
> USE="hardened pax_kernel ..."
> 

ok, so global flags that are never modified via IUSE defaults.  It
still looks to me like all you need to do to get what you want is swap
the order of 'conf' and 'defaults' in USE_ORDER? (man make.conf)

> 
> I don't want to turn off all IUSE defaults. Since we have no policy on
> what IUSE defaults should be used for, half of them are important, and
> the other half are junk. I don't want to disable the ones that are
> critical for the package to function, and I don't want to disable the
> ones that satisfy an (otherwise unsatisfied) REQUIRED_USE constraint.
> 

And herein lies the crux.  "Junk" is your definition, but it's not
necessarily the maintainer's definition.  "Critical for the package to
function" is entirely dependent on what you expect to use the package
for.  If you want to disable everything optional then USE="-*" will do
that, and really all you should be losing is the ability to have
REQUIRED_USE auto-resolve based on the IUSE defaults that are set.
However, even in that case, it seems likely that you may well want to
use a different option to resolve a REQUIRED_USE conflict to ensure
your minimalist install than is the default that the maintainer provided.




[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 195 bytes --]

^ permalink raw reply	[flat|nested] 85+ messages in thread

* Re: [gentoo-dev] Guidelines for IUSE defaults
  2017-02-04  0:59                           ` Ian Stakenvicius
@ 2017-02-04  1:07                             ` Patrick McLean
  2017-02-04 14:57                               ` Michael Orlitzky
  0 siblings, 1 reply; 85+ messages in thread
From: Patrick McLean @ 2017-02-04  1:07 UTC (permalink / raw
  Cc: gentoo-dev

On Fri, 3 Feb 2017 19:59:34 -0500
Ian Stakenvicius <axs@gentoo.org> wrote:

> On 03/02/17 02:37 PM, Michael Orlitzky wrote:
> > On 02/03/2017 10:30 AM, Ian Stakenvicius wrote:  
> >>
> >> ok you lost me.  Could you provide an explicit example of what you
> >> would want to see enabled in the profile (while everything else is
> >> disabled) that you don't get when USE="-*" is set?  
> > 
> > USE="hardened pax_kernel ..."
> >   
> 
> ok, so global flags that are never modified via IUSE defaults.  It
> still looks to me like all you need to do to get what you want is swap
> the order of 'conf' and 'defaults' in USE_ORDER? (man make.conf)
> 
> > 
> > I don't want to turn off all IUSE defaults. Since we have no policy
> > on what IUSE defaults should be used for, half of them are
> > important, and the other half are junk. I don't want to disable the
> > ones that are critical for the package to function, and I don't
> > want to disable the ones that satisfy an (otherwise unsatisfied)
> > REQUIRED_USE constraint. 
> 
> And herein lies the crux.  "Junk" is your definition, but it's not
> necessarily the maintainer's definition.  "Critical for the package to
> function" is entirely dependent on what you expect to use the package
> for.  If you want to disable everything optional then USE="-*" will do
> that, and really all you should be losing is the ability to have
> REQUIRED_USE auto-resolve based on the IUSE defaults that are set.
> However, even in that case, it seems likely that you may well want to
> use a different option to resolve a REQUIRED_USE conflict to ensure
> your minimalist install than is the default that the maintainer
> provided.
> 

I think the current policy of "maintainer's discretion" is probably the
only reasonable way to approach IUSE defaults. Attempting to dictate
some policy based on differing definitions of what is acceptable or not
is just a path to a lot of pain for very little gain. I don't think
that there are a very large proportion of people who want some sort of
"minimal" system, sacrificing basic, expected functionality (as say
"-readline" on app-shells/bash would do) in the default configuration
.
Leaving the IUSE defaults up to the maintainer allows said maintainer
to select what they consider reasonable defaults.


^ permalink raw reply	[flat|nested] 85+ messages in thread

* Re: [gentoo-dev] Guidelines for IUSE defaults
  2017-02-04  1:07                             ` Patrick McLean
@ 2017-02-04 14:57                               ` Michael Orlitzky
  2017-02-04 17:44                                 ` William L. Thomson Jr.
  0 siblings, 1 reply; 85+ messages in thread
From: Michael Orlitzky @ 2017-02-04 14:57 UTC (permalink / raw
  To: gentoo-dev

On 02/03/2017 08:07 PM, Patrick McLean wrote:
> 
> I think the current policy of "maintainer's discretion" is probably the
> only reasonable way to approach IUSE defaults...
> 
> Leaving the IUSE defaults up to the maintainer allows said maintainer
> to select what they consider reasonable defaults.
> 

This is the way we currently do things:

  DEFAULTS="+apples -pears +potatoes -chicken +steak +broccoli +spatula"
  FRUIT="${DEFAULTS} +pears -potatoes -steak -broccoli -spatula"
  MEAT="${DEFAULTS} -apples -potatoes +chicken -broccoli -spatula"
  VEGETABLES="${DEFAULTS} -apples -steak -spatula"
  MISC="${DEFAULTS}"

Compare with:

  DEFAULTS=""
  FRUIT="+apples +pears"
  MEAT="+chicken +steak"
  VEGETABLES="+potatoes +broccoli"
  MISC="+apples -pears +potatoes -chicken +steak +broccoli +spatula"

One of those is stupid, regardless of what you like to eat.



^ permalink raw reply	[flat|nested] 85+ messages in thread

* Re: [gentoo-dev] Guidelines for IUSE defaults
  2017-02-04 14:57                               ` Michael Orlitzky
@ 2017-02-04 17:44                                 ` William L. Thomson Jr.
  2017-02-04 18:14                                   ` Kent Fredric
  0 siblings, 1 reply; 85+ messages in thread
From: William L. Thomson Jr. @ 2017-02-04 17:44 UTC (permalink / raw
  To: gentoo-dev

[-- Attachment #1: Type: text/plain, Size: 2222 bytes --]

On Saturday, February 4, 2017 9:57:01 AM EST Michael Orlitzky wrote:
> On 02/03/2017 08:07 PM, Patrick McLean wrote:
> > I think the current policy of "maintainer's discretion" is probably the
> > only reasonable way to approach IUSE defaults...
> > 
> > Leaving the IUSE defaults up to the maintainer allows said maintainer
> > to select what they consider reasonable defaults.
> 
> This is the way we currently do things:
> 
>   DEFAULTS="+apples -pears +potatoes -chicken +steak +broccoli +spatula"
>   FRUIT="${DEFAULTS} +pears -potatoes -steak -broccoli -spatula"
>   MEAT="${DEFAULTS} -apples -potatoes +chicken -broccoli -spatula"
>   VEGETABLES="${DEFAULTS} -apples -steak -spatula"
>   MISC="${DEFAULTS}"
> 
> Compare with:
> 
>   DEFAULTS=""
>   FRUIT="+apples +pears"
>   MEAT="+chicken +steak"
>   VEGETABLES="+potatoes +broccoli"
>   MISC="+apples -pears +potatoes -chicken +steak +broccoli +spatula"
> 
> One of those is stupid, regardless of what you like to eat.

The latter is cleaner than the former, there is no disagreement there.

The question to ask is who do you want to create more work for?
People maintaining packages, or people maintaining profiles.

Essentially your saying IUSE defaults do not belong in a package, but in a 
profile. The problem is that is a hard rule to follow. What if the default 
benefits all, like in a base profile. Then it might make sense to add directly 
to ebuild than profile. But that would go against any rule/policy saying only 
add IUSE defaults to profiles. At the same time, if more than one profile needs 
that enabled by default, it is creating more work there.

While the latter is cleaner, and therefore would seem preferred. It is not 
that much effort to negate a flag in a profile. That is likely time better 
spent. Than to have package maintainers messing with profile defaults, touching 
more than one profile potentially, etc.

Its probably best to have a team, familiar with profiles managing profiles. 
Rather than every developer working with IUSE and packages. While they may be 
bloated, or uglier. There isn't really a way around, short of something that 
bypasses default flags, allowing others to be set instead.

-- 
William L. Thomson Jr.

[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 195 bytes --]

^ permalink raw reply	[flat|nested] 85+ messages in thread

* Re: [gentoo-dev] Guidelines for IUSE defaults
  2017-02-04 17:44                                 ` William L. Thomson Jr.
@ 2017-02-04 18:14                                   ` Kent Fredric
  2017-02-04 21:05                                     ` William L. Thomson Jr.
  0 siblings, 1 reply; 85+ messages in thread
From: Kent Fredric @ 2017-02-04 18:14 UTC (permalink / raw
  To: gentoo-dev

[-- Attachment #1: Type: text/plain, Size: 2988 bytes --]

On Sat, 04 Feb 2017 12:44:38 -0500
"William L. Thomson Jr." <wlt-ml@o-sinc.com> wrote:

> The question to ask is who do you want to create more work for?
> People maintaining packages, or people maintaining profiles.

I would probably say "yes" to both of those, because the main objective here
is to create less work for the end user, and that burden has to be paid by somebody.

I don't think its anything that is the responsibility of either one of those
targets in isolation.
> 
> Essentially your saying IUSE defaults do not belong in a package, but in a 
> profile. The problem is that is a hard rule to follow. What if the default 
> benefits all, like in a base profile. Then it might make sense to add directly 
> to ebuild than profile. But that would go against any rule/policy saying only 
> add IUSE defaults to profiles. At the same time, if more than one profile needs 
> that enabled by default, it is creating more work there.

That's rather the problem as I see it, people are trying to see it as an "either"
situation when its rather both.

> 
> While the latter is cleaner, and therefore would seem preferred. It is not 
> that much effort to negate a flag in a profile. That is likely time better 
> spent. Than to have package maintainers messing with profile defaults, touching 
> more than one profile potentially, etc.
> 
> Its probably best to have a team, familiar with profiles managing profiles. 
> Rather than every developer working with IUSE and packages. While they may be 
> bloated, or uglier. There isn't really a way around, short of something that 
> bypasses default flags, allowing others to be set instead.

As I see it, people who manage "profiles" are essentially managing a distinct
"vision", a template of sorts of a stereotype of a specific type of end user,
concerning themselves with espousing the same interest over a wide variety of
packages.

Whereas the people who manage packages are more concerned with a more
"upstream centered" vision of things, ( where the maintainers themselves
are a kind of upstream ).

So naturally it will require some sort of negotiation, where the people
who define profiles write guidelines for how packages should fit into
those profiles, and the people who write packages should work out how
to dovetail the upstream vision of things into those specific
guidelines.

For instance, perhaps one specific profile might be the "I Just want a
kde/qt desktop of some kind, I don't care how", and thats the point of
that profile, to deliver that specific experience.

But the individual packages will still have to decide how to best
satisfy that profile, which in some cases might end up preferring qt4
instead of qt5 for instance (perhaps out of necessity)

Maintainers of individual packages have the most knowledge about how to
best deliver that specific package, but maintainers of profiles have
the best understanding of what people want to see.

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 85+ messages in thread

* Re: [gentoo-dev] Guidelines for IUSE defaults
  2017-02-04 18:14                                   ` Kent Fredric
@ 2017-02-04 21:05                                     ` William L. Thomson Jr.
  2017-02-04 22:13                                       ` Kent Fredric
  2017-02-09  2:46                                       ` Daniel Campbell
  0 siblings, 2 replies; 85+ messages in thread
From: William L. Thomson Jr. @ 2017-02-04 21:05 UTC (permalink / raw
  To: gentoo-dev

[-- Attachment #1: Type: text/plain, Size: 5020 bytes --]

On Sunday, February 5, 2017 7:14:45 AM EST Kent Fredric wrote:
> On Sat, 04 Feb 2017 12:44:38 -0500
> 
> "William L. Thomson Jr." <wlt-ml@o-sinc.com> wrote:
> > The question to ask is who do you want to create more work for?
> > People maintaining packages, or people maintaining profiles.
> 
> I would probably say "yes" to both of those, because the main objective here
> is to create less work for the end user, and that burden has to be paid by
> somebody.

Definitely needs to be developers vs end users paying the time price. Just 
increasing requirements to maintaining package can increase the entrance 
barrier. It is not like people are flocking to maintain packages as is now.

I am sure most any developer would welcome another even if they just maintain 
a single package :)

> I don't think its anything that is the responsibility of either one of those
> targets in isolation.

I would agree as I am all about working together rather than apart! That said 
I am not against teams having a particular focus, and working with others on 
their agenda.

> > Essentially your saying IUSE defaults do not belong in a package, but in a
> > profile. The problem is that is a hard rule to follow. What if the default
> > benefits all, like in a base profile. Then it might make sense to add
> > directly to ebuild than profile. But that would go against any
> > rule/policy saying only add IUSE defaults to profiles. At the same time,
> > if more than one profile needs that enabled by default, it is creating
> > more work there.
> 
> That's rather the problem as I see it, people are trying to see it as an
> "either" situation when its rather both.

It is hard to satisfy both. Both do not share the same perspective or goal.

> > While the latter is cleaner, and therefore would seem preferred. It is not
> > that much effort to negate a flag in a profile. That is likely time better
> > spent. Than to have package maintainers messing with profile defaults,
> > touching more than one profile potentially, etc.
> > 
> > Its probably best to have a team, familiar with profiles managing
> > profiles.
> > Rather than every developer working with IUSE and packages. While they may
> > be bloated, or uglier. There isn't really a way around, short of
> > something that bypasses default flags, allowing others to be set instead.
> 
> As I see it, people who manage "profiles" are essentially managing a
> distinct "vision", a template of sorts of a stereotype of a specific type
> of end user, concerning themselves with espousing the same interest over a
> wide variety of packages.

Yes, and that vision may not be shared, or even cared about by the package 
maintainer. Why should the package maintainer be burned with something that 
does not apply to them?

Seems it is the profile people who care about such. Plus profiles could be 
created without the package maintainers awareness. Or changes there in and 
they would have to be kept in the loop.

> Whereas the people who manage packages are more concerned with a more
> "upstream centered" vision of things, ( where the maintainers themselves
> are a kind of upstream ).
> 
> So naturally it will require some sort of negotiation, where the people
> who define profiles write guidelines for how packages should fit into
> those profiles, and the people who write packages should work out how
> to dovetail the upstream vision of things into those specific
> guidelines.

I agree, but I think that responsibility should fall on the profile team. They 
should contact the package maintainer and work with them on their vision. Even 
that will be taking time from the maintainer on a vision they may not share.

Putting increased requirements on the maintainers may be demotivating, and 
create other problems. New profile added they are not aware of. Now they have 
to go add IUSE defaults etc. There are a fair amount of profiles.

> For instance, perhaps one specific profile might be the "I Just want a
> kde/qt desktop of some kind, I don't care how", and thats the point of
> that profile, to deliver that specific experience.
> 
> But the individual packages will still have to decide how to best
> satisfy that profile, which in some cases might end up preferring qt4
> instead of qt5 for instance (perhaps out of necessity)
> 
> Maintainers of individual packages have the most knowledge about how to
> best deliver that specific package, but maintainers of profiles have
> the best understanding of what people want to see.

Yes has to be a balance. I do not believe package maintainers will always 
share the vision of the profiles.

Said another way, if defaults were sane enough, would profiles be necessary?

Profiles are kind of an extra added benefit to the end user, and those making 
the profiles. Mostly a benefit for the end user. There isn't much benefit to the 
package maintainer. I could not really see anything that would give them 
reason to spend their time on something that would not benefit them.

-- 
William L. Thomson Jr.

[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 195 bytes --]

^ permalink raw reply	[flat|nested] 85+ messages in thread

* Re: [gentoo-dev] Guidelines for IUSE defaults
  2017-02-04 21:05                                     ` William L. Thomson Jr.
@ 2017-02-04 22:13                                       ` Kent Fredric
  2017-02-09  2:46                                       ` Daniel Campbell
  1 sibling, 0 replies; 85+ messages in thread
From: Kent Fredric @ 2017-02-04 22:13 UTC (permalink / raw
  To: gentoo-dev

[-- Attachment #1: Type: text/plain, Size: 3193 bytes --]

On Sat, 04 Feb 2017 16:05:50 -0500
"William L. Thomson Jr." <wlt-ml@o-sinc.com> wrote:

> Putting increased requirements on the maintainers may be demotivating, and 
> create other problems. New profile added they are not aware of. Now they have 
> to go add IUSE defaults etc. There are a fair amount of profiles.
> 
> > For instance, perhaps one specific profile might be the "I Just want a
> > kde/qt desktop of some kind, I don't care how", and thats the point of
> > that profile, to deliver that specific experience.
> > 
> > But the individual packages will still have to decide how to best
> > satisfy that profile, which in some cases might end up preferring qt4
> > instead of qt5 for instance (perhaps out of necessity)
> > 
> > Maintainers of individual packages have the most knowledge about how to
> > best deliver that specific package, but maintainers of profiles have
> > the best understanding of what people want to see.  
> 
> Yes has to be a balance. I do not believe package maintainers will always 
> share the vision of the profiles.
> 
> Said another way, if defaults were sane enough, would profiles be necessary?
> 
> Profiles are kind of an extra added benefit to the end user, and those making 
> the profiles. Mostly a benefit for the end user. There isn't much benefit to the 
> package maintainer. I could not really see anything that would give them 
> reason to spend their time on something that would not benefit them.

I think a key concept here would be the thoughts that:

a. By default, all packages are simply part of the "default profile", which doesn't enforce
any automagical constraints.

and that 

b. These kinds of profiles should not default to being universally inclusive, and instead
rely on a concept of "package membership", where constraints of "automagically work"
is only required for included packages and their dependencies.

Packages that are not part of any profile and are not dependencies of any profile
are in the Wild West of packages, and this is OK.

And it is part of the profile maintainers job to add packages to that profile,
while negotiating with the maintainer of the package how to make it work.

That way, only once a package has been explicitly added to a profile does the maintainer
of the package have to exercise more concern about it.

And perhaps we can have rough guidelines for "Care about this profile" and
"Don't care about this profile" like we informally do with arch-profiles.

( Where the "don't care about" implies "Care if you want to, but if you don't, the profile
maintainer has to keep things working if you break them )

This approach means the workload of profile-integration doesn't scale exponentially over portage
as an X-packages * Y-profiles equation, and it only scales as fast as each profile necessitates it.

That doesn't mean users can't install things outside the profile if they opt for a certain profile.

It just means that if a user selects a profile, everything within that profiles inherent subgraph
will be cohesive.

But they will still have to get their adult-pants on if they want to stray from that subgraph.


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 85+ messages in thread

* Re: [gentoo-dev] Guidelines for IUSE defaults
  2017-02-02 14:11 [gentoo-dev] Guidelines for IUSE defaults Michael Orlitzky
                   ` (3 preceding siblings ...)
  2017-02-03  2:00 ` Sam Jorna
@ 2017-02-07  7:52 ` Ulrich Mueller
  2017-02-07  8:20   ` Kent Fredric
  2017-02-07 13:27   ` Michael Orlitzky
  4 siblings, 2 replies; 85+ messages in thread
From: Ulrich Mueller @ 2017-02-07  7:52 UTC (permalink / raw
  To: gentoo-dev

[-- Attachment #1: Type: text/plain, Size: 1605 bytes --]

>>>>> On Thu, 02 Feb 2017, Michael Orlitzky wrote:

> 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.

[Late to the topic, but two devs have asked me on IRC that I should
post this, in order to have it documented as part of the thread.]

I see no point in discouraging IUSE defaults, given that they are
purely advisory for the package manager:

"[...] any use flag name in IUSE may be prefixed by at most one of a
plus or a minus sign. If such a prefix is present, the package manager
may use it as a suggestion as to the default value of the use flag if
no other configuration overrides it." [1]

Portage can be made to ignore IUSE defaults by omitting "pkginternal"
from USE_ORDER, i.e. by adding the following line to make.conf [2]:

#USE_ORDER="env:pkg:conf:defaults:pkginternal:repo:env.d"
USE_ORDER="env:pkg:conf:defaults:repo:env.d"

One could even think about adding this to a future minimal profile.

Ulrich

[1] https://projects.gentoo.org/pms/6/pms.html#x1-670007.3
[2] make.conf(5) (in particular, note the warning for USE_ORDER)

[-- Attachment #2: Type: application/pgp-signature, Size: 490 bytes --]

^ permalink raw reply	[flat|nested] 85+ messages in thread

* Re: [gentoo-dev] Guidelines for IUSE defaults
  2017-02-07  7:52 ` Ulrich Mueller
@ 2017-02-07  8:20   ` Kent Fredric
  2017-02-07  9:28     ` Michał Górny
  2017-02-07 13:27   ` Michael Orlitzky
  1 sibling, 1 reply; 85+ messages in thread
From: Kent Fredric @ 2017-02-07  8:20 UTC (permalink / raw
  To: gentoo-dev

[-- Attachment #1: Type: text/plain, Size: 1154 bytes --]

On Tue, 7 Feb 2017 08:52:06 +0100
Ulrich Mueller <ulm@gentoo.org> wrote:

> I see no point in discouraging IUSE defaults, given that they are
> purely advisory for the package manager:
> 
> "[...] any use flag name in IUSE may be prefixed by at most one of a
> plus or a minus sign. If such a prefix is present, the package manager
> may use it as a suggestion as to the default value of the use flag if
> no other configuration overrides it." [1]

That's useful to know, but the problem as I see it is clearly greater
than just USE defaults and Portages application of them:

Its the complexity that following USE flags implies, in two places:

1. REQUIRED_USE satisfaction 

2. DEPEND=" use? ( .... )  !use? ( .... )" interactions across multiple
packages.

So while it might be *useful* to know you can ignore the defaults in IUSE
it doesn't solve the real problem of portage presenting lots of conflicting
options to a user which the user may not care about having to solve.

So as I see it, this issue is more about asking how we can use IUSE defaults
in a way that simplifies end users life, instead of making it harder.

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 85+ messages in thread

* Re: [gentoo-dev] Guidelines for IUSE defaults
  2017-02-07  8:20   ` Kent Fredric
@ 2017-02-07  9:28     ` Michał Górny
  0 siblings, 0 replies; 85+ messages in thread
From: Michał Górny @ 2017-02-07  9:28 UTC (permalink / raw
  To: gentoo-dev

[-- Attachment #1: Type: text/plain, Size: 944 bytes --]

W dniu 07.02.2017, wto o godzinie 21∶20 +1300, użytkownik Kent Fredric
napisał:
> On Tue, 7 Feb 2017 08:52:06 +0100
> Ulrich Mueller <ulm@gentoo.org> wrote:
> 
> > I see no point in discouraging IUSE defaults, given that they are
> > purely advisory for the package manager:
> > 
> > "[...] any use flag name in IUSE may be prefixed by at most one of a
> > plus or a minus sign. If such a prefix is present, the package manager
> > may use it as a suggestion as to the default value of the use flag if
> > no other configuration overrides it." [1]
> 
> That's useful to know, but the problem as I see it is clearly greater
> than just USE defaults and Portages application of them:
> 

The problem is that some people believe they can solve all problems
Gentoo could ever have via more discussion on the mailing lists. They
just need more discussion to invent some more problems.

-- 
Best regards,
Michał Górny

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 963 bytes --]

^ permalink raw reply	[flat|nested] 85+ messages in thread

* Re: [gentoo-dev] Guidelines for IUSE defaults
  2017-02-07  7:52 ` Ulrich Mueller
  2017-02-07  8:20   ` Kent Fredric
@ 2017-02-07 13:27   ` Michael Orlitzky
  2017-02-07 15:14     ` Ian Stakenvicius
  1 sibling, 1 reply; 85+ messages in thread
From: Michael Orlitzky @ 2017-02-07 13:27 UTC (permalink / raw
  To: gentoo-dev

On 02/07/2017 02:52 AM, Ulrich Mueller wrote:
> 
> I see no point in discouraging IUSE defaults, given that they are
> purely advisory for the package manager:
> 
> "[...] any use flag name in IUSE may be prefixed by at most one of a
> plus or a minus sign. If such a prefix is present, the package manager
> may use it as a suggestion as to the default value of the use flag if
> no other configuration overrides it." [1]
> 
> Portage can be made to ignore IUSE defaults by omitting "pkginternal"
> from USE_ORDER, i.e. by adding the following line to make.conf [2]:
> 
> #USE_ORDER="env:pkg:conf:defaults:pkginternal:repo:env.d"
> USE_ORDER="env:pkg:conf:defaults:repo:env.d"
> 
> One could even think about adding this to a future minimal profile.
> 

The thread wasn't about discouraging IUSE defaults, rather to decide
when they are appropriate. You cannot omit "pkginternal" from USE_ORDER,
because you will break all of the packages whose defaults are either
critical to the package, or prevent a REQUIRED_USE conflict.

If that means IUSE defaults are the wrong solution to those problems,
then it would be beneficial to have some "Guidelines for IUSE defaults"
so that developers solve the problems correctly.



^ permalink raw reply	[flat|nested] 85+ messages in thread

* Re: [gentoo-dev] Guidelines for IUSE defaults
  2017-02-07 13:27   ` Michael Orlitzky
@ 2017-02-07 15:14     ` Ian Stakenvicius
  2017-02-07 15:47       ` Ulrich Mueller
  2017-02-07 17:00       ` Rich Freeman
  0 siblings, 2 replies; 85+ messages in thread
From: Ian Stakenvicius @ 2017-02-07 15:14 UTC (permalink / raw
  To: gentoo-dev


[-- Attachment #1.1: Type: text/plain, Size: 724 bytes --]

On 07/02/17 08:27 AM, Michael Orlitzky wrote:
> 
> The thread wasn't about discouraging IUSE defaults, rather to decide
> when they are appropriate. You cannot omit "pkginternal" from USE_ORDER,
> because you will break all of the packages whose defaults are either
> critical to the package, or prevent a REQUIRED_USE conflict.
> 

OK, can we all decide out of this thread, that if any package is
enabling critical functionality via IUSE-defaults (or rather, IUSE
defaults alone), that this be addressed through package.use.force in
profiles OR through removal of the flag?

That at least seems like a positive first step to helping address
Michael's concerns, and should generally help all end-users.




[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 195 bytes --]

^ permalink raw reply	[flat|nested] 85+ messages in thread

* Re: [gentoo-dev] Guidelines for IUSE defaults
  2017-02-07 15:14     ` Ian Stakenvicius
@ 2017-02-07 15:47       ` Ulrich Mueller
  2017-02-07 17:00       ` Rich Freeman
  1 sibling, 0 replies; 85+ messages in thread
From: Ulrich Mueller @ 2017-02-07 15:47 UTC (permalink / raw
  To: gentoo-dev

[-- Attachment #1: Type: text/plain, Size: 1297 bytes --]

>>>>> On Tue, 7 Feb 2017, Ian Stakenvicius wrote:

> On 07/02/17 08:27 AM, Michael Orlitzky wrote:
>> 
>> The thread wasn't about discouraging IUSE defaults, rather to
>> decide when they are appropriate. You cannot omit "pkginternal"
>> from USE_ORDER, because you will break all of the packages whose
>> defaults are either critical to the package, or prevent a
>> REQUIRED_USE conflict.

"The package manager may use it as a suggestion" seems pretty clear.
PMS doesn't require that a package manager honours these defaults.
So if anything is broken after removing them from USE_ORDER, then it
was already broken before.

Conversely, I don't see why package maintainers shouldn't use IUSE
defaults to enable (or disable, though that is rarely used) those
flags that they deem the package's best default configuration.

> OK, can we all decide out of this thread, that if any package is
> enabling critical functionality via IUSE-defaults (or rather, IUSE
> defaults alone), that this be addressed through package.use.force in
> profiles OR through removal of the flag?

Right. Also REQUIRED_USE should be used sparingly, and only for
libraries whose reverse USE dependencies would otherwise break.
In all other cases, fall back to a reasonable default if flag settings
are incompatible.

Ulrich

[-- Attachment #2: Type: application/pgp-signature, Size: 490 bytes --]

^ permalink raw reply	[flat|nested] 85+ messages in thread

* Re: [gentoo-dev] Guidelines for IUSE defaults
  2017-02-07 15:14     ` Ian Stakenvicius
  2017-02-07 15:47       ` Ulrich Mueller
@ 2017-02-07 17:00       ` Rich Freeman
  2017-02-07 21:07         ` Ian Stakenvicius
  2017-02-08  1:24         ` Sam Jorna
  1 sibling, 2 replies; 85+ messages in thread
From: Rich Freeman @ 2017-02-07 17:00 UTC (permalink / raw
  To: gentoo-dev

On Tue, Feb 7, 2017 at 10:14 AM, Ian Stakenvicius <axs@gentoo.org> wrote:
> On 07/02/17 08:27 AM, Michael Orlitzky wrote:
>>
>> The thread wasn't about discouraging IUSE defaults, rather to decide
>> when they are appropriate. You cannot omit "pkginternal" from USE_ORDER,
>> because you will break all of the packages whose defaults are either
>> critical to the package, or prevent a REQUIRED_USE conflict.
>>
>
> OK, can we all decide out of this thread, that if any package is
> enabling critical functionality via IUSE-defaults (or rather, IUSE
> defaults alone), that this be addressed through package.use.force in
> profiles OR through removal of the flag?

No.

>
> That at least seems like a positive first step to helping address
> Michael's concerns, and should generally help all end-users.
>

It only helps users who want to manually enable every single feature
they use with an otherwise-minimal configuration.

If you want to create a minimal profile feel free, and if you want to
propose some way for everybody to have their cake and eat it too
without maintainers manually maintaining per-package flags in
profiles, that is fine as well.  However, I think your proposal to use
IUSE defaults only for REQUIRED_USE conflicts is a bad one.

-- 
Rich


^ permalink raw reply	[flat|nested] 85+ messages in thread

* Re: [gentoo-dev] Guidelines for IUSE defaults
  2017-02-07 17:00       ` Rich Freeman
@ 2017-02-07 21:07         ` Ian Stakenvicius
  2017-02-08  1:24         ` Sam Jorna
  1 sibling, 0 replies; 85+ messages in thread
From: Ian Stakenvicius @ 2017-02-07 21:07 UTC (permalink / raw
  To: gentoo-dev


[-- Attachment #1.1: Type: text/plain, Size: 1685 bytes --]

On 07/02/17 12:00 PM, Rich Freeman wrote:
> On Tue, Feb 7, 2017 at 10:14 AM, Ian Stakenvicius <axs@gentoo.org> wrote:
>> On 07/02/17 08:27 AM, Michael Orlitzky wrote:
>>>
>>> The thread wasn't about discouraging IUSE defaults, rather to decide
>>> when they are appropriate. You cannot omit "pkginternal" from USE_ORDER,
>>> because you will break all of the packages whose defaults are either
>>> critical to the package, or prevent a REQUIRED_USE conflict.
>>>
>>
>> OK, can we all decide out of this thread, that if any package is
>> enabling critical functionality via IUSE-defaults (or rather, IUSE
>> defaults alone), that this be addressed through package.use.force in
>> profiles OR through removal of the flag?
> 
> No.
> 

Do we need to define "critical functionality" first, then?


>>
>> That at least seems like a positive first step to helping address
>> Michael's concerns, and should generally help all end-users.
>>
> 
> It only helps users who want to manually enable every single feature
> they use with an otherwise-minimal configuration.

Actually the way I see it, it helps support a USE="-*" case by not
disabling something that, although enabled via IUSE-defaults, probably
shouldn't be a flag (or should only be disable'able on certain
platforms or profiles)

Example -- USE="jit" on mozilla packages (prior it to being removed
completely, that is, which started with 51.0).  That flag was
IUSE-default-enabled, but realistically it should have probably been
package.use.force'd except on platforms (ia64,etc) and profiles
(hardened) where it doesn't work or provide what is expected from
users of those profiles.




[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 195 bytes --]

^ permalink raw reply	[flat|nested] 85+ messages in thread

* Re: [gentoo-dev] Guidelines for IUSE defaults
  2017-02-07 17:00       ` Rich Freeman
  2017-02-07 21:07         ` Ian Stakenvicius
@ 2017-02-08  1:24         ` Sam Jorna
  2017-02-08  2:11           ` Rich Freeman
  1 sibling, 1 reply; 85+ messages in thread
From: Sam Jorna @ 2017-02-08  1:24 UTC (permalink / raw
  To: gentoo-dev

[-- Attachment #1: Type: text/plain, Size: 1533 bytes --]

On Tue, Feb 07, 2017 at 12:00:51PM -0500, Rich Freeman wrote:
> On Tue, Feb 7, 2017 at 10:14 AM, Ian Stakenvicius <axs@gentoo.org> wrote:
> > On 07/02/17 08:27 AM, Michael Orlitzky wrote:
> >>
> >> The thread wasn't about discouraging IUSE defaults, rather to decide
> >> when they are appropriate. You cannot omit "pkginternal" from USE_ORDER,
> >> because you will break all of the packages whose defaults are either
> >> critical to the package, or prevent a REQUIRED_USE conflict.
> >>
> >
> > OK, can we all decide out of this thread, that if any package is
> > enabling critical functionality via IUSE-defaults (or rather, IUSE
> > defaults alone), that this be addressed through package.use.force in
> > profiles OR through removal of the flag?
> 
> No.

Can this be justified a little more?

If a package is broken when a given flag is disabled, why is it not 
acceptable to not provide the flag?

If the flag is still provided for the sake of user choice, why is it 
unacceptable to force it through package.use.force allowing the majority 
of users to not need to worry, and letting advanced users break their 
egg in their quest for an omelette?

How is this different (for example, not pointing fingers) from 
dev-lang/python[threads] being forced because it's broken without it 
(therefore critical functionality)?

Disclaimer: not trying to be argumentative, just trying understand the 
arguments. :)

-- 
Sam Jorna (wraeth)
GnuPG Key: D6180C26

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 1006 bytes --]

^ permalink raw reply	[flat|nested] 85+ messages in thread

* Re: [gentoo-dev] Guidelines for IUSE defaults
  2017-02-08  1:24         ` Sam Jorna
@ 2017-02-08  2:11           ` Rich Freeman
  2017-02-08  2:46             ` Sam Jorna
  0 siblings, 1 reply; 85+ messages in thread
From: Rich Freeman @ 2017-02-08  2:11 UTC (permalink / raw
  To: gentoo-dev

On Tue, Feb 7, 2017 at 8:24 PM, Sam Jorna <wraeth@gentoo.org> wrote:
> On Tue, Feb 07, 2017 at 12:00:51PM -0500, Rich Freeman wrote:
>
>> On Tue, Feb 7, 2017 at 10:14 AM, Ian Stakenvicius <axs@gentoo.org> wrote:
>
>> > OK, can we all decide out of this thread, that if any package is
>> > enabling critical functionality via IUSE-defaults (or rather, IUSE
>> > defaults alone), that this be addressed through package.use.force in
>> > profiles OR through removal of the flag?
>>
>> No.
>
> Can this be justified a little more?
>
> If a package is broken when a given flag is disabled, why is it not
> acceptable to not provide the flag?

Perhaps the issue is the definition of "critical functionality."

I may have interpreted it differently than intended.

If setting a flag one way or the other results in a package that has
no useful purpose then I certainly agree that this shouldn't be a flag
in the first place.  When certain combinations result in
non-functional packages these should be caught as well (via
REQUIRED_USE), though in really complex packages with many flags this
may sometimes be difficult to spot.

On the other hand, I believe it should be acceptable to use IUSE
defaults to configure a package to provide an ideal experience for the
typical user of the package, or align with upstream.  Non-upstream
patches that aren't related to integration are pushing it, but merely
providing an upstream-like default experience should be the goal for
anybody who doesn't override this one way or the other.

My brevity wasn't intended to be rude.  I've just posted extensively
enough in this thread and didn't want to just re-iterate my previous
emails, and so so above for clarity.

-- 
Rich


^ permalink raw reply	[flat|nested] 85+ messages in thread

* Re: [gentoo-dev] Guidelines for IUSE defaults
  2017-02-08  2:11           ` Rich Freeman
@ 2017-02-08  2:46             ` Sam Jorna
  0 siblings, 0 replies; 85+ messages in thread
From: Sam Jorna @ 2017-02-08  2:46 UTC (permalink / raw
  To: gentoo-dev

[-- Attachment #1: Type: text/plain, Size: 2244 bytes --]

On Tue, Feb 07, 2017 at 09:11:20PM -0500, Rich Freeman wrote:
> On Tue, Feb 7, 2017 at 8:24 PM, Sam Jorna <wraeth@gentoo.org> wrote:
> > On Tue, Feb 07, 2017 at 12:00:51PM -0500, Rich Freeman wrote:
> >
> >> On Tue, Feb 7, 2017 at 10:14 AM, Ian Stakenvicius <axs@gentoo.org> wrote:
> >
> >> > OK, can we all decide out of this thread, that if any package is
> >> > enabling critical functionality via IUSE-defaults (or rather, IUSE
> >> > defaults alone), that this be addressed through package.use.force in
> >> > profiles OR through removal of the flag?
> >>
> >> No.
> >
> > Can this be justified a little more?
> >
> > If a package is broken when a given flag is disabled, why is it not
> > acceptable to not provide the flag?
> 
> Perhaps the issue is the definition of "critical functionality."
> 
> I may have interpreted it differently than intended.
> 
> If setting a flag one way or the other results in a package that has
> no useful purpose then I certainly agree that this shouldn't be a flag
> in the first place.  When certain combinations result in
> non-functional packages these should be caught as well (via
> REQUIRED_USE), though in really complex packages with many flags this
> may sometimes be difficult to spot.
> 
> On the other hand, I believe it should be acceptable to use IUSE
> defaults to configure a package to provide an ideal experience for the
> typical user of the package, or align with upstream.  Non-upstream
> patches that aren't related to integration are pushing it, but merely
> providing an upstream-like default experience should be the goal for
> anybody who doesn't override this one way or the other.
> 
> My brevity wasn't intended to be rude.  I've just posted extensively
> enough in this thread and didn't want to just re-iterate my previous
> emails, and so so above for clarity.

Ah, this makes sense to me - IUSE defaults being a kind of soft "new to 
Gentoo" or "minimal effort for common usage" setup, REQUIRED_USE to 
prevent bad combinations, and package.use.force for known breakages with 
individual flags.

Thanks for the clarification.

-- 
Sam Jorna (wraeth)
GnuPG Key: D6180C26

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 1006 bytes --]

^ permalink raw reply	[flat|nested] 85+ messages in thread

* Re: [gentoo-dev] Guidelines for IUSE defaults
  2017-02-04 21:05                                     ` William L. Thomson Jr.
  2017-02-04 22:13                                       ` Kent Fredric
@ 2017-02-09  2:46                                       ` Daniel Campbell
  1 sibling, 0 replies; 85+ messages in thread
From: Daniel Campbell @ 2017-02-09  2:46 UTC (permalink / raw
  To: gentoo-dev


[-- Attachment #1.1: Type: text/plain, Size: 2175 bytes --]

On 02/04/2017 01:05 PM, William L. Thomson Jr. wrote:
>[snip]
>> Maintainers of individual packages have the most knowledge about how to
>> best deliver that specific package, but maintainers of profiles have
>> the best understanding of what people want to see.
> 
> Yes has to be a balance. I do not believe package maintainers will always 
> share the vision of the profiles.
> 
> Said another way, if defaults were sane enough, would profiles be necessary?
> 
> Profiles are kind of an extra added benefit to the end user, and those making 
> the profiles. Mostly a benefit for the end user. There isn't much benefit to the 
> package maintainer. I could not really see anything that would give them 
> reason to spend their time on something that would not benefit them.
> 

I can't speak for other maintainers but generally if there's an issue in
an ebuild I maintain, I try to figure out a) the specific problem, and
b) the simplest and most-effective solution. If an ebuild I maintain is
broken on arm64, for example, it's still my responsibility to figure out
how to get it working, assuming the software was written in a way to
allow for that build anyway. Since I don't run anything other than amd64
right now, I have to depend on others to find issues for other arches.
Generally I'll accept any change as long as it meets our ebuild
standards and doesn't exchange one problem for another.

One could argue "of course it benefits you", but I don't do it because
it benefits me. I do it because a) it fixes a problem I probably didn't
know about and b) it's how we make Gentoo better.

I don't have an opinion on profiles. I like the idea of them and respect
the work that goes into them. If maintainers need to make small changes
here or there so their packages work on specific profiles, I don't see
the problem. We do commit+push over typos; a profile is more important
than that, so naturally we should have little issue ironing out support
when the errant wrinkle comes up.
-- 
Daniel Campbell - Gentoo Developer
OpenPGP Key: 0x1EA055D6 @ hkp://keys.gnupg.net
fpr: AE03 9064 AE00 053C 270C  1DE4 6F7A 9091 1EA0 55D6


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 85+ messages in thread

* Re: [gentoo-dev] Guidelines for IUSE defaults
  2017-02-03 22:09                           ` William L. Thomson Jr.
@ 2017-02-09 20:18                             ` Daniel Campbell
  2017-02-09 20:25                               ` Ben Kohler
  0 siblings, 1 reply; 85+ messages in thread
From: Daniel Campbell @ 2017-02-09 20:18 UTC (permalink / raw
  To: gentoo-dev


[-- Attachment #1.1: Type: text/plain, Size: 2189 bytes --]

On 02/03/2017 02:09 PM, William L. Thomson Jr. wrote:
> On Friday, February 3, 2017 2:53:59 PM EST Michael Orlitzky wrote:
>> On 02/03/2017 01:33 PM, Patrick McLean wrote:
>>> We might as well go back to before IUSE defaults then. Part of the
>>> advantage of IUSE defaults is maintainers don't all have to fiddle with
>>> the profiles, everything can be self-contained in the ebuild. This
>>> drastically complicates maintenance, having two locations to track and
>>> change rather than just one.
>>
>> You still retain the benefit for IUSE defaults that actually belong in
>> the base profile, just not for upstream defaults or the ones that you
>> personally prefer.
> 
> That is a side effect, as it is more about the package maintainer choosing the 
> defaults. They are not messing with profiles. That base ends up with it is 
> indirect. Otherwise IUSE default flags would have to be per profile rather than 
> in the package. Which would create more work for package maintainers.
> 
>>> I suspect that there is a small subset
>>> of people interested in this, and perhaps those people could maintain a
>>> "minimal" profile that unsets IUSE defaults.
>>
>> Then every IUSE default gets recorded twice: once when the maintainer
>> puts it in the ebuild, and once when I add it (negated) to the minimal
>> profile. That's a bad design even if we pretend that I can solve the
>> problem of tracking every IUSE change in the tree.
> 
> Sorry if its been suggested, I haven't followed every comment. What about some 
> global env variable that could override all default IUSE. That can set in 
> base, and set what ever minimal IUSE flags that are needed.
> 
I support the idea of a profile-set variable that determines whether or
not IUSE is respected. Minimalists get their systems faster, we get
something that adds to Gentoo's versatility and an additional profile.
Of course, we should be asking the anti-IUSE people if that would be
good enough to make the profiles/systems they want possible.

-- 
Daniel Campbell - Gentoo Developer
OpenPGP Key: 0x1EA055D6 @ hkp://keys.gnupg.net
fpr: AE03 9064 AE00 053C 270C  1DE4 6F7A 9091 1EA0 55D6


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 85+ messages in thread

* Re: [gentoo-dev] Guidelines for IUSE defaults
  2017-02-09 20:18                             ` Daniel Campbell
@ 2017-02-09 20:25                               ` Ben Kohler
  2017-02-09 20:41                                 ` Daniel Campbell
  0 siblings, 1 reply; 85+ messages in thread
From: Ben Kohler @ 2017-02-09 20:25 UTC (permalink / raw
  To: gentoo-dev

[-- Attachment #1: Type: text/plain, Size: 658 bytes --]

On Thu, Feb 9, 2017 at 2:18 PM, Daniel Campbell <zlg@gentoo.org> wrote:
>
> I support the idea of a profile-set variable that determines whether or
> not IUSE is respected. Minimalists get their systems faster, we get
> something that adds to Gentoo's versatility and an additional profile.
> Of course, we should be asking the anti-IUSE people if that would be
> good enough to make the profiles/systems they want possible.
>
> --
> Daniel Campbell - Gentoo Developer
> OpenPGP Key: 0x1EA055D6 @ hkp://keys.gnupg.net
> fpr: AE03 9064 AE00 053C 270C  1DE4 6F7A 9091 1EA0 55D6
>
> Can't this already be accomplished by modifying the USE_ORDER variable?

-Ben

[-- Attachment #2: Type: text/html, Size: 1166 bytes --]

^ permalink raw reply	[flat|nested] 85+ messages in thread

* Re: [gentoo-dev] Guidelines for IUSE defaults
  2017-02-09 20:25                               ` Ben Kohler
@ 2017-02-09 20:41                                 ` Daniel Campbell
  2017-02-09 20:59                                   ` Michael Orlitzky
  0 siblings, 1 reply; 85+ messages in thread
From: Daniel Campbell @ 2017-02-09 20:41 UTC (permalink / raw
  To: gentoo-dev


[-- Attachment #1.1: Type: text/plain, Size: 1543 bytes --]

On 02/09/2017 12:25 PM, Ben Kohler wrote:
> 
> 
> On Thu, Feb 9, 2017 at 2:18 PM, Daniel Campbell <zlg@gentoo.org
> <mailto:zlg@gentoo.org>> wrote:
> 
>     I support the idea of a profile-set variable that determines whether or
>     not IUSE is respected. Minimalists get their systems faster, we get
>     something that adds to Gentoo's versatility and an additional profile.
>     Of course, we should be asking the anti-IUSE people if that would be
>     good enough to make the profiles/systems they want possible.
> 
>     --
>     Daniel Campbell - Gentoo Developer
>     OpenPGP Key: 0x1EA055D6 @ hkp://keys.gnupg.net <http://keys.gnupg.net>
>     fpr: AE03 9064 AE00 053C 270C  1DE4 6F7A 9091 1EA0 55D6
> 
> Can't this already be accomplished by modifying the USE_ORDER variable?
> 
> -Ben
That's a great question. Based on a cursory look at make.conf's manpage,
USE_ORDER without 'pkginternal' will ignore IUSE defaults as intended.

So if we change that from what I assume to be the default (found in the
manpage), a minimalist profile (or system) should be using:

USE_ORDER = "env:pkg:conf:defaults:repo:env.d"

If that gets combined with a profile meant explicitly for this
bare-bones use case, then I don't see why we can't make that happen. It
just requires someone who knows the use case to build the profile.

Thanks for pointing this out!

-- 
Daniel Campbell - Gentoo Developer
OpenPGP Key: 0x1EA055D6 @ hkp://keys.gnupg.net
fpr: AE03 9064 AE00 053C 270C  1DE4 6F7A 9091 1EA0 55D6


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 85+ messages in thread

* Re: [gentoo-dev] Guidelines for IUSE defaults
  2017-02-09 20:41                                 ` Daniel Campbell
@ 2017-02-09 20:59                                   ` Michael Orlitzky
  2017-02-09 21:25                                     ` Daniel Campbell
  0 siblings, 1 reply; 85+ messages in thread
From: Michael Orlitzky @ 2017-02-09 20:59 UTC (permalink / raw
  To: gentoo-dev

On 02/09/2017 03:41 PM, Daniel Campbell wrote:
> That's a great question. Based on a cursory look at make.conf's manpage,
> USE_ORDER without 'pkginternal' will ignore IUSE defaults as intended.
> 

This has already been suggested like five times =P

So long as people insist on using IUSE defaults for flags that are
critical to the package and to satisfy REQUIRED_USE (sprinkled liberally
throughout the tree), this won't work. You'll turn off the defaults that
are critical, too, and throw a wrench into dependency resolution.



^ permalink raw reply	[flat|nested] 85+ messages in thread

* Re: [gentoo-dev] Guidelines for IUSE defaults
  2017-02-09 20:59                                   ` Michael Orlitzky
@ 2017-02-09 21:25                                     ` Daniel Campbell
  0 siblings, 0 replies; 85+ messages in thread
From: Daniel Campbell @ 2017-02-09 21:25 UTC (permalink / raw
  To: gentoo-dev


[-- Attachment #1.1: Type: text/plain, Size: 1814 bytes --]

On 02/09/2017 12:59 PM, Michael Orlitzky wrote:
> On 02/09/2017 03:41 PM, Daniel Campbell wrote:
>> That's a great question. Based on a cursory look at make.conf's manpage,
>> USE_ORDER without 'pkginternal' will ignore IUSE defaults as intended.
>>
> 
> This has already been suggested like five times =P
> 
> So long as people insist on using IUSE defaults for flags that are
> critical to the package and to satisfy REQUIRED_USE (sprinkled liberally
> throughout the tree), this won't work. You'll turn off the defaults that
> are critical, too, and throw a wrench into dependency resolution.
> 
> 

(Just noticed that after I finished reading the thread; d'oh)

Hm, good point. A good number of us are against REQUIRED_USE (I don't
feel strongly either way), and I'm really not sure why we have packages
that won't work at all without specific USE flags. Now that I've read
the entire thread I see someone mentioned different arches may need
different USE flags, but that seems like something that belongs in the
profile, *if* it's a profile problem.

I'd be happy if REQUIRED_USE conflicts were handled in one of two ways:

1. emerge throws it up in your face and suggests a change (defaulting to
whichever IUSE has a +), which can then be handled with etc-update

or

2. emerge prompts you to choose a flag from the ones listed in
REQUIRED_USE, obeys it, then does #1 so you can etc-update after merging.

The downside to this is it's yet another function to add to emerge. I'm
not sure how else we can make use of REQUIRED_USE while simultaneously
allowing people the choice to not care. Could an eclass do this reliably?
-- 
Daniel Campbell - Gentoo Developer
OpenPGP Key: 0x1EA055D6 @ hkp://keys.gnupg.net
fpr: AE03 9064 AE00 053C 270C  1DE4 6F7A 9091 1EA0 55D6


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 85+ messages in thread

end of thread, other threads:[~2017-02-09 21:26 UTC | newest]

Thread overview: 85+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-02-02 14:11 [gentoo-dev] Guidelines for IUSE defaults Michael Orlitzky
2017-02-02 14:56 ` Ian Stakenvicius
2017-02-02 15:49   ` Michael Orlitzky
2017-02-03  8:16     ` [gentoo-dev] " Duncan
2017-02-02 15:06 ` [gentoo-dev] " Kristian Fiskerstrand
2017-02-02 15:11   ` James Le Cuirot
2017-02-02 15:36   ` Michael Orlitzky
2017-02-02 15:51     ` [gentoo-dev] icedtea requiring X libs to build was -> " William L. Thomson Jr.
2017-02-02 15:53       ` Michael Orlitzky
2017-02-02 16:09         ` James Le Cuirot
2017-02-02 16:13           ` Michael Orlitzky
2017-02-02 16:18             ` William L. Thomson Jr.
2017-02-02 16:27               ` Michael Orlitzky
2017-02-02 17:06                 ` William L. Thomson Jr.
2017-02-02 17:18                   ` Michael Orlitzky
2017-02-02 23:07                     ` William L. Thomson Jr.
2017-02-02 16:16         ` William L. Thomson Jr.
2017-02-02 15:52     ` [gentoo-dev] " Rich Freeman
2017-02-02 15:59       ` Michael Orlitzky
2017-02-02 16:08         ` Rich Freeman
2017-02-02 16:25           ` Michael Orlitzky
2017-02-02 18:01             ` Rich Freeman
2017-02-02 20:35               ` james
2017-02-02 21:05                 ` Rich Freeman
2017-02-02 23:28                   ` james
2017-02-03  0:12                     ` Rich Freeman
2017-02-02 21:40                 ` David Seifert
2017-02-02 23:35                   ` james
2017-02-02 23:41                     ` Ian Stakenvicius
2017-02-03  1:21                       ` Michael Orlitzky
2017-02-03 13:17                         ` Ian Stakenvicius
2017-02-02 23:47                 ` Daniel Campbell
2017-02-03  0:01               ` Gordon Pettey
2017-02-04  0:34                 ` Kent Fredric
2017-02-03  1:40               ` Michael Orlitzky
2017-02-03  2:10                 ` Rich Freeman
2017-02-03  3:14                 ` Patrick McLean
2017-02-03 13:21                   ` Ian Stakenvicius
2017-02-03 13:43                     ` Michael Orlitzky
2017-02-03 15:30                       ` Ian Stakenvicius
2017-02-03 19:37                         ` Michael Orlitzky
2017-02-04  0:59                           ` Ian Stakenvicius
2017-02-04  1:07                             ` Patrick McLean
2017-02-04 14:57                               ` Michael Orlitzky
2017-02-04 17:44                                 ` William L. Thomson Jr.
2017-02-04 18:14                                   ` Kent Fredric
2017-02-04 21:05                                     ` William L. Thomson Jr.
2017-02-04 22:13                                       ` Kent Fredric
2017-02-09  2:46                                       ` Daniel Campbell
2017-02-03 18:33                       ` Patrick McLean
2017-02-03 19:53                         ` Michael Orlitzky
2017-02-03 22:09                           ` William L. Thomson Jr.
2017-02-09 20:18                             ` Daniel Campbell
2017-02-09 20:25                               ` Ben Kohler
2017-02-09 20:41                                 ` Daniel Campbell
2017-02-09 20:59                                   ` Michael Orlitzky
2017-02-09 21:25                                     ` Daniel Campbell
2017-02-03  6:12               ` Walter Dnes
2017-02-03 17:39                 ` james
2017-02-03 19:01                   ` james
2017-02-02 15:52     ` James Le Cuirot
2017-02-02 21:17     ` Dirkjan Ochtman
2017-02-02 15:57   ` james
2017-02-02 17:23 ` Walter Dnes
2017-02-02 17:28   ` Michael Orlitzky
2017-02-03  2:00 ` Sam Jorna
2017-02-03  2:06   ` Michael Orlitzky
2017-02-03  2:22     ` Sam Jorna
2017-02-03  2:26       ` Michael Orlitzky
2017-02-03  2:34         ` Sam Jorna
2017-02-03  2:31     ` Rich Freeman
2017-02-03  2:55       ` Michael Orlitzky
2017-02-03  3:16     ` Patrick McLean
2017-02-03  3:37       ` Michael Orlitzky
2017-02-07  7:52 ` Ulrich Mueller
2017-02-07  8:20   ` Kent Fredric
2017-02-07  9:28     ` Michał Górny
2017-02-07 13:27   ` Michael Orlitzky
2017-02-07 15:14     ` Ian Stakenvicius
2017-02-07 15:47       ` Ulrich Mueller
2017-02-07 17:00       ` Rich Freeman
2017-02-07 21:07         ` Ian Stakenvicius
2017-02-08  1:24         ` Sam Jorna
2017-02-08  2:11           ` Rich Freeman
2017-02-08  2:46             ` Sam Jorna

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox