everything wrong with free software

 "free as in speech"

### the-end-of-the-free-software-era---chapter-09---for-the-want-of-a-pixel *originally posted:* sep 2022 fundamentally, putting graphics on the screen is like anything else-- numeric data is moved to a location where it changes the output of the video device. whether the device is in text mode or a graphics mode, you either decide to send character data or data on individual dots. doing this efficiently involves more complex code. to start with, we need a graphical environment to work in. our choices for the most part are svgalib, directfb, weston/wayland and x11. svgalib is ancient, directfb is in a sort of limbo, wayland is the new corporate love-interest and x11 is what im using now-- sometimes you get both x11 and wayland, but the former has been a de facto standard for ages. x11 does not draw or manage windows-- the programs that decorate and move or resize the windows are called window managers. x just displays the rectangles and the contents of each window. suites that incorporate relevant utilities (often including a window manager) are called desktop environments. this may or may not seem complicated, but really they stack up like this: 4. other graphical programs (applications) 3. window manager OR desktop environment + window manager 2. x11 1. operating system one thing to note is that you can swap out options at each of these layers. you can have these things on a different os, with a different graphical environment, running a different wm with various different applications. right now, im editing this with the following: 4. my own python/tkinter editor (works with pypy) 3. dwm 2. x11 (xenocara) 1. openbsd python is a programming language, pypy is a 3rd-party free software version of python, dwm and x11 supply and manage the graphical environment, and pypy uses the tkinter library to tell dwm and x11 what to do with graphical controls and windows. my editor is only 270 lines of code (its gotten a bit longer since this chapter was written) and i wrote only some of them-- this 270 line count is misleading anyway. each line of code in turn calls many lines of the tkinter library which i have never even looked at. with python or pypy, you might use one or two lines to tell tkinter to create a window of a particular size-- then a couple more lines to add a text box. tkinter is a well-established free software library, it is even used to implement pythons standard editor, idle. there are many graphical toolkits that python or pypy can make use of: including qt, tk, gtk2, gtk3, wx and motif. tkinter is the standard python library for dealing with the tk graphical toolkit. on the practical side of things, i do not relish writing code for gtk or qt. qt can be a very nice toolkit, you get a very nice "product" out of it, but it isnt something i personally want to code with if i dont have to-- or pull in as a requirement. gtk is a victim of all kind of corporate political crap i want no part of. in fact my former favourite editor is leafpad. i like its simplicity, i love that you can redirect text to it without saving or opening a file first, i used to have many leafpad windows open. but my own editor will let you pipe text to it like you could with leafpad-- it will also run shell code. leafpad is written in gtk and is a hostage of microsoft github. as i encourage people to boycott github as much as possible (this is no easy task, and deserves its own chapter) i try to find alternatives to github-based projects as well. incredibly, every graphical toolkit I know of (including tk, sadly) depends on github directly or indirectly, due to using either zlib1g (a library related to png compression) or libffi, or both. i have two reasons to switch to pypy (wherever possible) over the standard python offering. one is that microsoft has worked hard to gain influence over the standard cpython, the python foundation itself, and cpython (like leafpad) is hosted on microsoft github. i didnt spend several years migrating away from windows just to have all my computing controlled by microsoft again, and their purchase of github falls perfectly in line with their plans outlined in the halloween documents. leafpad was one of the programs i used the most on my computer-- the fact that i could find a way to replace it is a bit of a triumph, though the struggle is ongoing. to compare the various choices in this example: leafpad: * gtk (gnome)-- gnome is absolutely toxic to free software * hosted on microsoft github-- microsoft is absolutely toxic * needs libffi and/or zlib1g (github) python (standard cpython): * hosted on microsoft github * needs libffi and/or zlib1g (github) tkinter: * tk is not hosted on github (minor win) * sadly needs libffi and/or zlib1g (github) as do all the graphical toolkits I know pypy: * not hosted on github (huge win) * sadly needs libffi and/or zlib1g (github) as does virtually every friendly scripting language i know-- but even if it didnt, i would still be using it with tkinter which does so there are a few lessons here: 1. importantly, it is often possible (and in my opinion, desirable) to move from projects based on github to projects based elsewhere. it is better, as much as reasonably possible-- to be less github/microsoft encumbered than more. i have no interest in supporting an organisation dedicated to destroying free software or exploiting users. 2. even if you move your programming language and toolkit away from github, youre still probably going to need libffi and/or zlib1g (every program/language/toolkit that supports png graphics does). 3. it really sucks that microsoft has libffi (i think some alternatives may exist, but they are rarely used in mainstream projects) and zlib1g (no known alternatives for png support) in their clutches. this of course is a betrayal by these projects. 4. we have many "choices" but so many lead to github that "no matter what you choose, you always get microsoft"-- this is a clear violation of antitrust law, but antitrust law is obviously some kind of fucking unicorn. gnome has been part of several ongoing coups against free software over the years, and constitutes a major threat to software freedom. i have little more desire to support gnome or any of its ilk than i do to support microsoft itself. technically speaking, you are free to make your own choices, as it were. but also technically speaking, choosing monopoly isnt really a choice. i know this paints a bleak picture, and i know that some people understand these problems-- a lot of money is poured into being dismissive of exactly this sort of thing. microsoft loves linux, dont you know-- but they are referring to gnu. love is real, i believe-- but microsoft is not. o.j. loves nicole, oscar loves reeva, microsoft loves linux; if you believe it. what is even funnier than the idea that microsoft "loves" something it spent more than a decade trying to kill is the narcissistic idea that we are obligated to love it back. at most, we are obligated to be fair, not that microsoft has. myself, i think if someone treats you the way that microsoft has treated competition and customer alike for the entirety of its existence, you owe it to yourself to try to get away from them. now that we largely have, microsoft has purchased a single house that thousands or more of us have stupidly decided to all live in, and decided that we should love them-- under their rules and for their benefit, instead of for freedom. but all is fair in love and corporate takeover, i guess? free software cannot be free and also controlled top-down by corporations. focusing too much on the (admittedly vital) license issues while ignoring various other ways that monopolies can exert influence and ultimately control over the work we rely on has destroyed the fsf and turned the free software movement into a neutral "force". no toolkit made for the sake of freedom can be sustained without being forkable. the simplest and most forkable toolkits are the best to use and promote. eventually, tkinter will succumb to microsoft harfbuzz the way all the other toolkits have. it would be ideal to fork tkinter, as well as harfbuzz, but all the larger and more elaborate toolkits will be used (they already are used) to control the projects that rely on them. => chapter-09.png license: 0-clause bsd ``` # 2018, 2019, 2020, 2021, 2022 # # Permission to use, copy, modify, and/or distribute this software for any # purpose with or without fee is hereby granted. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ``` => https://wrongwithfreesw.neocities.org