Degrees of Non-Free Software Tolerance

From ParabolaWiki
Jump to: navigation, search
Fsdg-thermometer.png

The GNU FSDG and the Debian DFSG deal extensively with the degrees of toleration, condonation, and assistance regarding access to and mentions of proprietary software that are acceptable for a free software distribution. Their conclusions differ slightly, but the topics and nomenclature are much the same.

Unfortunately, folks tend to draw these strokes broadly; and there are many over-lapping and conflicting interpretations of terminology such as "require", "facilitate", "recommend", "suggest", "mention", and "restrict". For example, some contend that providing access to non-free software does not necessarily endorse it's use; while others say that merely mentioning the name of a non-free program is akin to recommending it.

This article aims to distinguish each of these terms by placing them on a spectrum of the least to the most tolerant and note some well-known software and devices that fall into the various ranges. Please do add to it if you know of some popular software or device that exemplifies one of these categories.


1 Requires:

Many hardware devices fall into this range because their normal functionality strictly requires proprietary software to work. In fact, most desktop and laptop computers have nonfree boot software (BIOS, UEFI, etc) that runs at boot-time and can not be removed. On some rare models it can be replaced with free software; Doing that on random computers would prevent them from even starting, perhaps irreversibly so.

Some computers with ARM, RISC-V, PowerPC CPUs (Power9, some NXP CPUs) can be used for general-purpose computing and do not require non-free boot software (BIOS, UEFI, etc) to boot or nonfree CPU microcode to stay up to date.

The Windows operating system, for one notable example, sits here; if only for fact that it is known to forcefully install updates to core system components. Updates aside, those very system components being replaced were non-free to begin with. Broadly speaking, any closed-source program or operating system is in this range by it's very nature.

Many free software games all fall into this range; in that typically, most or all of their sounds and graphics are closed-source, perhaps not even re-distributable; and these games simply will not function in any meaningful way without the art blobs.


2 The grey area between 'requires' and 'facilitates':

The LiveCD installers for most GNU/Linux distributions fall somewhere between "requires" and "facilitates"; in that they include non-free programs and drivers on the install media and may even install them onto the target system. Sometimes nothing depends on them and they simply sit dormant; but they are often installed because some hardware device was detected as installed on the system that would have it's functionality enabled or enhanced by the non-free software. These "blobs" may or may not run automatically at boot time by default; but the user is not forced to use them because the system would perform normally if they were removed. In these cases where the system does not perform normally with only free software, that is usually because a particular piece of hardware requires a non-free driver; but the system could be used in that same state if that troublesome hardware is replaceable (and replaced). Otherwise this software would be squarely in the "requires" range.


3 Facilitates:

Facilitation is where there is some software on the system that will, in it's default configuration, directly assist the user in installing non-free software. Examples of this are operating system package managers that have non-free repositories enabled by default and the "Chrome Web Store" that is built into Chromium-based browsers and the Android OS. Many people take the hard-line stance of this; but it should be noted that every web browser that is capable of running Javascript also falls into this range. Web browsers are the most careless and eager of all facilitators; because they will download and execute any script that any web page asks it to, without ever prompting the user or verifying the license of any of them.

People generally do not complain about this as much because JavaScript runs in a sandbox, so they think that the code that runs is isolated from the operating system and hardware; but more and more operating systems and hardware functions are made available in the Browser's JavaScript. Some browsers even have access to USB devices with WebUSB for instance. In addition many privacy and security attacks are possible even with the sandbox. It is for instance possible to do very fine grained browser fingerprinting, to detect hardware components, to track where is the mouse in real time, to take control of the computer by having JavaScript change the content of the copy-paste buffer on a web page with code to copy in a shell. All of these anti-features are possible and mostly invisible to the user, because web browsers so eagerly and blindly obey the instructions sent "on-the-fly" from remote web servers, without giving the user an opportunity to inspect them first. Malicious Javascript is rarely published as Free Software; but even Free Software is non-free in practice, if the user has no opportunity to inspect it before running it. See The WWWorst App Store for more details.

There is some disagreement as to whether or not "facilitates" is of a stronger "non-free" degree than "recommends". The GNU FSDG tends toward the side of facilitation being the more egregious activity; but the Debian DFSG insists that Debian does not ever recommend using non-free software although they may provide access to it at the user's option.

4 Recommends, Suggests, or Mentions:

These are very closely related and may differ only subtly in intention; but this range is where the FSDG's blurry edges fade. A "recommendation" and a "suggestion" would generally conflict with the FSDG, where a mere "mention" would not.

A free system distribution must not steer users towards obtaining any non-free information for practical use, or encourage them to do so.

Recommends:: The primary examples are in the form of documentation or software bundles. A "recommendation" is where the user is explicitly advised, coaxed, or enticed into trying something non-free, perhaps in combination with an otherwise libre program, with or without actively "facilitating" the recommendation. Some package managers relate packages to others as optional "recommendations" or "suggestions", in the form of meta-data; but the distinction in that context usually amounts to no more than the single words: "recommends" and "suggests".

Suggests: A "suggestion" would be something like a program that mentions it's capability to make use of non-free libraries or plug-ins, if they happen to be present on the system; but this is barely distinguishable from merely "allowing" non-free software to run, except for indicating that it is possible. In other words, an otherwise free software operating system could move out of the range of "allows" and into "suggests", simply by mentioning that it supports some specific non-free software use-case. If in addition, there were instructions for how to acquire, install, or use non-free software, that would be more of a "recommendation".

Mentions: However, if the distro merely mentions that it can not prevent non-free software from running, without mentioning any specific examples, or if it mentions specifically that certain non-free programs are intentionally suppressed or replaced, then it is not really recommending or suggesting anything, other than the replacement. Several FSDG distros are libre replacements for another well-known distro, and may mention the shared heritage and how they derive and deviate from it. That is clearly not a "recommendation" of the other. It is a "recommendation" of itself over the other. These would be merely "mentions" of something non-free.

A mere mention of that sort does not necessarily conflict with the FSDG. It could be simply stating a technical or historical fact, regarding the distro's capabilities and limitations, indicating the upstream sources of a liberated program in a liberation script, or something similarly benign. For example, a URL leading to the non-free upstream sources of a liberated program, if given as an active "hot-link", could perhaps be construed as a "suggestion" or invitation. It is literally "steering towards" non-free software; but the same URL, presented only as plain text, with no accompanying suggestion that anyone should investigate it, would not be "steering" in the same sense.


5 Allows:

Although this lies near to one end of the scale being presented here; this is actually the most neutral zone of the spectrum. In this range is found mostly operating systems; especially those that do not necessarily require, nor actively facilitate access to, nor recommend, suggest, or even mention non-free software; but merely can not prevent it from being used. Even the most freedom-respecting FSF-endorsed operating systems lie here.

The main goal of the FSF is to raise awareness of the hazards of depending on (or even tacitly accepting) technology that is under someone else's control and putting your data under someone else's supervision; as well as to convince people that it is in their own best interest to use free software, because it provides that control and supports self-reliance.

The purpose of the GNU FSDG and the Debian DFSG are to provide some guidance for software distributions as to what is in the best interest of computer users.

The goal of GNU and the FSDG-fit operating systems is to provide adequate alternatives to proprietary software and SAAS services; so that there are few compromises involved in being self-reliant and using a completely free (as-in-freedom) operating system. Some other notable groups working toward those goals include the developers of Sandstorm, FreedomBox, and Dyne Dowse. To be clear though, none of these organizations have, as among their stated goals, the total eradication of proprietary software, or preventing it's use. The abilities to use free software along-side, and/or in cooperation with, non-free software, falls under Freedom #0.


6 Restricts:

Practically speaking, it is not possible to prevent a computer from installing non-free software because the definition of free software (the 4 freedoms) requires the user of the computer (that can be an organization or a company) to be able to modify the software.

And if some hardware design were to force all the code that runs on a computer to be linked to code provided by hardware (for instance in a rom) that is under a strong copyleft license, the license requirements would typically only apply when doing things like copying the software, redistributing it, providing services with it (for the AGPLv3 for instance), etc.