I don't consider
freedom binary, for me some things are inherently more free than others. Here I define freedom as the capacity to do a task unhindered. With such definition, it comes to be clear, what I mean by freedom not being binary and existing on an
axis. For instance, repairing a standard PC is easier than the newest model of iPhone. This ease of repairability exists on a gradient, with the PC and iPhone being on different sides. The same applies to the actual binary, software world as well. It is easier to modify a program written in
Python than the same one written in C. In Python there is no need to keep recompiling and seeing the changes, all alterations can be done on the fly.
c:0
I'm not saying all programs should be written in Python, to allow for greater transparency and freedom. It's best to use the right tool for the job. I'd certainly wouldn't want time-sensitive tasks to rely on it. Whatever be the tool, the user
should be able to modify and change the problem to his or her own liking. (Speaking of OSes, there was this
Genera Operating system made with the design philosophy I've outlined in this article). It's not enough to just publish the source code and slap GPLv3, calling it a day. The essential freedoms, require that programs
be modifiable. (Freedom 1). When the program in question is complex, it is no longer feasible to expect the user to patch or extend functionality. Therefor, it is no longer modifiable. For instance, web browsers. Given how bloated and convoluted
web standards are, it is unfair to expect a casual user to be able to modify the web browser. Even though the major 3 browser engines (Chromium, Gecko, Webkit) are "Open Source", they are still written in compiled languages. This means, to modify them, the user needs to change the source code (that requires
understanding in the first place) and compile it. It's a laborious and difficult task, requiring powerful hardware and the push to keep maintaining the changes with the release of new version.
Because freedom exist on an axis, the design of the web browser can make it more or less free. There exist an option to modify the browser within settings. (Having only used Chromium and Gecko, I am only going to cover them). Chromium (as used in Chrome, Brave) is on par with Gecko (Firefox, Librewolf) when it comes to public facing settings, ignoring the unintuitive UX. When it comes to internal settings,
about:config, there is a far different story. Usually there are less internal setting options on Chromium-based browsers than on Gecko-based. What's more, Gecko supports far more freedom in configuring the taskbar. While that is not so feasible with Chromium. And no, it is not fair for the user to know how to configure the browser's appearance using custom.css, since it's a non intuitive, ad-hoc solution for problems ought to be solved by actual decent design. Changing the location of navigation bar buttons in Gecko-derived browsers is as simple as dragging them, while on Chromium, the user has to recompile the browser with the desired outcome.
Given I desire a better product, I chose Gecko based browsers over Chromium, due to the built-in freedom to modify it to my own liking. Thereofor, I am able to mold it to my desire. Yet I do not consider neither of the browsers truly free. There are functions and properties one cannot just change, for instance adding additional functionality to the JavaScript engine, that simply is not possible. There is a tool, with an integrated web browser, able to be fully modified, thereofor fully free. That is, of course, Emacs. Although it is often called a text editor, it is more so an environment. Richard Stallman famously uses GNU/Linux as a bootloader for Emacs, because it has the power to be modified within itself. Since it uses an interpreted language, like Python, but with far more elegance and thought put into it's design:
elisp. I
emphasize, everything within Emacs, can be modified with a programming language. It's not just setting values true or false in browser's options, no, it's actually interacting with the internal functions through a programming language. All functions are internal, there is no abstraction layer. Coupled with the power of internal functions and Lisp, the user is able to extend a simple text editor into a
browser. What's more Emacs is also a
window manager. It is everything people desire it to be, because it was created with extensibility in mind.
That's why I argue it's not enough to just have the source code be
public with a GPL license. One cannot call the software truly free if the user is not able to take control of its development. Web browsers are far too complex for users to be able to control them. Modern operating systems are too complex for users to be able to control them. Compilers are too complex for users to be able to control them. In some messed up way, the modern web is . The existence of CSS proves it.
c:2
CSS states
how a page ought to look. With it, developers can enforce a certain appearance. Although such a tool standardizes the way pages work, it is nothing more than
paternalism in disguise.
A CSS injection extension is a hack to problem that shouldn't exist. The developer decides how the page looks, not the user. A totally opposite approach is taken on the
Lagrange web browser. It is a browser for Gemini and Gopher protocols, which unlike HTTP(S), simple in design. As such, there are no rules dictating the way pages are to be laid out, that's up to the browser. And with the protocol being so simple, the browser opts that power to the user. In Langrage, the prime example of this, the user can modify every bar, every way the page can be displayed. Whether pages ought to be monochrome or filled with vibrant colors, what types of fonts and typefaces to use. Do note, modern web browsers also allow this customization, but it's often clunky an ad-hoc solution. Enforcing a certain typeface, breaks a lot of the more complex sites, while everything operates as it should on the simple web.
I rest my case here. My hope is software freedom comes to be seen not as just license, but also the design of the software itself. As a challenge to the reader, I encourage them to analyze Blender in the fashion I've done so far. Leave the reply in the comments.
Fin.
0