1. 4

    I agree that running a deblobbed kernel is pointless, but not that the RYF certification is harmful.

    If any certification is to encourage free firmware, it must discourage blobs. Unavoidably, it will also “encourage” any nonproductive “solutions” that also satisfy the rule. Be it disabling the device or pretending that the blobs don’t exist (because they come from the factory or exist in a coprocessor). That’s the harmful part. If there could have been fewer loopholes (as the article hints at), that’s valid criticism.

    Also valid criticism is that in the (typical) outcome that the same blobs that exist anyway are just more hidden and unupgradable, you are only getting the harm; not any benefit: The beneficial outcome – firmware in source code form – came in an alternate universe.

    1. 34

      If they really wanted to do something to encourage Free firmware, rather than just whine, then they should adopt a model like the environmental efficiency labelling that’s been mandatory on all consumer electronics sold in the EU for a few decades. These have been so successful that they’ve had to recalibrate the scale recently so that A*** on the old scale is C on the new one. When they were introduced, most products scored around a C or D and the A in the scale was aspirational. Unlike the FSF scheme, this was designed based on solid psychological research. Given two products that were roughly equivalent in other metrics, people preferred the one with the higher rating. This meant that manufacturers competed to produce more energy efficient devices. A simple pass/fail doesn’t do this.

      Imagine if, instead of RYF as a pass/fail thing, they’d created a scale like this:

      • A***: Everything is Free, including RTL for the hardware.
      • A**: All software, including microcode is Free.
      • A*: All software except for CPU microcode is Free.
      • A: All software except CPU microcode is either Free or runs in isolated components with restricted privilege (e.g. firmware for a face-recognition engine that cannot access main memory except via explicit DMA transfers mediated by another device).
      • B: The bootloader, kernel, and all device drivers are Free, firmware is not.
      • C: The bootloader is unlocked and third parties provide a Free OS that supports all of the hardware.
      • D: At least one Free OS exists for this platform, user can boot it, but not all devices have Free drivers.
      • E: Users cannot boot a Free OS on this platform.

      Given this kind of labelling, it’s clear that A*** is where the FSF wants everyone to be, A or A* are quite feasible to do with today’s hardware ecosystem given sufficient economic incentive, most things are somewhere in the B-D range. Each step in this grading in the range A-E is a fairly incremental step that requires negotiating with hardware suppliers to release firmware source code but nothing else.

      Given two identical-seeming laptops / phones / whatever, users would be able to look at the FSF’s grade here and see that one was a B and the other a D, so everything else being equal that’d choose the B (even if they didn’t care about running a Free OS now, knowing that one existed and had a complete set of drivers endorsed by the manufacturer would give them confidence in the longevity of the device and its resale value). Over time, you’d expect to see things classified D or E die out in the market and the competition move to the AA-B range.

      1. 3

        I very much like this idea. I’m ponder now how to best give it some legs.

    1. 3

      I would replace your bash example with:

      function ll {
        llama "$@" 2>&1 | read -r PATH
        if [[ -d "$PATH" ]]; then
          cd "$PATH"

      That temp file is unnecessary and makes me a little nervous. It’d be simpler if llama returned the path on stdout instead of stderr.

      1. 4

        $PATH is already “taken” by the shell and shouldn’t be overwritten. Use $path (or something else) instead.

        1. 1

          Oops, yes. Very much so.

        2. 1

          Stdout used for interactive stuff)

          1. 6

            You should check how fzf (and alternatives) works, they use the terminal (tty) directly for interaction with the user, and still use the stout to return the results.