Keeping the majority happy

One of the major problems that I have faced in Gentoo is that whatever I was doing on a larger scale made some people really unhappy. I would even say that the specifics of Gentoo make it even possible for users to get outraged (and obviously, let all the world know how outraged they are) by a few files they don’t like having installed.

This brings the question whether we should struggle to keep all of our users happy, or whether keeping majority of our users satisfied is sufficient.

I don’t believe that it is actually possible to keep everyone happy. It’s a kind of never-ending struggle that consumes valuable time and demands sacrifices. You work on making one user happy, the other one doesn’t like the result. You work towards the second one, third one is unhappy. You satisfy all three of them, now fourth comes outraged with the net result.

The slogan of choice

It is usually impossible to satisfy all the needs with a single solution. That’s the problem Gentoo tries to solve through the slogan of «choice». But let’s not fool ourselves, it’s nowhere near the perfection.

Choice helps, that’s true. But it’s mostly replacing a Swiss Army knife with a bag of tools, and expecting user to choose the one best suited for him. Sometimes it goes even further and the «multi-solutions» that satisfied multiple cases are replaced with the requirement of explicit choice of a single solution.

To be honest, I was never a fan of having too much choice. It’s great whenever it really benefits the community but then there’s the point when the amount of choice starts to have negative impact. It starts making things unnecessarily complex.

One of the resulting problems is making Gentoo harder to use. While I agree that it wasn’t ever suited for users who aren’t ready to deal with various issues, there’s also the «middle grade» of users. Those are the users who want to customize their Gentoo setup but have a limited expert knowledge and time. Those users are most likely to waste their time playing with various configurations and those users are most likely to be affected by various bugs.

Unnecessary complexity means also worse maintainability. The ebuilds end up having more branches, some of the branches used less frequently than the others. In the end, there are variants of the ebuild execution path that are never used and therefore not tested for a long time. While at first developers often test most of reasonable branches, the issues arise with version bumps.

In the end you end up with an ebuild that nobody completely understands, users that are unhappy with breakage and you have no idea how to fix it without making someone unhappy (again).

Keeping users relatively happy

The alternative is the «good enough» solution. Since you can’t keep everyone happy, you go for the second best thing. You keep as many users happy as possible while keeping as few users outraged as possible. If we moved this to the technical matters, this would be keeping the most of user needs possible while optimizing for the common cases.

I believe that this is exactly what Gentoo was designed for, and what keeps it the best choice for many of our users. And I think that we should keep following this path that keeps us between the distributions that keep users behind bars and the distributions that struggle for perfection and where all users know one another.

A good example of this is the late process of removing some of the global USE flags in favor of installing the relevant bits unconditionally. The truth is that the process could be communicated a little better and a bit more fluent but that’s off-topic here.

It should be noted that we are not removing a choice nor taking away freedom. We are making it less privileged, say, more low-level. We are replacing one solution with another. We are not moving back or forth, we’re moving sideways.

The previous solution was good enough for the majority but inflicted a severe head-ache to some users. The new solution is different, yet still good enough for the majority (a little different majority, though) and causes lesser issues to a new minority that dislikes it. And we can improve it further.

This is how I see Gentoo — providing the right tools depending on the scope of the problem and the impact of the solutions. We have USE flags to control problematic parts of software and INSTALL_MASK to let people remove the rest. Then we have USE flags to control important choices and EXTRA_ECONF to let people use the remaining switches.

Sadly, there always be an outraged minority in Gentoo, and the few people who don’t have anything better to do but to complain and expect everyone else to do what they believe is best. But I’d rather focus on finding a good enough solution that helps the majority and doesn’t leave the minority helpless.

If we try to bend to every minority, we’ll end up being unable to attend more important bugs. Moreover, we will likely cause even more of them due to the added complexity and fatigue. In the end, the relatively happy users will become unhappy due to bugs, and the mentioned minority will turn outraged anytime their precious features stops working.

In this regard, minimalism seems to be most advised. Follow the QA standards, think well before implementing users’ requests and avoid providing features you won’t be able to support long-term. This way you’ll get the least of the outrage our minorities have for you. While this is a bit ironic, it may also be a good way to provide a most stable user experience.

15 thoughts on “Keeping the majority happy”

  1. Yeah, flexible generic solutions are usually better than “user-friendly” special case solutions. Unfortunately some people are very reluctant to say no to user requests. Gentoo these days is too much about hand-holding and formal correctness than about getting things done efficiently.

    1. >Gentoo these days is too much about hand-holding and formal correctness than about getting things done efficiently.

      I’ve been telling it these guys for the last huh six months. With no luck, obviously.

  2. Can you please provide some examples of what are you expressing here or writing in plain words the matter? Because it’s not clear at all and looks like a post about angel’s sex :D …

  3. Somehow this reminds me of Niccolò Machiavelli’s The Prince which, I think, states that most important of all things is avoiding being hated.

  4. By the way, the majority of _who_ are you trying to keep happy? Because if you take the majority of Gentoo users, they are those kind of ’emerge world’ freaks. “Baby, lets go to my place, I wanna show you my KDE”. I suppose these dudes are already happy, cuz gentoo makes them more leet than an average guy from linuxforums. Screw them.

    Next, there are gentoo developers, who also seem to be pretty happy about everything, because nobody (well, almost nobody) calls them bad words. Funny thing is that a number of bugs, which exceeded a shitload and almost approached a fuckton doesn’t make them unhappy. I wonder how many issues are not reported, since last time I was going to file a bug report, I found that the mainteiners email address was mainterner-wanted@gentoo.org (if I’m not mistaken), so I decided just to abandon all hope. If you try using gentoo on any architecture besides amd64/x86, you’ll find how painful it is to achieve virtually anything. For example, I couldn’t cross-compile net-dns/bind for arm, because it’s configure script is FUCKING BROKEN. It’s not gentoo devs fault actually and I’m just bitching, but huh…
    Ok, there was a drama caused by dropped support of gtk2 builds of some packages (gtk2 support in those packages was fine, but maintaining an extra use-flag is sooooo haaaaaard), when some devs (I want name that guy from finland here) refused to acknowledge that gtk3 was (and still is!) make of AIDS and FAILURE. So, clearly devs are happy.

    Then, there is me and several other guys like me, who try to do some interesting stuff (like gentoo-controlled asswiper lol) and almost everyday run into trouble, because nobody gives a damn about some creepy things which do not fit into your average desktop with firefox and movies. Forget this, you won’t be of any help anyway here.

    But I’m really interested, Michal, who are you trying to keep happy? Because with your (and not only your) current course you won’t make or keep happy the people you actually need to. And the happy dudes you have won’t get you anywhere.

  5. Gentoo is the premier distro for choice. It’s nothing but choice! Everything from what compiler optimization to use, which version of udev to mask, to how many cores you use when compiling. You are right that makes things harder sometimes!

    However, take away that choice and you have Ubuntu. There’s nothing wrong with Ubuntu, don’t get me wrong; it’s place is removing choice, so that you have ease of use. That’s just not what Gentoo is about. A happy medium? Look at arch.

    Gentoo is fine the way it is. It fit’s perfectly into it’s niche. People have already made it easier and less experimental, and that project is called Sabyon.

    People know what Gentoo is about. If not they find out rather quickly. They can either deal with it, complain, or leave, but they know what they signed up for. Gentoo’s place in the linux ethos is lightning fast native code. Like any endeavor in hotrodding, it’s Hard(tm). If someone doesn’t want to deal with the difficulty and time it takes to build a hot rod, they should buy a prius(Ubuntu), a ready-made hotrod such as a Ford Mustang(Arch) and leave the real hotrodding to the people that enjoy it. Building your own Veryon will never be easy, neither will compiling your OS from text files, optimizing your compiler and dependency tree and dealing with all that this entails.

    My advice is to stop worrying about people that complain. They have _total_ control over how their OS is built with Gentoo. If they can’t handle that, it’s not really your problem, is it?

    1. Arch most certainly is not about *user* choice. Systemd is a required installation on every Arch machine, even if you manage to somehow run your Arch system without it. There’s the AUR and the PKGBUILD system is nice, but that’s as far as the niceties go in Arch. The culture is hiveminded and resistant to anyone who strays off the path they deem best.

      A real in-between would be something akin to Debian, Mint, or perhaps something like Crux. Arch *used* to be about choice, before the reins were handed to phrakture and the devs lost sight of their responsibilities. It’d be nice to get Judd back and bring choice back to that distro. But had that BS not gone down, I wouldn’t be a Gentooer. So there’s a silver lining to that cloud. :)

  6. Don’t know if I agree… going the “majority” way in the FLOSS world is always a risk.
    The majority of users is fine with their Mac, or Windows, and doesn’t care about the sources, about choice, about freedom.
    FLOSS is, and I fear it will always be, for a minority of people… I think it’s more important, for Gentoo, to focus on understanding its own minority, then trying to make a vague “majority” happy. After all, if we cared about what the majority of users would use, we wouldn’t use Gentoo. Accepting this is realism, not elitism.
    Just my 2 cents, no flames intended.

  7. I think it’s more about doing the best you can with what time or resources you have.

    If you’re trying to proceed within your career field, you’ll likely be more inclined to perform better than usual.

    Trying to please everybody is an almost impossible task unless you’re giving away free money. Even then, some won’t be pleased.

    Doing the best your can, or trying to please the majority is likely the better policy. (Simply providing adequate comments within EBuild files and other coding is a really good start!)

  8. Hi,

    I do not know what you are talking about, I even could not figure out if I agree with you or not.

    For example, the removal of systemd USE flag is a total mistake, instead we should have added openrc USE flag. Asking people to know what to mask from their filesystem is, be the best, naive! and no, I do not want systemd resources on my system, should I learn systemd to know what are these resources? The fact that I do not want it on my system also suggest I want to know nothing about it. USE=”-systemd” should be the way to accomplish that.

    The problem with the recent merge / and /usr is an example of something that was not required but for systemd, and for some reason it progress as dictation of a specific vendor.

    And the problem with making systemd stable is another example of bad decision as now some gentoo developer will add packages with systemd support without openrc support and some vise versa, so user will not have a coherent setup.

    There are some aspects that there should be no choice but fork, for example the noise created by gnome is something that I would like to see outside of the Gentoo scope, an overlay of systemd+Gnome, and leave Gentoo core out of commercial dictation. Whoever wants to use Gnome should get his own Gnome/Gentoo system.

    1. USE=systemd would be an official way to break OpenRC setups. Because some people can’t simply understand that OpenRC reuses some of those awful, unacceptable systemd resources than kill puppies by their bare existence.

      I don’t know what you are talking about with the merge. That is a totally separate topic, and systemd didn’t really have much to do with it. Don’t mix two products/ideas just because they come from the same distribution or involve a common group of supporters.

      I don’t see what a stable package has to do with developer behavior. If developer was going to add package without OpenRC support, he would do that with or without systemd stable. And since that usually doesn’t involve any specific deps, he could make that package stable without systemd being stable.

      Last but not least, the amount of noise created by GNOME was small compared to the noise created by users who didn’t have anything useful to say except for expressing their complaints about systemd to the wrong people in the wrong thread.

      1. >OpenRC reuses some of those awful, unacceptable systemd resources

        Which are?

          1. The tmpfiles.d are incompatible as whatever ship with systemd is not compatible with the openrc service. And if it is it should have been installed by both USE=openrc and USE=systemd, I do not see any problem with that.

Leave a Reply to deadhead Cancel reply

Your email address will not be published.